Der SOME/IP-Stack verwaltet die Low-Level-SOME/IP-Transportlogik über eine Android Interface Definition Language-Schnittstelle (AIDL). Dieser Stack sendet und empfängt SOME/IP-Ereignisse und Remoteprozeduraufrufe (RPCs). In diesem Dokument werden die folgenden Konzepte beschrieben:
Referenzimplementierung:SDV bietet eine Referenzimplementierung für einen SOME/IP-Stack, die nicht für die Produktion vorgesehen ist.
Binder API:Die
ISomeIpStack-Schnittstelle definiert Methoden für die Interaktion mit einer SOME/IP-Stack-Instanz.SELinux:Eine Beispielkonfiguration für SELinux für den Referenz-Stack ermöglicht die Binder-Kommunikation und den detaillierten Dateisystemzugriff.
Dieser Stack liest zwar das SOME/IP-Drahtformat, lässt die Nutzlast jedoch als undurchsichtige binäre Blobs und leitet sie an den SOME/IP-Broker weiter.
Der SOME/IP-Standard enthält keine Definition des Stacks oder der Stack-API-Ebene. SDV bietet eine AIDL-API, die innerhalb der bekannten Definitionen des Standards funktioniert und nur minimalen Code erfordert, um bestehende Stacks anzupassen.
Mit dieser API können Sie verschiedene Implementierungen des Stacks auswählen und die Integration des Stacks in andere Komponenten im System vereinfachen.
Referenzimplementierung
SDV bietet eine Referenzbeispielimplementierung für einen SOME/IP-Stack, die nicht für die Produktion vorgesehen ist. Sie besteht aus einem dünnen Wrapper über der Open-Source-Bibliothek COVESA vsomeip. Das System stellt den Referenzstack nur auf den Zielen sdv_core_cf und sdv_core_arm64 bereit und init.rc startet ihn auf der VM mit CID=3.
on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
start sdv_someip_stack_agent
Definieren Sie die Konfiguration für die Produktionsbereitstellung für Ihren OEM-definierten Stack. Weitere Informationen finden Sie unter SOME/IP in SDV einbinden.
Konfiguration
Der Referenz-Stack deklariert eine Konfiguration für die vSomeIP-Bibliothek. Eine Beschreibung der Konfigurationsstruktur finden Sie unter Struktur der Konfigurationsdatei. Im Rahmen der Konfiguration geben wir SOME/IP-SD-Parameter an, z. B. eine Multicast-Adresse und den vom Stack verwendeten Port.
Binder API
Die Schnittstelle ISomeIpStack wird in core_services/some_ip/aidl/google/sdv/someip deklariert. Die ISomeIpStack-Schnittstelle definiert Methoden für die Interaktion mit einer SOME/IP-Stack-Instanz und bietet wichtige Eigenschaften für diese Elemente.
Dienstverfügbarkeit
register_availability_callbackRegistriert einen Callback für Änderungen der Dienstverfügbarkeit.monitor_serviceWeist den Stack an, die Verfügbarkeit eines bestimmten Dienstes zu überwachen.unregister_availability_callbackhebt die Registrierung des Verfügbarkeits-Callbacks auf.on_sdv_service_availabilityGibt eine Änderung der Verfügbarkeit des SDV-Dienstes an.
Remoteprozeduraufrufe (RPC)
Sie können eine RPC-Anfrage mit folgenden Methoden senden:
rpc_transact, um auf eine Antwort zu wartenrpc_onewaynicht auf eine Antwort warten
Für die Verarbeitung von RPC-Anfragen:
register_rpc_request_callbackRegistriert einen Callback für eingehende RPC-Anfragen.unregister_rpc_request_callbackhebt die Registrierung des RPC-Anfrage-Callbacks auf.
Ereignisbenachrichtigung
register_event_notification_callbackRegistriert einen Callback für abonnierte Ereignisbenachrichtigungen.unregister_event_notification_callbackHebt die Registrierung des Rückrufs für Ereignisbenachrichtigungen auf.on_sdv_topic_availabilityGibt eine Änderung der Verfügbarkeit von SDV-Themen an.subscribeAbonniert ein bestimmtes Ereignis aus einer Ereignisgruppe.unsubscribeMeldet sich von einem bestimmten Ereignis ab.publishVeröffentlicht ein Ereignis mit einer bestimmten Nutzlast.
SELinux
Der Ordner device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ enthält eine Beispielkonfiguration für SELinux für den Referenz-Stack:
sdv_someip_stack_default.tedefiniert den Typsdv_someip_stack_defaultund ordnet ihn Attributen und Kontexten zu.file_contextsordnet Binär- und Datenordner den entsprechenden Kontexten zu.
Die Konfiguration ermöglicht die Binder-Kommunikation zwischen dem Stack und dem Broker und damit den Zugriff auf Netzwerkqualitäten und den granularen Zugriff auf das Dateisystem des Geräts.