הטמעה של מחסנית SOME/IP

ערימת 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_callback Unregisters the availability callback.

  • on_sdv_service_availability מציין שינוי בזמינות של שירות SDV.

קריאות לפרוצדורות מרוחקות (RPC)

אפשר לשלוח בקשת RPC עם:

  • rpc_transact להמתין לתגובה
  • rpc_oneway כדי לא לחכות לתגובה

לטיפול בבקשות RPC:

  • register_rpc_request_callback Registers a callback for incoming RPC requests.

  • unregister_rpc_request_callback Unregisters the RPC request callback.

התראה לגבי אירוע

  • register_event_notification_callback רושם קריאה חוזרת (callback) להתראות על אירועים שהמשתמש רשום אליהם.

  • unregister_event_notification_callback ביטול הרישום של פונקציית הקריאה החוזרת של ההתראה לגבי אירוע.

  • on_sdv_topic_availability מציין שינוי בזמינות של נושאים ב-SDV.

  • subscribe נרשם לאירוע ספציפי מתוך קבוצת אירועים.

  • unsubscribe ביטול ההרשמה לאירוע ספציפי.

  • publish Publishes 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 בין הסטאק לבין הברוקר, ומאפשרת גישה לאיכויות של הרשת ולגישה גרנולרית למערכת הקבצים של המכשיר.