Стек 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 между стеком и брокером, предоставляя доступ к сетевым возможностям и детальный доступ к файловой системе устройства.