تنفيذ حزمة SOME/IP

تتولّى حزمة نقل SOME/IP إدارة بروتوكول SOME/IP السلكي المنخفض المستوى ومنطق الشبكة من خلال واجهة لغة تعريف واجهة نظام Android ‏ (AIDL) (ISomeIpStack). وترسل هذه الحزمة أحداث SOME/IP واستدعاءات الإجراءات عن بُعد (RPC) وتتلقّاها. يمكن للشركاء دمج عمليات تنفيذ مخصّصة لحزمة SOME/IP من خلال ISomeIpStack، أو استخدام عملية التنفيذ المرجعية المضمّنة المستندة إلى مكتبة vsomeip مفتوحة المصدر من COVESA. توضّح هذه الصفحة المفاهيم التالية:

  • التنفيذ المرجعي: توفّر SDV نموذجًا مرجعيًا غير إنتاجي لتنفيذ حزمة SOME/IP.

  • واجهة برمجة التطبيقات Binder: تحدّد واجهة ISomeIpStack طرقًا للتفاعل مع مثيل حزمة SOME/IP.

  • SELinux: يتيح نموذج إعداد SELinux للحزمة المرجعية إمكانية التواصل عبر binder والوصول الدقيق إلى نظام الملفات.

مع أنّ هذه الحزمة تقرأ تنسيق SOME/IP السلكي، إلا أنّها تترك الحمولة ككائنات ثنائية كبيرة مبهمة وتعيد توجيه الحمولة إلى وسيط SOME/IP.

لا يقدّم معيار SOME/IP أي تعريف للحزمة أو طبقة واجهة برمجة التطبيقات للحزمة. توفّر خدمة SDV واجهة برمجة تطبيقات AIDL تعمل ضمن التعريفات المألوفة للمعيار وتتطلّب الحد الأدنى من الرموز البرمجية لتكييف الحِزم الحالية.

تتيح لك واجهة برمجة التطبيقات هذه اختيار عمليات تنفيذ مختلفة للحزمة وتسهّل دمج الحزمة مع المكوّنات الأخرى في النظام.

التنفيذ المرجعي

توفّر 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

حدِّد إعدادات نشر الإصدار الخاص بمرحلة الإنتاج للحزمة التي حدّدها المصنّع الأصلي للجهاز. لمزيد من المعلومات، اطّلِع على دمج 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 تلغي تسجيل وظيفة معالجة البيانات عند توفّرها.

  • on_sdv_service_availability يشير إلى تغيير في مدى توفّر خدمة SDV.

استدعاء الإجراءات عن بُعد (RPC)

يمكنك إرسال طلب RPC باستخدام:

  • rpc_transact للانتظار إلى حين تلقّي ردّ
  • rpc_oneway لعدم انتظار ردّ

للتعامل مع طلبات RPC:

  • تسجّل الدالة register_rpc_request_callback دالة ردّ لطلبات RPC الواردة.

  • unregister_rpc_request_callback تلغي تسجيل معاودة الاتصال لطلب RPC.

إشعار برصد حدث

  • register_event_notification_callback تسجيل عملية رد اتصال لتلقّي إشعارات الأحداث التي تم الاشتراك فيها

  • unregister_event_notification_callback لإلغاء تسجيل دالة معالجة إشعارات الأحداث.

  • on_sdv_topic_availability يشير إلى تغيير في مدى توفّر مواضيع "التحقّق من صحة تصميم الإعلان".

  • subscribe الاشتراك في حدث معيّن من مجموعة أحداث

  • unsubscribe إلغاء الاشتراك في حدث معيّن

  • publish تنشر حدثًا مع حمولة معيّنة.

SELinux

يحتوي المجلد device/google/sdv/sdv_core_base/sepolicy/samples/vendor/ على نموذج لإعداد SELinux الخاص بالحزمة المرجعية:

  • تحدّد sdv_someip_stack_default.te نوع sdv_someip_stack_default وتربطه بالسمات والسياقات.

  • تعيّن file_contexts مجلدات البيانات والعناصر الثنائية إلى السياقات المناسبة.

يتيح الإعداد التواصل عبر Binder بين الحزمة والوسيط، ما يسمح بالوصول إلى خصائص الشبكة وإمكانية الوصول الدقيق إلى نظام ملفات الجهاز.