Convenciones de nomenclatura de paquetes de servicios

Los nombres de los paquetes de servicios se definen en una jerarquía.

  • Cada VM (identificada por un nombre de VM) es una sola implementación del sistema operativo del perfil de SDV Core.

  • Cada paquete (identificado por un nombre de paquete) puede contener varios paquetes de servicios.

  • Cada paquete de servicio (identificado por un nombre de paquete de servicio) se puede instanciar varias veces en la misma VM.

  • Cada instancia de paquete de servicios se identifica con un nombre de instancia de paquete de servicios asignado en el tiempo de carga.

Nombre de la VM de SDV

El nombre de la VM es un identificador de nombre único adjunto a cada implementación de un perfil de SDV Core, como se especifica en Vehicle VM Config (vvmconfig). El nombre de la VM se usa en la nomenclatura como una separación lógica de los servicios a lo largo de los límites de la VM en un vehículo. Los siguientes son algunos ejemplos:

  • cdc
  • mechatronics
  • pcu
  • telematics-unit

Se aplican estas restricciones de nomenclatura.

  • El nombre de la VM debe comenzar con una letra. [a-z]
  • El nombre de la VM no debe terminar con un guion
  • El nombre de la VM no debe superar los 31 caracteres.
  • Todos los caracteres deben ser alfanuméricos en minúscula o un guion [a-z0-9\-]
  • Los guiones en el nombre no deben aparecer de forma consecutiva más de una vez.

Se verifica que el nombre de la VM sea único durante el tiempo de compilación (análisis estático) y el arranque del sistema cuando se carga vvmconfig.

Se produce un error a nivel del arranque cuando falla la validación durante el arranque.

Nombre del paquete del SDV

Al igual que en Android estándar, el nombre del paquete de SDV identifica de forma única un paquete implementado en el sistema. Se debe proporcionar un APEX único para cada nombre de paquete. Por ejemplo:

  • com.android.sdv.datatunnel
  • com.android.sdv.sample.datatunnel
  • com.yourcompany.sdv.adas

Se aplican las siguientes restricciones:

  • Todos los APEX de SDV propiedad de socios deben tener el prefijo com.<companyname>.sdv. (com.android.sdv. está reservado para los APEX de SDV propiedad de Google).
  • Todos los caracteres deben ser alfanuméricos o un guion bajo, [a-z0-9_].
  • El nombre del paquete debe contener al menos cuatro segmentos delimitados por puntos.
  • El nombre del paquete no debe terminar con un punto.
  • El nombre del paquete no debe superar los 127 caracteres.
  • Cada segmento debe comenzar con una letra.
  • Ningún segmento puede tener guiones bajos consecutivos, __.
  • Ningún segmento puede terminar con un guion bajo, _.
  • Los segmentos no deben estar vacíos (no deben haber períodos consecutivos).

Nombre del paquete de servicios

Al igual que en Android estándar, cada paquete de servicio tiene un nombre legible, que se incluye en el espacio de nombres del nombre del paquete al que pertenece. Por ejemplo:

  • SomeService
  • ImportantService

Se aplican las siguientes restricciones de nomenclatura:

  • El nombre del paquete de servicios DEBE comenzar con una letra mayúscula
  • El nombre del paquete de servicios NO DEBE estar vacío
  • El nombre del paquete de servicios NO DEBE superar los 47 caracteres.
  • El nombre del paquete de servicio NO DEBE tener guiones bajos consecutivos, __
  • El nombre del paquete de servicio NO DEBE comenzar ni terminar con un guion bajo, _
  • Todos los caracteres DEBEN ser alfanuméricos o un guion bajo, [A-Za-z0-9_]

Nombre de la instancia del paquete de servicios

A diferencia de las aplicaciones estándar para Android, los paquetes de servicios en la SDV de AAOS se pueden instalar y cargar varias veces en la misma VM. Como resultado, el mismo paquete de servicios puede tener varias instancias en ejecución dentro de la misma VM de SDV de AAOS. A estas instancias se les asigna un nombre de instancia del paquete de servicio legible por humanos. Por ejemplo:

  • front-left
  • front-right
  • main
  • client
  • subscriber

Se aplican las siguientes restricciones:

  • El nombre de la instancia debe cumplir con los siguientes requisitos:

    • Comienza con una letra [a-z]
    • No debe terminar con un guion.
    • No debe superar los 47 caracteres.
    • Ser único en la misma VM para el mismo servicio
  • Todos los caracteres deben ser alfanuméricos en minúscula o un guion [a-z0-9\-]

  • Los guiones no deben aparecer de forma consecutiva.

  • Cada instancia de servicio debe tener un nombre de instancia único (proporcionado o creado cuando se inicia el servicio).

Nombre de instancia del paquete de servicio completamente calificado (FQIN)

El nombre de la VM del SDV, el nombre del paquete, el nombre del paquete de servicio y el nombre de la instancia del paquete de servicio se combinan en un nombre de instancia del paquete de servicio completamente calificado (FQIN). Identifica de forma única una instancia de paquete de servicios en todo el vehículo.

Estos son algunos ejemplos:

  • cdc:com.android.sdv.datatunnel.SomeService/instance1
  • cdc:com.android.sdv.datatunnel.SomeService/instance2
  • mechatronics:com.yourcompany.sdv.adas.TirePressure/front-left
  • mechatronics:com.yourcompany.sdv.adas.TirePressure/front-right
  • mechatronics:com.yourcompany.sdv.adas.TirePressure/rear-right
  • pcu:com.android.sdv.cluster.InfoProvider/acceleration

Los paquetes de servicios en diferentes paquetes pueden tener el mismo nombre. Por ejemplo, estos dos paquetes de servicios (identificados por sus respectivos FQIN), implementados en la misma VM de SDV (mechatronics), tienen el mismo nombre de paquete de servicios TirePressure:

  • mechatronics:com.yourcompany1.sdv.adas.TirePressure/default
  • mechatronics:com.yourcompany2.sdv.adas.TirePressure/default

En este ejemplo, no se produce ninguna colisión de nombres porque los dos paquetes de servicios están en paquetes diferentes (uno en com.yourcompany1.sdv.adas y el otro en com.yourcompany2.sdv.adas).

Nombre del tema

Los temas se identifican con cadenas que son únicas en todo el vehículo para un tipo de mensaje determinado.

Ejemplos de nombres de temas:

  • left-tire
  • front-window
  • engine-coolant-temp

Restricciones:

  • Debe ser alfanumérico o un guion, [a-z0-9\-].
  • Debe comenzar con una letra.
  • No debe superar los 127 caracteres.

Nombre del canal

Los canales se identifican con una cadena de nombre.

Ejemplos de nombres de canales:

  • main-control
  • high-priority
  • background

Restricciones:

  • Debe ser alfanumérico o un guion, [a-z0-9\-].
  • Debe comenzar con una letra.
  • No debe superar los 127 caracteres.

Nombre de la unidad de servicio

Los desarrolladores de paquetes de servicios interactúan principalmente con temas y canales. Los nombres de las unidades de servicio son un detalle de implementación subyacente y se encuentran principalmente cuando se usan herramientas de depuración como dumpsys.

Las unidades de servicio, cuando se registran en el descubrimiento de servicios de SDV, deben proporcionar un nombre de unidad de servicio. Este nombre de unidad de servicio está disponible en el momento del descubrimiento de servicios. En estos ejemplos, se muestran nombres de unidades de servicio con FQIN:

  • ( cdc:com.android.sdv.adas.Service1/default-inst , tp-provider )
  • ( cdc:com.yourcompany.sdv.adas.TirePressure/instance1 , tp-provider-1 )
  • ( mech:com.yourcompany.sdv.adas.TirePressure/instance2 , tp-instance )

Nombres de tipos de unidades

Los nombres de los tipos de unidades son iguales a los nombres de los tipos de Protobuf (completamente calificados). Por ejemplo:

  • com.android.sdv.datatunnel.IComponentHandler
  • com.android.sdv.datatunnel.IComponentHandler
  • com.yourcompany.sdv.adas.TirePressure
  • com.android.sdv.cluster.IWheelInfoCallback
  • com.android.sdv.cluster.ISeatAlignmentCallback

Resumen

Los requisitos de nomenclatura se resumen en la siguiente tabla:

Elemento Límite Caracteres permitidos Tipo de caso
FQIN 256 caracteres Se compone del nombre de la VM, el nombre del paquete, el nombre del paquete de servicio y el nombre de la instancia del paquete de servicio. Minúscula
Nombre de la VM de SDV 30 caracteres
  • Debe comenzar con una letra a-z.
  • No debe terminar con un guion (-).
  • Los caracteres deben ser alfanuméricos en minúscula o un guion (a-z0-9\-).
  • Los guiones no deben aparecer de forma consecutiva más de una vez.
Minúscula
Nombre del paquete del SDV 127 caracteres
  • Debe contener al menos cuatro segmentos.
  • Debe comenzar con una letra.
  • Ningún segmento puede contener guiones bajos consecutivos.
  • Ningún segmento puede terminar con un guion bajo.
  • Los segmentos no pueden estar vacíos.
  • Los caracteres deben estar en minúscula o ser un guion (a-z0-9\-).
Minúscula
Nombre del paquete de servicios 30 caracteres
  • Debe comenzar con una letra mayúscula.
  • No debe estar vacío.
  • No debe contener guiones bajos consecutivos (__).
  • No debe comenzar ni terminar con un guion bajo (_).
  • Los caracteres deben ser alfanuméricos o guiones bajos (A-Za-z0-9_).
Combinación de mayúsculas y minúsculas
Nombre de la instancia del paquete de servicios 48 caracteres
  • Debe comenzar con una letra (a-z).
  • No debe terminar con un guion (-).
  • Debe ser único en la misma VM para el mismo servicio.
  • Los caracteres deben estar en minúscula o ser un guion (a-z0-9\-).
  • Los guiones no deben aparecer de forma consecutiva.
Minúscula
Nombre del tema 127 caracteres
  • Debe comenzar con una letra (a-z).
  • Los caracteres deben ser alfanuméricos en minúscula o guiones (a-z0-9\-).
Minúscula
Nombre del canal 127 caracteres
  • Debe comenzar con una letra (a-z).
  • Los caracteres deben ser alfanuméricos en minúscula o guiones (a-z0-9\-).
Minúscula
Nombre de la unidad de servicio 48 caracteres
  • Debe comenzar con una letra (a-z).
  • No debe terminar con un guion (-).
  • Los caracteres deben estar en minúscula o ser un guion (a-z0-9\-).
  • Los guiones no deben aparecer de forma consecutiva más de una vez.
Minúscula