Wdrażanie stosu SOME/IP

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 ISomeIpStack definiuje 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_cfsdv_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_callback Rejestruje wywołanie zwrotne w przypadku zmian dostępności usługi.

  • monitor_service Nakazuje stosowi monitorowanie dostępności konkretnej usługi.

  • unregister_availability_callback Usuwa rejestrację wywołania zwrotnego dostępności.

  • on_sdv_service_availability Oznacza zmianę dostępności usługi SDV.

Zdalne wywołania procedur (RPC)

Możesz wysłać żądanie RPC za pomocą:

  • rpc_transact oczekiwać na odpowiedź,
  • rpc_oneway, aby nie czekać na odpowiedź.

W przypadku obsługi żądań RPC:

  • register_rpc_request_callback Rejestruje wywołanie zwrotne dla przychodzących żądań RPC.

  • unregister_rpc_request_callback Anuluje rejestrację wywołania zwrotnego żądania RPC.

Powiadomienie o wydarzeniu

  • register_event_notification_callback Rejestruje wywołanie zwrotne w przypadku powiadomień o subskrybowanych zdarzeniach.

  • unregister_event_notification_callback Usuwa rejestrację wywołania zwrotnego powiadomienia o zdarzeniu.

  • on_sdv_topic_availability Oznacza zmianę dostępności tematu SDV.

  • subscribe Subskrybuje określone wydarzenie z grupy wydarzeń.

  • unsubscribe Anuluje subskrypcję określonego wydarzenia.

  • publish Publikuje 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.te definiuje sdv_someip_stack_default typ i mapuje go na atrybuty i konteksty.

  • file_contexts mapuje 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.