Implementa lo stack SOME/IP

Lo stack SOME/IP gestisce la logica di trasporto SOME/IP di basso livello tramite un'interfaccia Android Interface Definition Language (AIDL). Questo stack invia e riceve eventi SOME/IP e chiamate di procedura remota (RPC). Questo documento descrive i seguenti concetti:

  • Implementazione di riferimento:SDV fornisce un'implementazione di esempio di riferimento non di produzione per uno stack SOME/IP.

  • API Binder:l'interfaccia ISomeIpStack definisce i metodi per interagire con un'istanza dello stack SOME/IP.

  • SELinux:una configurazione SELinux di esempio per lo stack di riferimento consente la comunicazione binder e l'accesso granulare al file system.

Sebbene questo stack legga il formato di trasmissione SOME/IP, lascia il payload come blob binari opachi e lo inoltra al broker SOME/IP.

Lo standard SOME/IP non fornisce alcuna definizione dello stack o del livello API dello stack. SDV fornisce un'API AIDL che opera all'interno delle definizioni familiari dello standard e richiede una quantità minima di codice per adattare gli stack esistenti.

Questa API consente di selezionare diverse implementazioni dello stack e semplifica l'integrazione dello stack con altri componenti del sistema.

Implementazione dei riferimenti

SDV fornisce un'implementazione di riferimento non di produzione per uno stack SOME/IP e consiste in un wrapper sottile sopra la libreria open source COVESA vsomeip. Il sistema esegue il deployment dello stack di riferimento solo sulle destinazioni sdv_core_cf e sdv_core_arm64 e lo avvia sulla VM con init.rc.CID=3

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

Definisci la configurazione del deployment di produzione per lo stack definito dall'OEM. Per scoprire di più, consulta Integrare SOME/IP con SDV.

Configurazione

Lo stack di riferimento dichiara una configurazione per la libreria vSomeIP. Consulta Struttura del file di configurazione per una descrizione della struttura di configurazione. Nell'ambito della configurazione, specifichiamo i parametri SOME/IP SD, ad esempio un indirizzo multicast e la porta utilizzata dallo stack.

API Binder

L'interfaccia ISomeIpStack è dichiarata in core_services/some_ip/aidl/google/sdv/someip. L'interfaccia ISomeIpStack definisce i metodi per interagire con un'istanza dello stack SOME/IP e fornisce le qualità essenziali per questi elementi.

Disponibilità del servizio

  • register_availability_callback Registra un callback per le modifiche alla disponibilità del servizio.

  • monitor_service Indica allo stack di monitorare la disponibilità di un servizio specifico.

  • unregister_availability_callback Annulla la registrazione del callback di disponibilità.

  • on_sdv_service_availability Indica una modifica alla disponibilità del servizio SDV.

Chiamate di procedura remota (RPC)

Puoi inviare una richiesta RPC con:

  • rpc_transact per attendere una risposta
  • rpc_oneway per non attendere una risposta

Per la gestione delle richieste RPC:

  • register_rpc_request_callback Registra un callback per le richieste RPC in entrata.

  • unregister_rpc_request_callback Annulla la registrazione del callback della richiesta RPC.

Notifica di un evento

  • register_event_notification_callback Registra un callback per le notifiche degli eventi a cui è stato effettuato l'abbonamento.

  • unregister_event_notification_callback Annulla la registrazione del callback di notifica dell'evento.

  • on_sdv_topic_availability Indica una modifica alla disponibilità dell'argomento SDV.

  • subscribe Si iscrive a un evento specifico di un gruppo di eventi.

  • unsubscribe Annulla l'iscrizione a un evento specifico.

  • publish Pubblica un evento con un determinato payload.

SELinux

La cartella device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ contiene una configurazione SELinux di esempio per lo stack di riferimento:

  • sdv_someip_stack_default.te definisce il tipo sdv_someip_stack_default e lo mappa ad attributi e contesti.

  • file_contexts mappa le cartelle binarie e di dati di Maps nei contesti appropriati.

La configurazione consente la comunicazione Binder tra lo stack e il broker, consentendo l'accesso alle qualità di rete e l'accesso granulare al file system del dispositivo.