বিক্রেতার সম্পত্তি
অংশীদার-নির্দিষ্ট চাহিদা পূরণের জন্য, VHAL কেবলমাত্র সিস্টেম API-এর মাধ্যমে অ্যাক্সেসযোগ্য বিক্রেতা বৈশিষ্ট্যগুলিকে অনুমতি দেয়। বিক্রেতা বৈশিষ্ট্যগুলির সাথে কাজ করার সময় নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করুন:
- সর্বদা প্রথমে সিস্টেম প্রোপার্টি ব্যবহার করার চেষ্টা করুন, যখন কোনও সিস্টেম প্রোপার্টি আপনার প্রয়োজনীয়তা পূরণ করে না তখন শেষ অবলম্বন হিসাবে ভেন্ডর প্রোপার্টি ব্যবহার করা উচিত।
- বাস্তুতন্ত্রের বিভাজন রোধ করার জন্য, SDK VehiclePropertyIds- এ ইতিমধ্যেই বিদ্যমান যানবাহনের বৈশিষ্ট্যগুলিকে প্রতিলিপি করার জন্য বিক্রেতার বৈশিষ্ট্যগুলি ব্যবহার করা উচিত নয়। আরও জানতে, CDD-তে বিভাগ 2.5, মোটরগাড়ির প্রয়োজনীয়তা দেখুন।
- প্রপার্টি আইডি তৈরি করতে নিম্নলিখিত ক্ষেত্রগুলি ব্যবহার করুন:
-
VehiclePropertyGroup:VENDORবিক্রেতা গ্রুপ শুধুমাত্র বিক্রেতা সম্পত্তির জন্য ব্যবহৃত হয়। -
VehicleAreaএকটি উপযুক্ত এলাকার ধরণ নির্বাচন করুন। -
VehiclePropertyTypeসঠিক ডেটা টাইপ নির্বাচন করুন। BYTES টাইপ কাঁচা ডেটা পাস করার অনুমতি দেয়, যা বেশিরভাগ ক্ষেত্রেই যথেষ্ট। ভেন্ডর প্রোপার্টিগুলির মাধ্যমে ঘন ঘন বড় ডেটা পাঠানো পুরো গাড়ির নেটওয়ার্ক অ্যাক্সেসকে ধীর করে দিতে পারে। বড় পেলোড যোগ করার সময় সতর্ক থাকুন। -
Property IDবিক্রেতার প্রপার্টির জন্য একটি অনন্য দুই-বাইট আইডি বেছে নিন। উদাহরণস্বরূপ, 0x1234।
-
-
VehiclePropConfig.configStringএ ভেন্ডর প্রপার্টির সংক্ষিপ্ত বিবরণ পূরণ করুন। এটি ভ্যালিডিটি চেক টুলগুলিকে বিদ্যমান গাড়ির প্রপার্টির দুর্ঘটনাজনিত প্রতিলিপি চিহ্নিত করতে সাহায্য করে। উদাহরণস্বরূপ, "XYZ-এর জন্য আমার কাস্টম প্রপার্টি।" - CarPropertyManager (জাভা কম্পোনেন্টের জন্য) অথবা
libvhalclient(নেটিভের জন্য) এর মাধ্যমে অ্যাক্সেস করুন। অন্যান্য গাড়ির API পরিবর্তন করবেন না কারণ এটি করলে ভবিষ্যতে সামঞ্জস্যের সমস্যা হতে পারে।
বিক্রেতা সম্পত্তির অনুমতি
যেকোনো সংজ্ঞায়িত বিক্রেতা বৈশিষ্ট্যের জন্য ডিফল্ট অনুমতি হল android.car.Car.PERMISSION_VENDOR_EXTENSION । অনুমতি নিয়ন্ত্রণের সূক্ষ্ম গ্রানুলারিটির জন্য, SUPPORT_CUSTOMIZE_VENDOR_PERMISSION বৈশিষ্ট্যটি সমর্থন করুন। এই STATIC বৈশিষ্ট্যটি কেবল পঠনযোগ্য, যার জন্য এর কনফিগার অ্যারে বিক্রেতা বৈশিষ্ট্যের জন্য অনুমতিগুলি নির্দিষ্ট করে। configArray নিম্নরূপ সেট করা হয়েছে (i হল একটি পূর্ণসংখ্যা যা 0 থেকে শুরু হয়):
-
configArray[3 * i]propId, বিক্রেতার সম্পত্তির জন্য সম্পত্তি আইডি। -
configArray[3 * i + 1]VehicleVendorPermission.aidlএ একটি enum যা সম্পত্তির মান পড়ার অনুমতি নির্দেশ করে। -
configArray[3 * i + 2]VehicleVendorPermission.aidlএ একটি enum যা সম্পত্তির মান লেখার অনুমতি নির্দেশ করে।
উদাহরণস্বরূপ, নিম্নলিখিত কনফিগারেশন অ্যারে দুটি বিক্রেতা বৈশিষ্ট্য, vendor_prop_1 এবং vendor_prop_2 , কে অনুমতি পাওয়ার জন্য কনফিগার করে:
-
vendor_prop_1জন্যandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEATপড়ার জন্য এবংandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEATলেখার জন্য প্রয়োজন। -
vendor_prop-2জন্যandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFOপড়তে হবে, এবং এটি Android অ্যাপের জন্য লেখা যায় না।
configArray = { PERMISSION_SET_VENDOR_CATEGORY_SEAT vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE }
এই অ্যারেতে না থাকা বিক্রেতার বৈশিষ্ট্যগুলি ডিফল্ট বিক্রেতার অনুমতি নেয়। যখন PERMISSION_NOT_ACCESSIBLE নির্বাচন করা হয়, তখন Android অ্যাপগুলি সম্পত্তিটি অ্যাক্সেস করতে পারে না। উদাহরণস্বরূপ, Android অ্যাপগুলি vendor_prop_2 এর জন্য একটি মান লিখতে পারে না। শুধুমাত্র নেটিভ VHAL ক্লায়েন্টরা এই বৈশিষ্ট্যটিতে লিখতে পারে।
উন্নত ড্রাইভার সহায়তা ব্যবস্থা (ADAS)
ADAS যানবাহনের বৈশিষ্ট্য দেখুন।আসন এবং স্টিয়ারিং
SEAT এবং STEERING_WHEEL বৈশিষ্ট্য দেখুন।
এইচভিএসি
আপনি HVAC-সম্পর্কিত বৈশিষ্ট্য সেট করে HVAC নিয়ন্ত্রণ করতে VHAL ব্যবহার করতে পারেন। বেশিরভাগ HVAC বৈশিষ্ট্য গাড়ির নির্দিষ্ট এলাকার সাথে সম্পর্কিত, যদিও বেশ কয়েকটি বিশ্বব্যাপী বৈশিষ্ট্য। নমুনা সংজ্ঞায়িত বৈশিষ্ট্যগুলির মধ্যে রয়েছে:
| সম্পত্তি | উদ্দেশ্য |
|---|---|
HVAC_TEMPERATURE_SET | প্রতি এলাকার আইডি অনুযায়ী তাপমাত্রা সেট করুন। |
HVAC_POWER_ON | প্রতি এলাকা আইডিতে HVAC সিস্টেমের পাওয়ার অবস্থা। |
HVAC সিস্টেমের পাওয়ার স্টেটের উপর নির্ভরশীল HVAC প্রোপার্টিগুলির জন্য, সেগুলিকে HVAC_POWER_ON কনফিগারেশন অ্যারেতে তালিকাভুক্ত করতে হবে। HVAC প্রোপার্টিগুলির সম্পূর্ণ তালিকা দেখতে, VehicleProperty.aidl এ HVAC_* অনুসন্ধান করুন, Supported System Properties . প্রোপার্টি দেখুন।
নন-গ্লোবাল ভেহিকলএরিয়া টাইপ HVAC প্রোপার্টিগুলিকে AreaID-তে ম্যাপ করার নিয়ম: সম্পত্তি দ্বারা প্রভাবিত একটি নির্দিষ্ট VehicleArea টাইপের প্রতিটি "এরিয়া" অবশ্যই সেই প্রোপার্টির জন্য একটি এরিয়া আইডিতে অন্তর্ভুক্ত করতে হবে। তাপমাত্রা নিয়ন্ত্রকদের সেই আসনগুলিতে বরাদ্দ করা হয় যেগুলি তারা "সবচেয়ে বেশি প্রভাবিত করে", তবে প্রতিটি প্রভাবিত আসন ঠিক একবার অন্তর্ভুক্ত করতে হবে। বাম বা ডান AreaID-তে কেন্দ্রের পিছনের সিটের বরাদ্দ ইচ্ছামত মনে হতে পারে, তবে প্রতিটি প্রভাবিত আসনকে ঠিক একটি AreaID-তে অন্তর্ভুক্ত করা নিশ্চিত করে যে গাড়ির সমস্ত আসন প্রকাশ করা হয়েছে এবং প্রতিটি আসনকে প্রভাবিত করার একটি যুক্তিসঙ্গত উপায় উপলব্ধ।
উদাহরণ ১
একটি গাড়িতে দুটি সামনের আসন (ROW_1_LEFT, ROW_1_RIGHT) এবং তিনটি পিছনের আসন (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) থাকে। দুটি তাপমাত্রা নিয়ন্ত্রণ ইউনিট রয়েছে, ড্রাইভার এবং যাত্রী উভয় পক্ষের জন্য একটি করে। HVAC_TEMPERATURE_SET এর জন্য AreaID-এর একটি বৈধ ম্যাপিং সেট দুটি-উপাদানের অ্যারে হবে:
- ROW_1_বাম | ROW_2_বাম
- ROW_1_ডান | ROW_2_সেন্টার | ROW_2_ডান
একই হার্ডওয়্যার কনফিগারেশনের জন্য একটি বিকল্প ম্যাপিং হবে:
- ROW_1_বাম | ROW_2_সেন্টার | ROW_2_বাম
- ROW_1_ডান | ROW_2_ডান
উদাহরণ ২
একটি গাড়িতে তিনটি আসনের সারি থাকে, সামনের সারিতে দুটি আসন (ROW_1_LEFT, ROW_1_RIGHT) এবং দ্বিতীয় সারিতে তিনটি আসন (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) এবং তৃতীয় সারিতে (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT)। তিনটি তাপমাত্রা নিয়ন্ত্রণ ইউনিট রয়েছে, ড্রাইভারের দিক, যাত্রীর দিক এবং পিছনের দিকের জন্য একটি করে। HVAC_TEMPERATURE_SET AreaID-তে ম্যাপ করার একটি যুক্তিসঙ্গত উপায় হল একটি তিনটি উপাদানের অ্যারে:
- ROW_1_বাম
- সারি_১_ডান
- ROW_2_বাম | ROW_2_সেন্টার | ROW_2_ডান | ROW_3_বাম | ROW_3_সেন্টার | ROW_3_ডান
উদাহরণ ৩
একটি গাড়িতে দুটি সামনের আসন (ROW_1_LEFT, ROW_1_RIGHT) এবং তিনটি পিছনের আসন (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) থাকে। ধরুন গাড়িটি কেবল দুটি সামনের আসনের জন্য HVAC_AUTO_ON সমর্থন করে। HVAC_AUTO_ON এর জন্য AreaID-এর একটি বৈধ ম্যাপিং সেট একটি একক উপাদান অ্যারে হবে:
- ROW_1_বাম | ROW_1_ডান
যদি HVAC_AUTO_ON ড্রাইভার এবং যাত্রী উভয় পক্ষের জন্য দুটি পৃথক নিয়ন্ত্রণ ইউনিট থাকে, তাহলে একটি বিকল্প ম্যাপিং হবে দুটি উপাদানের অ্যারে:
- ROW_1_বাম
- সারি_১_ডান
তথ্য_বহিরাগত_মাত্রা
একটি গাড়ির বাহ্যিক মাত্রা মিলিমিটারে পরিমাপ করা হয়, যেমনটি চিত্র ১-এ দেখানো হয়েছে।


এই টেবিলে বর্ণিত বৈশিষ্ট্যগুলি ব্যবহার করে একটি গাড়ির বাহ্যিক মাত্রা নির্ধারণ করুন।
| যানবাহন সম্পত্তি | ভিএইচএএল ক্ষেত্র | বিবরণ |
|---|---|---|
| উচ্চতা | int32Values[0] | ভূমি এবং গাড়ির সর্বোচ্চ বিন্দুর মধ্যে উল্লম্ব দূরত্ব। এটি ধরে নেয় যে সাধারণত কারখানার চাকা স্ফীত থাকে। |
| দৈর্ঘ্য | int32Values[1] | গাড়ির সামনের এবং পিছনের বাইরেরতম বিন্দুর মধ্যে অনুভূমিক দূরত্ব। |
| আয়না বাদে প্রস্থ | int32Values[2] | গাড়ির প্রতিটি পাশের দুটি বাইরের বিন্দুর মধ্যে অনুভূমিক দূরত্ব, পাশের আয়নাগুলি বাদ দিয়ে। |
| আয়না সহ প্রস্থ | int32Values[3] | গাড়ির প্রতিটি পাশের দুটি বাইরেরতম বিন্দুর মধ্যে অনুভূমিক দূরত্ব, যার মধ্যে সাইড মিররও রয়েছে। |
| চাকার বেস | int32Values[4] | গাড়ির সামনের এবং পিছনের চাকার কেন্দ্রের দূরত্ব। |
| ট্র্যাক প্রস্থ, সামনের দিকে | int32Values[5] | সামনের চাকার মধ্যে দূরত্ব, একটি টায়ারের ট্রেডের কেন্দ্র রেখা থেকে বিপরীত টায়ারের ট্রেডের কেন্দ্র রেখা পর্যন্ত পরিমাপ করা হয়। |
| ট্র্যাকের প্রস্থ, পিছনের দিক | int32Values[6] | পিছনের চাকার মধ্যে দূরত্ব, একটি টায়ারের ট্রেডের কেন্দ্র রেখা থেকে বিপরীত টায়ারের ট্রেডের কেন্দ্র রেখা পর্যন্ত পরিমাপ করা হয়। | কার্ব-টু-কার্ব টার্নিং ব্যাস | int32Values[7] | সম্পূর্ণ লক করা স্টিয়ারিং হুইল দিয়ে সম্পূর্ণ বাঁক নেওয়ার সময় গাড়ির বাইরের চাকা দ্বারা তৈরি বৃত্তের ব্যাস। |
ইউরোপীয় ইউনিয়নের সাধারণ নিরাপত্তা নিয়ন্ত্রণ সম্মতি
যদি গাড়িটি অ্যান্ড্রয়েডের মাধ্যমে ইউরোপীয় ইউনিয়নের সাধারণ নিরাপত্তা নিয়ন্ত্রণ (GSR) প্রয়োজনীয়তা মেনে চলে, তাহলে GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT বৈশিষ্ট্যটি সমর্থিত হতে হবে। ব্যবহারের একটি উদাহরণ হল GSR-ISA (ইন্টেলিজেন্ট স্পিড অ্যাসিস্ট) যা EU রেগুলেশন 2019/2144-এ সংজ্ঞায়িত করা হয়েছে। এই বৈশিষ্ট্যটি Android 13 থেকে AIDL VHAL-এ যোগ করা হয়েছে, তবে, Android 12 প্রকাশের পর থেকে এটি গাড়ি পরিষেবাতে সমর্থিত। এই বৈশিষ্ট্যটি একটি পঠনযোগ্য স্ট্যাটিক গ্লোবাল ইন্টিজার বৈশিষ্ট্য হিসাবে সংজ্ঞায়িত করা হয়েছে, যার সম্ভাব্য মান GsrComplianceRequirementType enum দ্বারা সংজ্ঞায়িত করা হয়েছে:
| নাম | মূল্য | বিবরণ |
|---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED | 0 | জিএসআর সম্মতি বাধ্যতামূলক নয় |
GSR_COMPLIANCE_REQUIRED_V1 | ১ | GSR সম্মতি প্রয়োজন এবং প্রয়োজনীয়তা সমাধান সংস্করণ হল 1। |
HIDL VHAL (Android 12-এ) এই প্রপার্টিটি সাপোর্ট করার জন্য, বিক্রেতাদের অবশ্যই প্রপার্টি আইডি হার্ড-কোড করতে হবে। উদাহরণস্বরূপ, নিম্নলিখিত স্নিপেটটি দেখায় যে HIDL VHAL DefaultConfig.h রেফারেন্সে এটি কীভাবে সাপোর্ট করে:
{
.config =
{
// GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
.prop = 0x11400F47,
.access = VehiclePropertyAccess::READ,
.changeMode = VehiclePropertyChangeMode::STATIC,
},
// GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1
.initialValue = {.int32Values = {1}},
} AIDL VHAL (Android 13 থেকে) এই প্রপার্টিটি সমর্থন করার জন্য, বিক্রেতারা VehicleProperty.h থেকে প্রপার্টি আইডি এবং GsrComplianceRequirementType.h থেকে enum ব্যবহার করতে পারেন। উদাহরণস্বরূপ, AIDL VHAL DefaultProperties.json রেফারেন্সের মতো:
{
"property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
"defaultValue": {
"int32Values": [
"GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1"
]
}
} একটি Android অ্যাপ থেকে এই বৈশিষ্ট্যটি পড়তে, CarPropertyManager.getIntProperty ব্যবহার করুন।
- Android 13 এবং উচ্চতর সংস্করণে, সম্পত্তি আইডি হিসেবে
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCEব্যবহার করুন। - অ্যান্ড্রয়েড ১২-তে, 0x11400F47 এর হার্ড-কোডেড মানটি প্রপার্টি আইডি হিসেবে ব্যবহার করুন। এই প্রপার্টির জন্য অনুমতি প্রয়োজন,
Car#PERMISSION_CAR_INFO।