Stos SOME/IP zarządza logiką transportu SOME/IP niskiego poziomu za pomocą interfejsu języka definiowania interfejsu Androida (AIDL). Ten stos wysyła i odbiera zdarzenia SOME/IP oraz zdalne wywołania procedur (RPC). W tym dokumencie opisujemy te pojęcia:
Implementacja referencyjna: SDV udostępnia implementację referencyjną stosu SOME/IP, która nie jest przeznaczona do użytku produkcyjnego.
Interfejs API Binder: interfejs
ISomeIpStackdefiniuje metody interakcji z instancją stosu SOME/IP.SELinux: przykładowa konfiguracja SELinux dla stosu referencyjnego umożliwia komunikację za pomocą Binder oraz szczegółowy dostęp do systemu plików.
Ten stos odczytuje format przewodowy SOME/IP, ale ładunek pozostawia jako nieprzezroczyste obiekty binarne i przekazuje go do brokera SOME/IP.
Standard SOME/IP nie zawiera definicji stosu ani warstwy interfejsu API stosu. SDV udostępnia interfejs API AIDL, który działa w ramach znanych definicji standardu i wymaga minimalnej ilości kodu do dostosowania istniejących stosów.
Ten interfejs API umożliwia wybieranie różnych implementacji stosu i upraszcza integrację stosu z innymi komponentami systemu.
Implementacja referencyjna
SDV udostępnia implementację referencyjną stosu SOME/IP, która nie jest przeznaczona do użytku produkcyjnego i składa się z cienkiej otoczki na bibliotece COVESA vsomeip typu open source. System wdraża stos referencyjny tylko w przypadku celów sdv_core_cf i sdv_core_arm64, a init.rc uruchamia go na maszynie wirtualnej z CID=3.
on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
start sdv_someip_stack_agent
Określ konfigurację wdrożenia produkcyjnego dla stosu zdefiniowanego przez producenta OEM. Więcej informacji znajdziesz w artykule Integracja SOME/IP z SDV.
Konfiguracja
Stos referencyjny deklaruje konfigurację biblioteki vSomeIP. Opis struktury konfiguracji znajdziesz w artykule Struktura pliku konfiguracji. W ramach konfiguracji określamy parametry SOME/IP SD, takie jak adres multicastowy i port używany przez stos.
Interfejs API Binder
Interfejs ISomeIpStack jest zadeklarowany w core_services/some_ip/aidl/google/sdv/someip. Interfejs ISomeIpStack definiuje metody interakcji z instancją stosu SOME/IP i zapewnia niezbędne właściwości tych elementów.
Dostępność usługi
register_availability_callbackrejestruje wywołanie zwrotne dotyczące zmian dostępności usługi.monitor_serviceinstruuje stos, aby monitorował dostępność określonej usługi.unregister_availability_callbackwyrejestrowuje wywołanie zwrotne dotyczące dostępności.on_sdv_service_availabilitywskazuje zmianę dostępności usługi SDV.
Zdalne wywołania procedur (RPC)
Żądanie RPC możesz wysłać za pomocą:
rpc_transact, aby poczekać na odpowiedź,rpc_oneway, aby nie czekać na odpowiedź.
Obsługa żądań RPC:
register_rpc_request_callbackrejestruje wywołanie zwrotne dotyczące przychodzących żądań RPC.unregister_rpc_request_callbackwyrejestrowuje wywołanie zwrotne dotyczące żądań RPC.
Powiadomienie o zdarzeniu
register_event_notification_callbackrejestruje wywołanie zwrotne dotyczące subskrybowanych powiadomień o zdarzeniach.unregister_event_notification_callbackwyrejestrowuje wywołanie zwrotne dotyczące powiadomień o zdarzeniach.on_sdv_topic_availabilitywskazuje zmianę dostępności tematu SDV.subscribesubskrybuje określone zdarzenie z grupy zdarzeń.unsubscribeanuluje subskrypcję określonego zdarzenia.publishpublikuje zdarzenie z określonym ładunkiem.
SELinux
Folder device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ zawiera przykładową konfigurację SELinux dla stosu referencyjnego:
sdv_someip_stack_default.tedefiniuje typsdv_someip_stack_defaulti mapuje go na atrybuty i konteksty.file_contextsmapuje foldery binarne i danych na odpowiednie konteksty.
Konfiguracja umożliwia komunikację za pomocą Binder między stosem a brokerem, co pozwala na dostęp do właściwości sieciowych i szczegółowy dostęp do systemu plików urządzenia.