A pilha SOME/IP gerencia a lógica de transporte de baixo nível do SOME/IP por uma interface da Linguagem de definição de interface do Android (AIDL). Essa pilha envia e recebe eventos SOME/IP e chamadas de procedimento remoto (RPCs). Neste documento, descrevemos os seguintes conceitos:
Implementação de referência:o SDV fornece uma implementação de amostra de referência que não é de produção para uma pilha SOME/IP.
API Binder:a interface
ISomeIpStackdefine métodos para interagir com uma instância de pilha SOME/IP.SELinux:uma configuração de exemplo do SELinux para a pilha de referência permite comunicação de vinculação e acesso granular ao sistema de arquivos.
Embora essa pilha leia o formato de fio SOME/IP, ela deixa o payload como blobs binários opacos e encaminha o payload para o broker SOME/IP.
O padrão SOME/IP não oferece uma definição da pilha ou da camada da API de pilha. O SDV oferece uma API AIDL que opera nas definições conhecidas do padrão e exige uma quantidade mínima de código para adaptar as stacks atuais.
Essa API permite selecionar diferentes implementações da pilha e simplifica a integração da pilha com outros componentes no sistema.
Implementação de referência
A SDV fornece uma implementação de amostra de referência não produtiva para uma pilha SOME/IP e consiste em um wrapper simples sobre a biblioteca de código aberto COVESA vsomeip. O sistema implanta a pilha de referência apenas nos destinos sdv_core_cf e sdv_core_arm64, e init.rc a inicia na VM com CID=3.
on property:dev.bootcomplete=1 && property:ro.sdv.vsock_local_cid=3
start sdv_someip_stack_agent
Defina a configuração de implantação de produção para a pilha definida pelo OEM. Para saber mais, consulte Integrar o SOME/IP ao SDV.
Configuração
A pilha de referência declara uma configuração para a biblioteca vSomeIP. Consulte Estrutura do arquivo de configuração para uma descrição da estrutura de configuração. Como parte da configuração, especificamos alguns parâmetros de SD SOME/IP, como um endereço multicast e a porta usada pela pilha.
API Binder
A interface ISomeIpStack é declarada em core_services/some_ip/aidl/google/sdv/someip. A interface ISomeIpStack
define métodos para interagir com uma instância de pilha SOME/IP e fornece
qualidades essenciais para esses itens.
Disponibilidade do serviço
register_availability_callbackRegistra um callback para mudanças na disponibilidade do serviço.monitor_serviceInstrui a pilha a monitorar a disponibilidade de um serviço específico.unregister_availability_callbackcancela o registro do callback de disponibilidade.on_sdv_service_availabilityIndica uma mudança na disponibilidade do serviço de SDV.
Chamadas de procedimento remoto (RPC)
Você pode enviar uma solicitação de RPC com:
rpc_transactpara aguardar uma respostarpc_onewaypara não esperar uma resposta
Para o processamento de solicitações RPC:
register_rpc_request_callbackRegistra um callback para solicitações RPC recebidas.unregister_rpc_request_callbackcancela o registro do callback de solicitação de RPC.
Notificação de eventos
register_event_notification_callbackRegistra um callback para notificações de eventos inscritos.unregister_event_notification_callbackCancela o registro da função de callback de notificação de evento.on_sdv_topic_availabilityIndica uma mudança na disponibilidade de tópicos de SDV.subscribeAssina um evento específico de um grupo de eventos.unsubscribeCancela a inscrição em um evento específico.publishPublica um evento com um determinado payload.
SELinux
A pasta device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ contém um
exemplo de configuração do SELinux para a pilha de referência:
sdv_someip_stack_default.tedefine o tiposdv_someip_stack_defaulte o mapeia para atributos e contextos.file_contextsmapeia pastas binárias e de dados para contextos adequados.
A configuração permite a comunicação do Binder entre a pilha e o broker, permitindo o acesso a qualidades de rede e granular ao sistema de arquivos do dispositivo.