A tradução básica de SOME/IP foi projetada para fornecer uma solução atualizável para integração com serviços AUTOSAR. O principal desafio para o agente era traduzir mensagens e chamadas de RPC que não eram conhecidas no momento da compilação. Para resolver isso, as atualizações de execução pressupõem adições ou atualizações dinâmicas de serviços SDV, semelhantes à forma como novos tipos de unidades são introduzidos.
A solução para essa tradução dinâmica é baseada em informações de tipo de execução (RTTI, na sigla em inglês). O agente consome a configuração de todos os pacotes de serviços instalados e realiza a tradução baseada em reflexão usando esquemas de dados dessa configuração.
Embora a tradução baseada em RTTI ofereça flexibilidade, ela é inerentemente mais lenta do que os métodos pré-compilados. Para otimizar caminhos de dados com carga pesada, use uma técnica que ignore a tradução.
Para oferecer suporte ao consumo de mensagens grandes e frequentes, o SDV permite ignorar a tradução e encaminhar bytes formatados em SOME/IP para pacotes de serviços do consumidor.
O pacote de serviços processa o payload formatado em SOME/IP, que pode consumir ou traduzir o payload para protobuf.
Especifique message_translation_mode: INTERPRET_AS_BYTES para o evento em um arquivo de mapeamento SOME/IP para ignorar a tradução. Confira um exemplo em samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl.
Compensações do método de tradução
Ao escolher um método de tradução, considere estas compensações:
Interação do sistema:outros serviços SDV não podem interpretar bytes encaminhados no formato SOME/IP sem conhecer os detalhes do formato bruto. Por exemplo, a telemetria do SDV não pode processar campos individuais dessas mensagens.
Esforço extra:a tradução do payload bruto no formato SOME/IP exige mais esforço do desenvolvedor do pacote de serviços.
Gerador de biblioteca
O SDV oferece um gerador automatizado para traduzir o formato SOME/IP. Esse gerador cria bibliotecas com base nas definições e mapeamentos de mensagens disponíveis para tradução direta sem reflexão. Os pacotes de serviços que consomem bytes SOME/IP encaminhados podem usar as bibliotecas geradas.
Recomendação:use o gerador somente se o OEM identificar eventos de desempenho crítico que não podem ser traduzidos nos requisitos de desempenho do projeto. Nesses casos, o OEM já precisa ter a definição de protobuf e o mapeamento SOME/IP usados para a tradução baseada em RTTI. Essa mesma configuração pode servir como entrada para o gerador. Para mais detalhes, consulte o arquivo README.md no diretório core_services/tools/someip_translation_generator/.