Реализовать стек SOME/IP

Стек SOME/IP управляет низкоуровневой логикой передачи данных SOME/IP через интерфейс Android Interface Definition Language (AIDL). Этот стек отправляет и принимает события SOME/IP и удаленные вызовы процедур (RPC). В этом документе описываются следующие концепции:

  • Эталонная реализация: SDV предоставляет пример непроизводственной эталонной реализации стека SOME/IP.

  • API Binder: Интерфейс ISomeIpStack определяет методы для взаимодействия с экземпляром стека SOME/IP.

  • SELinux: Пример конфигурации SELinux для эталонного стека обеспечивает взаимодействие с Binder и детальный доступ к файловой системе.

Пока этот стек считывает данные в формате SOME/IP, он оставляет полезную нагрузку в виде непрозрачных двоичных блоков и пересылает её брокеру SOME/IP.

Стандарт SOME/IP не содержит определения стека или уровня API стека. SDV предоставляет API AIDL, который работает в рамках привычных определений стандарта и требует минимального количества кода для адаптации существующих стеков.

Этот API позволяет выбирать различные реализации стека и упрощает интеграцию стека с другими компонентами системы.

Эталонная реализация

SDV предоставляет непроизводственную эталонную реализацию стека SOME/IP и представляет собой тонкую обертку над открытой библиотекой COVESA vsomeip. Система развертывает эталонный стек только на целевых платформах sdv_core_cf и sdv_core_arm64 , а init.rc запускает его на виртуальной машине с CID=3 .

on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
    start sdv_someip_stack_agent

Определите конфигурацию развертывания в производственной среде для стека, определенного вашим OEM-производителем. Для получения дополнительной информации см. раздел «Интеграция SOME/IP с SDV» .

Конфигурация

Эталонный стек определяет конфигурацию для библиотеки vSomeIP. Описание структуры конфигурации см. в разделе «Структура файла конфигурации». В рамках конфигурации мы указываем параметры SOME/IP SD, такие как многоадресный адрес и порт, используемый стеком.

API связывания

Интерфейс ISomeIpStack объявлен в core_services/some_ip/aidl/google/sdv/someip . Интерфейс ISomeIpStack определяет методы для взаимодействия с экземпляром стека SOME/IP и предоставляет необходимые свойства для этих элементов.

Доступность услуг

  • register_availability_callback Регистрирует функцию обратного вызова для обработки изменений доступности сервиса.

  • monitor_service Указывает стеку отслеживать доступность конкретной службы.

  • unregister_availability_callback Отменяет регистрацию функции обратного вызова доступности.

  • on_sdv_service_availability указывает на изменение доступности сервиса SDV.

Удаленные вызовы процедур (RPC)

Вы можете отправить RPC-запрос следующим образом:

  • rpc_transact для ожидания ответа
  • rpc_oneway не ждать ответа

Для обработки RPC-запросов:

  • register_rpc_request_callback Регистрирует функцию обратного вызова для входящих RPC-запросов.

  • unregister_rpc_request_callback Отменяет регистрацию функции обратного вызова для RPC-запроса.

Уведомление о событии

  • register_event_notification_callback Регистрирует функцию обратного вызова для уведомлений о событиях, на которые оформлена подписка.

  • unregister_event_notification_callback Отменяет регистрацию функции обратного вызова для уведомлений о событиях.

  • on_sdv_topic_availability Указывает на изменение доступности темы SDV.

  • subscribe Подписывается на конкретное событие из группы событий.

  • unsubscribe Отменяет подписку на конкретное мероприятие.

  • publish Публикует событие с заданным содержимым.

SELinux

В папке device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ находится пример конфигурации SELinux для эталонного стека:

  • sdv_someip_stack_default.te определяет тип sdv_someip_stack_default и сопоставляет его с атрибутами и контекстами.

  • Параметр file_contexts сопоставляет папки с бинарными файлами и данными с соответствующими контекстами.

Данная конфигурация обеспечивает связь Binder между стеком и брокером, предоставляя доступ к сетевым возможностям и детальный доступ к файловой системе устройства.