ערימת SOME/IP מנהלת לוגיקת העברה ברמה נמוכה של SOME/IP באמצעות ממשק של שפת הגדרה לבניית ממשק Android (AIDL). הסטאק הזה שולח ומקבל אירועים של SOME/IP וקריאות לפרוצדורות מרוחקות (RPC). במסמך הזה מוסברים המושגים הבאים:
הטמעה לדוגמה: 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) שהוגדרה על ידי יצרן ציוד מקורי. מידע נוסף זמין במאמר בנושא שילוב של 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_callbackRegisters a callback for incoming RPC requests.
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תיקיות בינאריות ונתונים של מפות Google להקשרים המתאימים.
ההגדרה מאפשרת תקשורת של Binder בין הסטאק לבין הברוקר, ומאפשרת גישה לאיכויות של הרשת ולגישה גרנולרית למערכת הקבצים של המכשיר.