বিভিন্ন উপাদান স্থাপন ও কনফিগার করার মাধ্যমে স্কেলেবল সার্ভিস-ওরিয়েন্টেড মিডলওয়্যার ওভার আইপি ( SOME/IP )-কে সফটওয়্যার ডিফাইন্ড ভেহিকল (SDV)-এর সাথে একীভূত করুন। প্রতিটি ব্রোকার ইনস্ট্যান্সের জন্য একটি সংশ্লিষ্ট স্থানীয় স্ট্যাক ইমপ্লিমেন্টেশন প্রয়োজন। এই ডকুমেন্টটিতে বর্ণনা করা হয়েছে কীভাবে:
- একটি একক ব্রোকার ডেপ্লয়মেন্ট কনফিগার করুন
- SOME/IP ব্রোকারটিকে একক বা একাধিক ইনস্ট্যান্স হিসেবে স্থাপন করুন।
- যানবাহন পরিষেবা ইন্টারেক্টিভ ডেটা ল্যাঙ্গুয়েজ (VSIDL) এজেন্ট স্থাপন করুন
-
vsidl_rc_generatorএর সাথে Soong ব্যবহার করুন
উদাহরণ কনফিগারেশন
SDV-এর উদাহরণগুলো, যেমন Cuttlefish ভার্চুয়াল অ্যান্ড্রয়েড ডিভাইস sdv_core_cf এবং হার্ডওয়্যার sdv_core_arm64 এর জন্য ব্যবহৃত উদাহরণগুলো, একটি নমনীয় ডেপ্লয়মেন্ট স্কিমা প্রদর্শন করে। ব্রোকার এবং স্ট্যাক প্রতিটি একটি বুট টাইম সিস্টেম প্রপার্টি, ro.boot.sdv.someip.enable উপর ভিত্তি করে চালু হয়।
সিস্টেমে চলমান SDV ইনস্ট্যান্সগুলোর মধ্যে শুধুমাত্র একটিতে androidboot.sdv.someip.enable=true সেট করার মাধ্যমে আপনি একটি একক ব্রোকার ডেপ্লয়মেন্ট স্কিমা অর্জন করতে পারেন।
# 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
ব্রোকার স্থাপন
আপনি SDV-তে SOME/IP ব্রোকারকে একটি বা একাধিক ইনস্ট্যান্স হিসেবে স্থাপন করতে পারেন। আপনি SOME/IP ডোমেইন (বা সাবনেট) বিভিন্ন স্বাধীন ইনস্ট্যান্সে বিভক্ত করতে পারেন। লোড ভারসাম্য করতে বা নিরাপত্তার জন্য আইসোলেশন উন্নত করতে আপনি এটি করতে পারেন।
প্রতিটি ইনস্ট্যান্সকে অবশ্যই SOME/IP এবং SDV এন্ডপয়েন্টের একটি বিচ্ছিন্ন সেট প্রসেস করতে হবে। আপনি বিশেষ রাউটিং বা ক্রস-এজেন্ট সিনক্রোনাইজেশন ব্যবহার করতে পারবেন না। একটি অনুপযুক্ত কনফিগারেশনের ফলে ডুপ্লিকেট পাবলিকেশন বা অসামঞ্জস্যপূর্ণ সার্ভিস ডিসকভারি ফলাফল দেখা দিতে পারে।
যানবাহন পরিষেবা ইন্টারেক্টিভ ডেটা ভাষা প্রদানকারী
SOME/IP, VSIDL এজেন্ট থেকে অনুবাদের জন্য প্রয়োজনীয় মেটাডেটা সংগ্রহ করে। আপনাকে অবশ্যই SOME/IP ব্রোকারের সাথে একই VM-এ VSIDL এজেন্টটি স্থাপন করতে হবে।
runtime-config-prebuilts ভ্যারিয়েন্ট অপশনটির সাথে ব্যবহার করা হলে, VSIDL এজেন্ট একটি Android.bp ফাইল তৈরি করতে পারে। এই ফাইলটিতে প্রি-বিল্ট রুলস থাকে, যা প্রাসঙ্গিক রানটাইম কনফিগারেশন বিল্ড ও ডিপ্লয় করে।
সুং
SDV দ্বারা সরবরাহকৃত vsidl_rc_generator চালানোর জন্য:
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>...catalog_pathএর বাইরে নির্ভরশীল প্রোটোগুলোর ডিরেক্টরি নির্দিষ্ট করে। নির্ভরশীল প্রোটোগুলোর জন্য রাস্ট এপিআই (Rust API) তৈরি করতে, প্রতিটি ডিরেক্টরিতে অবশ্যই একটিAndroid.bpফাইল থাকতে হবে। এই ফাইলে অবশ্যই একটিrust_protobufবিল্ড টার্গেট অন্তর্ভুক্ত থাকতে হবে।ঐচ্ছিক:
--variant <VARIANT>ডিফল্টরূপে এটি
RuntimeConfigথাকে এবং এটি সেই মোড নির্দিষ্ট করে, যেটিতে রানটাইম কনফিগারেশন জেনারেটরকে চলতে হবে।RuntimeConfigSOME/IP এবং ডায়াগনস্টিকসের জন্য রানটাইম কনফিগারেশন ফাইল তৈরি করে।RuntimeConfigPrebuiltsবিল্ড ফাইল তৈরি করে। এই ফাইলগুলোতে আগে থেকে তৈরি করা মডিউল থাকে। আপনি এই মডিউলগুলো ব্যবহার করেRuntimeConfigভ্যারিয়েন্ট দ্বারা তৈরি ফাইলগুলোকে অন্যান্য মডিউলে বা VM ইমেজে অন্তর্ভুক্ত করতে পারেন।ঐচ্ছিক:
--service-bundle-name <SERVICE_BUNDLE_NAME>যে সার্ভিস বান্ডেলের উপর রানটাইম কনফিগারেশন জেনারেটর প্রয়োগ করা হবে, তা নির্দিষ্ট করার জন্য আর্গুমেন্ট।
ঐচ্ছিক:
--package-name <PACKAGE_NAME>সার্ভিস বান্ডেল নেম আর্গুমেন্টের পাশাপাশি, রানটাইম কনফিগ জেনারেটরটি যে সার্ভিস বান্ডেল প্যাকেজ নেমের উপর প্রয়োগ করা হবে, তা নির্দিষ্ট করতে এই আর্গুমেন্টটি ব্যবহার করুন।
ঐচ্ছিক:
--filegroup <FILEGROUP>RuntimeConfigPrebuiltsমোড ব্যবহার করার সময় এটি অবশ্যই সংজ্ঞায়িত করতে হবে।