يمكنك دمج برنامج وسيط قابل للتوسيع وموجّه نحو الخدمة عبر بروتوكول الإنترنت (SOME/IP) مع مركبة محدّدة بالبرامج (SDV) من خلال نشر عدة مكونات وإعدادها. يتطلّب كل مثيل وسيط تنفيذًا مطابقًا للمكدس المحلي. يوضّح هذا المستند كيفية تنفيذ ما يلي:
- إعداد عملية نشر وسيط واحد
- نشر وسيط SOME/IP كمثيل واحد أو عدة مثيلات
- نشر وكيل لغة البيانات التفاعلية لخدمات المركبات (VSIDL)
- استخدام Soong مع
vsidl_rc_generator
مثال على الإعداد
توضّح أمثلة SDV، مثل تلك الخاصة بأجهزة Android الافتراضية Cuttlefish
sdv_core_cf والأجهزة sdv_core_arm64، مخطط نشر مرنًا. يبدأ كل من الوسيط والحزمة استنادًا إلى سمة نظام وقت التشغيل،
ro.boot.sdv.someip.enable.
يمكنك تحقيق مخطط نشر وسيط واحد من خلال ضبط androidboot.sdv.someip.enable=true على نسخة واحدة فقط من SDV تعمل على النظام.
# device/google/sdv/sdv_core_base/sdv.agents.rc
# Declare and start the SDV SOME/IP broker agent.
service sdv_someip_broker_agent /system_ext/bin/sdv_someip_broker_agent_comms
class core
disabled
user system_ext_sdv_someip
group system
on property:ro.sdv.orchestrator.state.ready=true && property:ro.boot.sdv.someip.enable=true
start sdv_someip_broker_agent
مثال آخر:
#device/google/sdv/sdv_core_cf/init.sdv_core_cf.rc
# Declare and start the sample SDV SOME/IP stack agent.
service sdv_someip_stack_agent /vendor/bin/sdv_someip_stack_agent
class core
disabled
user system
group system
setenv VSOMEIP_CONFIGURATION /vendor/etc/someip/vsomeip_config.json
setenv VSOMEIP_BASE_PATH /data/vendor/vsomeip/
on property:dev.bootcomplete=1 && property:ro.boot.sdv.someip.enable=true
start sdv_someip_stack_agent
نشر وسيط
يمكنك نشر وسيط SOME/IP كمثيل واحد أو كمثيلات متعددة في SDV. يمكنك تقسيم نطاقات SOME/IP (أو الشبكات الفرعية) إلى مثيلات مستقلة مختلفة. يمكنك إجراء ذلك لموازنة الحمل أو تحسين العزل لأغراض الأمان.
يجب أن تعالج كل نسخة مجموعة منفصلة من نقاط نهاية SOME/IP وSDV. لا يمكنك استخدام التوجيه الخاص أو المزامنة بين الوكلاء. يمكن أن يؤدي الإعداد غير السليم إلى تكرار المنشورات أو نتائج غير متسقة في عملية البحث عن الخدمات.
مقدّم خدمات لغة البيانات التفاعلية لخدمات المركبات
تحصل SOME/IP على البيانات الوصفية المطلوبة للترجمات من وكيل VSIDL. يجب نشر وكيل VSIDL على الجهاز الافتراضي نفسه الذي تم نشر وسيط SOME/IP عليه.
عند استخدامها مع runtime-config-prebuilts خيار المتغير، يمكن لوكيل VSIDL إنشاء ملف Android.bp. يحتوي هذا الملف على قواعد مُعدّة مسبقًا تعمل على إنشاء إعدادات وقت التشغيل ذات الصلة ونشرها.
Soong
لتشغيل vsidl_rc_generator المقدَّمة من SDV، اتّبِع الخطوات التالية:
vsidl_rc_generator [OPTIONS] --catalog-path <CATALOG_PATH> --output-path <OUTPUT_PATH>
يجب تقديم الوسيطات التالية:
--vsidl-path <VSIDL_PATH>--catalog-path <CATALOG_PATH>--output-path <OUTPUT_PATH>
يمكنك أيضًا تقديم الوسيطات الاختيارية التالية:
اختياري:
--dependency-catalog-path <DEPENDENCY_CATALOG_PATH>...تحدّد هذه السمة أدلة ملفات proto التابعة خارج
catalog_path. لإنشاء واجهة برمجة تطبيقات Rust لملفات proto التابعة، يجب أن يحتوي كل دليل على ملفAndroid.bp. يجب أن يتضمّن هذا الملفrust_protobufهدف إنشاء.اختياري:
--variant <VARIANT>القيمة التلقائية هي
RuntimeConfig، وتشير إلى الوضع الذي يجب أن يتم فيه تشغيل أداة إنشاء إعدادات وقت التشغيل. تنشئRuntimeConfigملفات إعداد وقت التشغيل لبروتوكول SOME/IP وبيانات التشخيص.تنشئ
RuntimeConfigPrebuiltsملفات الإنشاء. تحتوي هذه الملفات على وحدات مسبقة الإنشاء. يمكنك استخدام هذه الوحدات النمطية لتضمين الملفات التي تم إنشاؤها بواسطةRuntimeConfigفي وحدات نمطية أخرى أو في صورة الجهاز الافتراضي.اختياري:
--service-bundle-name <SERVICE_BUNDLE_NAME>وسيطة لتحديد حِزمة الخدمة التي سيتم تطبيق أداة إنشاء إعدادات وقت التشغيل عليها.
اختياري:
--package-name <PACKAGE_NAME>بالإضافة إلى وسيط اسم حزمة الخدمة، استخدِم هذا الوسيط لتحديد اسم حزمة الخدمة التي سيتم تطبيق أداة إنشاء إعدادات وقت التشغيل عليها.
اختياري:
--filegroup <FILEGROUP>يجب تحديدها عند استخدام الوضع
RuntimeConfigPrebuilts.