מערך התעבורה SOME/IP מנהל את פרוטוקול החיבור SOME/IP ברמה נמוכה ואת הלוגיקה של הרשת דרך ממשק Android Interface Definition Language (AIDL) (ISomeIpStack). המערך הזה שולח ומקבל אירועי SOME/IP וקריאות לפרוצדורות מרוחקות (RPC). שותפים יכולים לשלב הטמעות מותאמות אישית של מחסנית SOME/IP דרך ISomeIpStack, או להשתמש בהטמעה לדוגמה שכלולה ב-COVESA vsomeip, ספרייה בקוד פתוח. בדף הזה מתוארים המושגים הבאים:
הטמעה לדוגמה: SDV מספקת הטמעה לדוגמה שאינה מיועדת לסביבת ייצור עבור סטאק SOME/IP.
Binder API: הממשק
ISomeIpStackמגדיר שיטות לאינטראקציה עם מופע של מחסנית SOME/IP.SELinux: דוגמה להגדרת SELinux עבור מחסנית ההפניה מאפשרת תקשורת בין רכיבי binder וגישה גרנולרית למערכת הקבצים.
הסטאק הזה קורא את פורמט החוט של SOME/IP, אבל הוא משאיר את המטען הייעודי כבלובים בינאריים אטומים ומעביר את המטען הייעודי ל-SOME/IP broker.
תקן 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
מגדירים את פריסת הייצור עבור מחסנית (stack) שהוגדרה על ידי יצרן ציוד מקורי (OEM). מידע נוסף זמין במאמר בנושא שילוב של SOME/IP עם SDV.
הגדרות אישיות
מערך ההפניות מכריז על הגדרה לספריית vSomeIP. במאמר מבנה קובץ ההגדרות מופיע תיאור של מבנה ההגדרות. כחלק מההגדרה, קובץ ההגדרה מציין פרמטרים של SOME/IP SD, כמו כתובת מולטיקאסט והיציאה שבה משתמשת המערכת.
Binder API
הממשק של ISomeIpStack מוגדר ב-core_services/some_ip/aidl/google/sdv/someip. ממשק ISomeIpStack מגדיר שיטות לאינטראקציה עם מופע של מחסנית SOME/IP ומספק מאפיינים חיוניים לפריטים האלה.
זמינות של שירות
register_availability_callbackרישום של קריאה חוזרת לשינויים בזמינות השירות.
monitor_serviceהנחיה למערכת לעקוב אחרי הזמינות של שירות ספציפי.
unregister_availability_callbackUnregisters the availability callback.
on_sdv_service_availabilityמציין שינוי בזמינות של שירות SDV.
קריאות לפרוצדורות מרוחקות (RPC)
אפשר לשלוח בקשת RPC עם:
rpc_transactלהמתין לתגובהrpc_onewayכדי לא לחכות לתגובה
לטיפול בבקשות RPC:
register_rpc_request_callbackרושם קריאה חוזרת (callback) לבקשות RPC נכנסות.
unregister_rpc_request_callbackUnregisters the RPC request callback.
התראה לגבי אירוע
register_event_notification_callbackרושם קריאה חוזרת (callback) להתראות על אירועים שהמשתמש רשום אליהם.
unregister_event_notification_callbackביטול הרישום של פונקציית הקריאה החוזרת של ההתראה לגבי אירוע.on_sdv_topic_availabilityמציין שינוי בזמינות של נושא SDV.
subscribeנרשם לאירוע ספציפי מתוך קבוצת אירועים.unsubscribeביטול ההרשמה לאירוע ספציפי.
publishPublishes an event with a given payload.
SELinux
התיקייה device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ מכילה דוגמה להגדרת SELinux עבור מחסנית ההפניה:
sdv_someip_stack_default.teמגדיר את הסוגsdv_someip_stack_defaultוממפה אותו למאפיינים ולהקשרים.file_contextsמיפוי של תיקיות בינאריות ונתונים של מפות להקשרים המתאימים.
ההגדרה מאפשרת תקשורת של Binder בין מחסנית התקשורת לבין הברוקר, ומאפשרת גישה לאיכויות של הרשת ולגישה גרנולרית למערכת הקבצים של המכשיר.