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

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

  • التنفيذ المرجعي: يوفّر 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

تم الإعلان عن واجهة 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 تشير إلى تغيير في مدى توفُّر موضوع SDV.

  • 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 بين الحزمة والوسيط، ما يسمح بالوصول إلى خصائص الشبكة والوصول بشكلٍ دقيق إلى نظام ملفات الجهاز.