La traduzione SOME/IP di base è stata progettata per fornire una soluzione aggiornabile per l'integrazione con i servizi AUTOSAR. La sfida principale per il broker era tradurre messaggi e chiamate RPC sconosciuti al momento della compilazione. Per risolvere questo problema, gli aggiornamenti del runtime presuppongono aggiunte o aggiornamenti dinamici dei servizi SDV, in modo simile all'introduzione di nuovi tipi di unità.
La soluzione per questa traduzione dinamica si basa sulle informazioni sul tipo di runtime (RTTI). Il broker utilizza la configurazione di tutti i bundle di servizi installati ed esegue la traduzione basata sulla reflection utilizzando gli schemi di dati di questa configurazione.
Sebbene la traduzione basata su RTTI offra flessibilità, è intrinsecamente più lenta dei metodi precompilati. Per ottimizzare i percorsi dei dati con carico elevato, utilizza una tecnica che ignora la traduzione.
Per supportare il consumo di messaggi di grandi dimensioni e frequenti, SDV ti consente di bypassare la traduzione e inoltrare i byte formattati SOME/IP ai bundle di servizi di consumo.
Il bundle di servizi gestisce il payload formattato SOME/IP, che può utilizzare il payload o tradurlo in protobuf.
Specifica message_translation_mode: INTERPRET_AS_BYTES per l'evento in
un file di mapping SOME/IP per ignorare la traduzione. Vedi un esempio in
samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl.
Compromessi del metodo di traduzione
Quando scegli un metodo di traduzione, considera questi compromessi:
Interazione del sistema:altri servizi SDV non possono interpretare i byte inoltrati in formato SOME/IP senza conoscere i dettagli del formato non elaborato. Ad esempio, la telemetria SDV non può elaborare singoli campi di questi messaggi.
Impegno aggiuntivo:la traduzione del payload non elaborato in formato SOME/IP richiede un impegno aggiuntivo da parte dello sviluppatore del bundle di servizi.
Generatore di librerie
SDV fornisce un generatore automatico per la conversione del formato SOME/IP. Questo generatore crea librerie basate su definizioni e mappature dei messaggi disponibili per la traduzione diretta senza reflection. I bundle di servizi che utilizzano byte SOME/IP inoltrati possono utilizzare le librerie generate.
Consiglio:utilizza il generatore solo se il tuo OEM identifica eventi critici per le prestazioni che non possono essere tradotti nei requisiti di prestazioni del tuo progetto. In questi casi, l'OEM dovrebbe già disporre sia della
definizione protobuf sia del mapping SOME/IP utilizzato per la traduzione basata su RTTI. Questa stessa configurazione può fungere da input per il generatore. Per maggiori dettagli, consulta
il file README.md nella directory
core_services/tools/someip_translation_generator/.