Wdrażanie stosu SOME/IP

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 ISomeIpStack definiuje 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_callback rejestruje wywołanie zwrotne dotyczące zmian dostępności usługi.

  • monitor_service instruuje stos, aby monitorował dostępność określonej usługi.

  • unregister_availability_callback wyrejestrowuje wywołanie zwrotne dotyczące dostępności.

  • on_sdv_service_availability wskazuje 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_callback rejestruje wywołanie zwrotne dotyczące przychodzących żądań RPC.

  • unregister_rpc_request_callback wyrejestrowuje wywołanie zwrotne dotyczące żądań RPC.

Powiadomienie o zdarzeniu

  • register_event_notification_callback rejestruje wywołanie zwrotne dotyczące subskrybowanych powiadomień o zdarzeniach.

  • unregister_event_notification_callback wyrejestrowuje wywołanie zwrotne dotyczące powiadomień o zdarzeniach.

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

  • subscribe subskrybuje określone zdarzenie z grupy zdarzeń.

  • unsubscribe anuluje subskrypcję określonego zdarzenia.

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

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