תרגום בסיסי של SOME/IP נועד לספק פתרון שניתן לעדכן לשילוב עם שירותי AUTOSAR. האתגר העיקרי של הברוקר היה לתרגם הודעות וקריאות RPC שלא היו ידועות בזמן הקומפילציה. כדי לפתור את הבעיה הזו, עדכונים בזמן ריצה מניחים תוספות או עדכונים דינמיים של שירותי SDV, בדומה לאופן שבו מוצגים סוגים חדשים של יחידות.
הפתרון לתרגום הדינמי הזה מבוסס על מידע על סוג בזמן ריצה (RTTI). הברוקר משתמש בהגדרות מכל חבילות השירות המותקנות ומבצע תרגום מבוסס-רפלקציה באמצעות סכימות נתונים מההגדרות האלה.
תרגום שמבוסס על RTTI הוא גמיש, אבל הוא איטי יותר משיטות שעברו קומפילציה מראש. כדי לבצע אופטימיזציה של נתיבי נתונים עמוסים מאוד, צריך להשתמש בטכניקה שמדלגת על התרגום.
כדי לתמוך בצריכה של הודעות גדולות ותכופות, SDV מאפשרת לעקוף את התרגום ולהעביר בייטים בפורמט SOME/IP לחבילות של שירותים לצרכנים.
חבילת השירות מטפלת במטען הייעודי (payload) בפורמט SOME/IP, ויכולה לצרוך את המטען הייעודי או לתרגם אותו ל-protobuf.
מציינים message_translation_mode: INTERPRET_AS_BYTES לאירוע בקובץ מיפוי של SOME/IP כדי לעקוף את התרגום. דוגמה מופיעה במאמר samples/some_ip/catalog/integration_test/byte_forward_someip.vsidl.
הפשרות שצריך לעשות בשיטות תרגום
כשבוחרים שיטת תרגום, כדאי לקחת בחשבון את היתרונות והחסרונות של כל שיטה:
אינטראקציה עם המערכת: שירותי SDV אחרים לא יכולים לפרש בייטים שמועברים בפורמט SOME/IP בלי לדעת את פרטי הפורמט הגולמי. לדוגמה, SDV Telemetry לא יכול לעבד שדות בודדים של הודעות כאלה.
מאמץ נוסף: תרגום המטען הייעודי (payload) הגולמי בפורמט SOME/IP דורש מאמץ נוסף מצד מפתח חבילת השירות.
מחולל ספריות
SDV מספקת מחולל אוטומטי לתרגום פורמט SOME/IP. המחולל הזה יוצר ספריות על סמך הגדרות ומיפויים של הודעות זמינות לתרגום ישיר ללא שיקוף. חבילות שירות שצורכות בייטים של SOME/IP שהועברו יכולות להשתמש בספריות שנוצרו.
המלצה: כדאי להשתמש בגנרטור רק אם יצרן הציוד המקורי (OEM) מזהה אירועים קריטיים לביצועים שלא ניתן לתרגם במסגרת דרישות הביצועים של הפרויקט. במקרים כאלה, ליצרן הציוד המקורי כבר צריכים להיות גם הגדרת ה-protobuf וגם מיפוי SOME/IP שמשמשים לתרגום מבוסס RTTI. אותה הגדרה יכולה לשמש כקלט לגנרטור. פרטים נוספים זמינים בקובץ README.md בספרייה core_services/tools/someip_translation_generator/.