Stos transportowy SOME/IP zarządza protokołem przewodowym SOME/IP niskiego poziomu i logiką sieciową za pomocą interfejsu języka definiowania interfejsu Androida (AIDL) (ISomeIpStack). Stos ten wysyła i odbiera zdarzenia SOME/IP oraz zdalne wywołania procedur (RPC). Partnerzy mogą integrować niestandardowe implementacje stosu SOME/IP za pomocą ISomeIpStack lub korzystać z dołączonej implementacji referencyjnej opartej na bibliotece open source COVESA vsomeip. Na tej stronie opisujemy te pojęcia:
Implementacja referencyjna: SDV udostępnia nieprodukcyjną implementację referencyjną stosu SOME/IP.
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ą mechanizmu Binder i szczegółowy dostęp do systemu plików.
Ten stos odczytuje format transmisji SOME/IP, ale pozostawia ładunek jako nieprzezroczyste bloki binarne i przekazuje go do brokera SOME/IP.
Standard SOME/IP nie zawiera definicji stosu ani warstwy interfejsu API stosu. SDV udostępnia interfejs AIDL API, 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.
Przykładowa implementacja
SDV udostępnia nieprodukcyjną implementację referencyjną stosu SOME/IP i składa się z cienkiej otoczki na bibliotece COVESA vsomeip typu open source. System wdraża stos referencyjny tylko na platformach 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
Zdefiniuj konfigurację wdrożenia produkcyjnego dla zdefiniowanego przez producenta OEM stosu. Więcej informacji znajdziesz w artykule Integracja SOME/IP z SDV.
Konfiguracja
Stos referencyjny deklaruje konfigurację biblioteki vSomeIP. Opis struktury konfiguracji znajdziesz w sekcji Struktura pliku konfiguracji. W ramach konfiguracji plik konfiguracyjny określa parametry SOME/IP SD, takie jak adres multiemisji i port używany przez stos.
Binder API
Interfejs ISomeIpStack jest zadeklarowany w core_services/some_ip/aidl/google/sdv/someip. ISomeIpStack interfejs
definiuje metody interakcji z instancją stosu SOME/IP i zapewnia
niezbędne cechy tych elementów.
Dostępność usługi
register_availability_callbackRejestruje wywołanie zwrotne w przypadku zmian dostępności usługi.monitor_serviceNakazuje stosowi monitorowanie dostępności konkretnej usługi.unregister_availability_callbackUsuwa rejestrację wywołania zwrotnego dostępności.on_sdv_service_availabilityOznacza zmianę dostępności usługi SDV.
Zdalne wywołania procedur (RPC)
Możesz wysłać żądanie RPC za pomocą:
rpc_transactoczekiwać na odpowiedź,rpc_oneway, aby nie czekać na odpowiedź.
W przypadku obsługi żądań RPC:
register_rpc_request_callbackRejestruje wywołanie zwrotne dla przychodzących żądań RPC.unregister_rpc_request_callbackAnuluje rejestrację wywołania zwrotnego żądania RPC.
Powiadomienie o wydarzeniu
register_event_notification_callbackRejestruje wywołanie zwrotne w przypadku powiadomień o subskrybowanych zdarzeniach.unregister_event_notification_callbackUsuwa rejestrację wywołania zwrotnego powiadomienia o zdarzeniu.on_sdv_topic_availabilityOznacza zmianę dostępności tematu SDV.subscribeSubskrybuje określone wydarzenie z grupy wydarzeń.unsubscribeAnuluje subskrypcję określonego wydarzenia.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.tedefiniujesdv_someip_stack_defaulttyp i mapuje go na atrybuty i konteksty.file_contextsmapuje foldery binarne i z danymi na odpowiednie konteksty.
Konfiguracja umożliwia komunikację za pomocą mechanizmu Binder między stosem a brokerem, co pozwala uzyskać dostęp do jakości sieci i szczegółowy dostęp do systemu plików urządzenia.