Implementa la pila de SOME/IP

La pila de SOME/IP administra la lógica de transporte de bajo nivel de SOME/IP a través de una interfaz del lenguaje de definición de la interfaz de Android (AIDL). Esta pila envía y recibe eventos SOME/IP y llamadas de procedimiento remoto (RPC). En este documento, se describen los siguientes conceptos:

  • Implementación de referencia: SDV proporciona una implementación de muestra de referencia que no es de producción para una pila de SOME/IP.

  • API de Binder: La interfaz ISomeIpStack define métodos para interactuar con una instancia de la pila de SOME/IP.

  • SELinux: Una muestra de configuración de SELinux para la pila de referencia habilita la comunicación del binder y el acceso granular al sistema de archivos.

Si bien esta pila lee el formato de cable SOME/IP, deja la carga útil como blobs binarios opacos y la reenvía al agente de SOME/IP.

El estándar de SOME/IP no proporciona ninguna definición de la pila ni de la capa de la API de la pila. SDV proporciona una API de AIDL que opera dentro de las definiciones conocidas del estándar y requiere una cantidad mínima de código para adaptar las pilas existentes.

Esta API te permite seleccionar diferentes implementaciones de la pila y simplifica la integración de la pila con otros componentes del sistema.

Implementación de referencia

El SDV proporciona una implementación de muestra de referencia que no es de producción para una pila de SOME/IP y consta de un wrapper delgado sobre la biblioteca de código abierto COVESA vsomeip. El sistema implementa la pila de referencia solo en los destinos sdv_core_cf y sdv_core_arm64, y init.rc la inicia en la VM con CID=3.

on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
    start sdv_someip_stack_agent

Define la configuración de implementación de producción para la pila definida por el OEM. Para obtener más información, consulta Integración de SOME/IP con SDV.

Configuración

La pila de referencia declara una configuración para la biblioteca de vSomeIP. Consulta Estructura del archivo de configuración para obtener una descripción de la estructura de configuración. Como parte de la configuración, especificamos parámetros de SD de SOME/IP, como una dirección de multidifusión y el puerto que usa la pila.

API de Binder

La interfaz ISomeIpStack se declara en core_services/some_ip/aidl/google/sdv/someip. La interfaz ISomeIpStack define métodos para interactuar con una instancia de la pila SOME/IP y proporciona cualidades esenciales para estos elementos.

Disponibilidad del servicio

  • register_availability_callback Registra una devolución de llamada para los cambios en la disponibilidad del servicio.

  • monitor_service Indica a la pila que supervise la disponibilidad de un servicio específico.

  • unregister_availability_callback Cancela el registro de la devolución de llamada de disponibilidad.

  • on_sdv_service_availability Indica un cambio en la disponibilidad del servicio de SDV.

Llamadas de procedimiento remoto (RPC)

Puedes enviar una solicitud de RPC con lo siguiente:

  • rpc_transact para esperar una respuesta
  • rpc_oneway para no esperar una respuesta

Para el control de solicitudes de RPC:

  • register_rpc_request_callback Registra una devolución de llamada para las solicitudes de RPC entrantes.

  • unregister_rpc_request_callback Anula el registro de la devolución de llamada de la solicitud de RPC.

Notificación de evento

  • register_event_notification_callback Registra una devolución de llamada para las notificaciones de eventos suscritos.

  • unregister_event_notification_callback Anula el registro de la devolución de llamada de notificación de eventos.

  • on_sdv_topic_availability Indica un cambio en la disponibilidad del tema de SDV.

  • subscribe Se suscribe a un evento específico de un grupo de eventos.

  • unsubscribe Cancela la suscripción a un evento específico.

  • publish Publica un evento con una carga útil determinada.

SELinux

La carpeta device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ contiene una muestra de configuración de SELinux para la pila de referencia:

  • sdv_someip_stack_default.te define el tipo sdv_someip_stack_default y lo asigna a atributos y contextos.

  • file_contexts asigna carpetas de datos y binarios de mapas a contextos apropiados.

La configuración permite la comunicación de Binder entre la pila y el agente, lo que permite el acceso a las calidades de redes y el acceso detallado al sistema de archivos del dispositivo.