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