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
ISomeIpStackdefinisce 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_callbackRegistra un callback per le modifiche alla disponibilità del servizio.monitor_serviceIndica allo stack di monitorare la disponibilità di un servizio specifico.unregister_availability_callbackAnnulla la registrazione del callback di disponibilità.on_sdv_service_availabilityIndica una modifica alla disponibilità del servizio SDV.
Chiamate di procedura remota (RPC)
Puoi inviare una richiesta RPC con:
rpc_transactper attendere una rispostarpc_onewayper non attendere una risposta
Per la gestione delle richieste RPC:
register_rpc_request_callbackRegistra un callback per le richieste RPC in entrata.unregister_rpc_request_callbackAnnulla la registrazione del callback della richiesta RPC.
Notifica di un evento
register_event_notification_callbackRegistra un callback per le notifiche degli eventi a cui è stato effettuato l'abbonamento.unregister_event_notification_callbackAnnulla la registrazione del callback di notifica dell'evento.on_sdv_topic_availabilityIndica una modifica alla disponibilità dell'argomento SDV.subscribeSi iscrive a un evento specifico di un gruppo di eventi.unsubscribeAnnulla l'iscrizione a un evento specifico.publishPubblica 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.tedefinisce il tiposdv_someip_stack_defaulte lo mappa ad attributi e contesti.file_contextsmappa 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.