دمج SOME/IP مع SDV

يمكنك دمج برنامج وسيط قابل للتوسيع وموجّه نحو الخدمة عبر بروتوكول الإنترنت (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.