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