Las muestras de código de los servicios de SDV Core en /system/software_defined_vehicle/samples
te permiten comenzar a compilar tus servicios. Cada muestra contiene un archivo README
que describe el caso de uso.
Descripción general del directorio de ejemplo
En la siguiente tabla, se enumeran los directorios de muestra de referencia en
system/software_defined_vehicle/samples y sus guías de documentación
correspondientes:
| Directorio de muestra | Descripción | Guía de documentación |
|---|---|---|
system/software_defined_vehicle/samples/quickstart |
Muestra de paquete de servicio de Rust de extremo a extremo que demuestra la publicación,
la suscripción y la RPC de VSIDL entre los paquetes Manager y
Monitor.
|
Inicio rápido: Crea y ejecuta paquetes de servicios de SDV |
system/software_defined_vehicle/samples/vsidl |
Consulta el catálogo de VSIDL, las definiciones de protobuf y los patrones de implementación de paquetes de servicios. | Implementa la lógica empresarial |
system/software_defined_vehicle/samples/concal |
Muestra de cliente para leer y actualizar los parámetros de configuración y calibración del vehículo. | Configuración y calibración |
system/software_defined_vehicle/samples/health |
Muestras de supervisión de la calidad de servicio (QoS) y del paquete de servicios con supervisión de estado. | Supervisión del estado |
system/software_defined_vehicle/samples/oem_partition_update_client |
Servicio de muestra que usa la caja sdv_oem_updater para activar
y revertir las actualizaciones de la partición /oem_ab.
|
Actualizaciones de particiones AB de OEM |
system/software_defined_vehicle/samples/sdv_gateway |
Apps de ejemplo de IVI nativas y de Java (NativeSdvGatewayTestApp y SdvCarMonitorTestApp) que se comunican con los servicios de SDV Core a través de la puerta de enlace de SDV
|
Usa la puerta de enlace de SDV en el IVI |
system/software_defined_vehicle/samples/telemetry |
Muestras de simulador y fuente de datos de telemetría integrada en el dispositivo. | Fuentes de datos |
Usa la API de Logging
Para obtener más información sobre las instrucciones proporcionadas, consulta los siguientes recursos:
Muestra de registro básica
logging.cpp presenta la escritura en los búferes main, system y radio.
Para leer una descripción breve de los búferes de registro disponibles, consulta Cómo ver los búferes de registro alternativos.
Para ejecutar la muestra sin los registros condicionales, como
ALOGI_IF, haz lo siguiente:logging_sdv_samplePara ejecutar la muestra y, luego, imprimir los registros condicionales, como
ALOGI_IF, haz lo siguiente:LOGIF=1 logging_sdv_sample
Muestra de registro estructurado
Archivo de muestra: structured_logging.cpp
Para ejecutar la muestra, que escribe registros en el búfer de registros
events, haz lo siguiente:structured_logging_sdv_sample
Los búferes de registro event, security y stats contienen datos estructurados en lugar de texto libre.
Los datos estructurados se registran con la API de lista de eventos, que siempre se registra con
la prioridad INFO y el ID de etiqueta numérico.
Se puede definir un archivo .logtags con un atributo logtags en Android.bp..
Cuando se proporciona, logcat lo usa para derivar el nombre de la etiqueta del ID de etiqueta numérico. Luego, el nombre de la etiqueta se puede usar para filtrar los registros estructurados. Para obtener detalles y
una descripción del formato de archivo, consulta el comentario en el archivo
logcat event.logtags.
Durante el proceso de compilación, todos los archivos logtags se combinan y se colocan en el archivo /system/etc/event-log-tags de la imagen del sistema Android.
Compila una muestra de filtrado de registros de tiempo
Archivo de muestra: compile_time_log_filtering.cpp
Esta muestra contiene macros que puedes ajustar para quitar algunos registros del ejecutable. Consulta el código fuente para obtener más detalles.
Muestra de filtrado de registros: log_filtering.cpp
Para ejecutar la muestra, establece la prioridad de registro mínima en
WARN:LOGLEVEL=WARN log_filtering_sdv_sample
El filtrado de registros se ve afectado por las propiedades del sistema. Para todos los registros con
log.tag.<tag>persist.log.tag.<tag>
Para todos los registros del sistema:
log.tagpersist.log.tag
Para seleccionar el nivel de registro elegido, que se verifica en orden, cada valor se puede
establecer en V, D, I, W o E.
El nivel de registro efectivo es el nivel establecido en la primera propiedad del sistema que tiene
un valor, que puede ser inferior o superior al nivel de registro establecido por la app con una
llamada a __android_log_set_minimum_priority. Cuando no se establece ninguna de las propiedades, se aplica el nivel configurado con __android_log_set_minimum_priority.
Para obtener más información, consulta la descripción general del sistema de Logging.
Ejecuta la muestra y configura la etiqueta de registro predeterminada como
example_tag:LOGTAG=example_tag log_filtering_sdv_sample
La muestra también contiene una definición de macro LOG_TAG marcada como comentario que puedes usar para establecer la etiqueta de registro de todos los mensajes de registro. La etiqueta establecida de esta manera
anula la etiqueta establecida en el entorno de ejecución con __android_log_set_default_tag.
Si no se define la macro LOG_TAG y la app no llama a __android_log_set_default_tag, la etiqueta predeterminada es el resultado de getprogname(). Por ejemplo, el nombre del ejecutable.