বিশেষ বৈশিষ্ট্য

বিক্রেতা বৈশিষ্ট্য

অংশীদার-নির্দিষ্ট প্রয়োজনগুলিকে সমর্থন করার জন্য, VHAL বিক্রেতার বৈশিষ্ট্যগুলিকে অনুমতি দেয় যা শুধুমাত্র সিস্টেম API-এর মাধ্যমে অ্যাক্সেস করা হয়। বিক্রেতার বৈশিষ্ট্যগুলির সাথে কাজ করার সময় নিম্নলিখিত নির্দেশিকাগুলি ব্যবহার করুন:

  • সর্বদা প্রথমে সিস্টেমের বৈশিষ্ট্যগুলি ব্যবহার করার চেষ্টা করুন, বিক্রেতার বৈশিষ্ট্যগুলি শেষ অবলম্বন হিসাবে ব্যবহার করা উচিত যখন সিস্টেমের বৈশিষ্ট্যগুলির কোনওটিই আপনার প্রয়োজনীয়তাকে ফিড করে না।
  • ইকোসিস্টেম ফ্র্যাগমেন্টেশন প্রতিরোধ করার জন্য, ভেন্ডর প্রোপার্টিগুলিকে অবশ্যই SDK VehiclePropertyIds- এ বিদ্যমান গাড়ির বৈশিষ্ট্যগুলিকে প্রতিলিপি করতে ব্যবহার করা উচিত নয়৷ আরও জানতে, বিভাগ 2.5, CDD-এ স্বয়ংচালিত প্রয়োজনীয়তা দেখুন।
  • সম্পত্তি আইডি তৈরি করতে নিম্নলিখিত ক্ষেত্রগুলি ব্যবহার করুন:
    • VehiclePropertyGroup:VENDOR VENDOR Group শুধুমাত্র বিক্রেতা সম্পত্তির জন্য ব্যবহৃত হয়।
    • VehicleArea একটি উপযুক্ত এলাকার ধরন নির্বাচন করুন।
    • VehiclePropertyType সঠিক ডেটা টাইপ নির্বাচন করুন। BYTES প্রকার কাঁচা ডেটা পাস করার অনুমতি দেয়, যা বেশিরভাগ ক্ষেত্রেই যথেষ্ট। বিক্রেতা বৈশিষ্ট্যের মাধ্যমে ঘন ঘন বড় ডেটা পাঠানো পুরো গাড়ির নেটওয়ার্ক অ্যাক্সেসকে ধীর করে দিতে পারে। একটি বড় পেলোড যোগ করার সময় সতর্কতা অবলম্বন করুন.
    • Property ID বিক্রেতা সম্পত্তির জন্য একটি অনন্য দুই-বাইট আইডি চয়ন করুন। উদাহরণস্বরূপ, 0x1234।
  • ভেন্ডর সম্পত্তির একটি সংক্ষিপ্ত বিবরণ সহ VehiclePropConfig.configString পূরণ করুন। এটি বৈধতা চেক সরঞ্জামগুলিকে বিদ্যমান গাড়ির বৈশিষ্ট্যগুলির দুর্ঘটনাজনিত প্রতিলিপিকে পতাকাঙ্কিত করার অনুমতি দেয়। উদাহরণস্বরূপ, "XYZ এর জন্য আমার কাস্টম সম্পত্তি।"
  • CarPropertyManager (জাভা উপাদানগুলির জন্য) বা libvhalclient (নেটিভের জন্য) মাধ্যমে অ্যাক্সেস করুন। অন্য গাড়ির API গুলিকে সংশোধন করবেন না কারণ এটি ভবিষ্যতে সামঞ্জস্যের সমস্যাগুলির দিকে নিয়ে যেতে পারে৷

বিক্রেতা বৈশিষ্ট্য অনুমতি

যেকোনো সংজ্ঞায়িত বিক্রেতার বৈশিষ্ট্যের জন্য ডিফল্ট অনুমতি হল android.car.Car.PERMISSION_VENDOR_EXTENSION । অনুমতি নিয়ন্ত্রণের সূক্ষ্ম কণিকা জন্য, SUPPORT_CUSTOMIZE_VENDOR_PERMISSION বৈশিষ্ট্য সমর্থন করুন। এই STATIC প্রপার্টিটি শুধুমাত্র পঠনযোগ্য, যার জন্য এর কনফিগারেশন অ্যারে বিক্রেতার বৈশিষ্ট্যগুলির জন্য অনুমতিগুলি নির্দিষ্ট করে৷ configArray নিম্নরূপ সেট করা হয়েছে (আমি একটি পূর্ণসংখ্যা 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 যানবাহনের বৈশিষ্ট্য দেখুন।

সিট এবং স্টিয়ারিং

আসন এবং স্টিয়ারিং হুইল বৈশিষ্ট্য দেখুন.

এইচভিএসি

আপনি HVAC-সম্পর্কিত বৈশিষ্ট্য সেট করে HVAC নিয়ন্ত্রণ করতে VHAL ব্যবহার করতে পারেন। বেশিরভাগ এইচভিএসি বৈশিষ্ট্য গাড়ির নির্দিষ্ট এলাকার সাথে যুক্ত, যদিও বেশ কয়েকটি বৈশ্বিক বৈশিষ্ট্য। নমুনা সংজ্ঞায়িত বৈশিষ্ট্য অন্তর্ভুক্ত:

সম্পত্তি উদ্দেশ্য
HVAC_TEMPERATURE_SET এলাকার আইডি প্রতি তাপমাত্রা সেট করুন।
HVAC_POWER_ON এলাকার আইডি প্রতি HVAC সিস্টেমের পাওয়ার স্টেট।

HVAC বৈশিষ্ট্যগুলির জন্য যেগুলি HVAC সিস্টেমের পাওয়ার অবস্থার উপর নির্ভরশীল, সেগুলিকে অবশ্যই HVAC_POWER_ON কনফিগারেশন অ্যারেতে তালিকাভুক্ত করতে হবে৷ HVAC বৈশিষ্ট্যগুলির একটি সম্পূর্ণ তালিকা দেখতে, VehicleProperty.aidlHVAC_* অনুসন্ধান করুন, সমর্থিত সিস্টেম বৈশিষ্ট্যগুলি দেখুন। বৈশিষ্ট্য

AreaIDs-এ নন-গ্লোবাল VehicleArea টাইপ HVAC প্রপার্টি ম্যাপ করার নিয়ম: সম্পত্তি দ্বারা প্রভাবিত একটি নির্দিষ্ট VehicleArea টাইপের জন্য প্রতিটি "এলাকা" অবশ্যই সেই সম্পত্তির জন্য একটি এলাকা আইডিতে অন্তর্ভুক্ত করতে হবে। তাপমাত্রা নিয়ন্ত্রকদের সেই আসনগুলিতে বরাদ্দ করা হয়েছে যেগুলি তারা "সবচেয়ে বেশি প্রভাবিত করে", তবে প্রতিটি প্রভাবিত আসন অবশ্যই একবার অন্তর্ভুক্ত করতে হবে। বাম বা ডান AreaID-এ কেন্দ্রের পিছনের সিটের বরাদ্দ করা স্বেচ্ছাচারী বলে মনে হতে পারে, তবে একটি AreaID-তে প্রতিটি প্রভাবিত আসন অন্তর্ভুক্ত করা নিশ্চিত করে যে গাড়ির সমস্ত আসনগুলি প্রকাশ করা হয়েছে এবং প্রতিটি আসনকে প্রভাবিত করার একটি যুক্তিসঙ্গত উপায় উপলব্ধ।

উদাহরণ 1

একটি গাড়ির সামনে দুটি আসন (ROW_1_LEFT, ROW_1_RIGHT) এবং তিনটি পিছনের আসন (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT)। দুটি তাপমাত্রা নিয়ন্ত্রণ ইউনিট রয়েছে, একটি চালকের দিক এবং যাত্রীর পক্ষে। HVAC_TEMPERATURE_SET এর জন্য AreaID-এর একটি বৈধ ম্যাপিং সেট একটি দ্বি-উপাদান অ্যারে হবে:

  • ROW_1_LEFT | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT

একই হার্ডওয়্যার কনফিগারেশনের জন্য একটি বিকল্প ম্যাপিং হবে:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_RIGHT

উদাহরণ 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 AreaIDs-এ ম্যাপ করার একটি যুক্তিসঙ্গত উপায় হল তিনটি উপাদান অ্যারে:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

উদাহরণ 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_LEFT | ROW_1_RIGHT

যদি HVAC_AUTO_ON ড্রাইভার সাইড এবং প্যাসেঞ্জার সাইডের জন্য দুটি আলাদা কন্ট্রোল ইউনিট থাকে, তাহলে একটি বিকল্প ম্যাপিং হবে দুটি উপাদান অ্যারে:

  • ROW_1_LEFT
  • ROW_1_RIGHT

ইউরোপীয় ইউনিয়ন সাধারণ নিরাপত্তা প্রবিধান সম্মতি

যদি গাড়িটিকে Android এর মাধ্যমে ইউরোপীয় ইউনিয়ন জেনারেল সেফটি রেগুলেশন (GSR) প্রয়োজনীয়তা মেনে চলতে হয়, তাহলে GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT সম্পত্তি অবশ্যই সমর্থিত হবে। EU রেগুলেশন 2019/2144-এ সংজ্ঞায়িত একটি উদাহরণ হল GSR-ISA (বুদ্ধিমান গতি সহায়তা)। এই প্রপার্টিটি Android 13 থেকে AIDL VHAL-এ যোগ করা হয়েছে, তবে, Android 12 প্রকাশের পর থেকে এটি কার সার্ভিসে সমর্থিত। এই সম্পত্তিটিকে GsrComplianceRequirementType enum দ্বারা সংজ্ঞায়িত সম্ভাব্য মান সহ একটি পঠনযোগ্য স্ট্যাটিক গ্লোবাল ইন্টিজার প্রপার্টি হিসাবে সংজ্ঞায়িত করা হয়েছে:

নাম মান বর্ণনা
GSR_COMPLIANCE_NOT_REQUIRED 0 জিএসআর সম্মতির প্রয়োজন নেই
GSR_COMPLIANCE_REQUIRED_V1 1 GSR সম্মতি প্রয়োজন এবং প্রয়োজনীয় সমাধান সংস্করণ 1

HIDL VHAL (Android 12-এ) এই সম্পত্তিটিকে সমর্থন করতে, বিক্রেতাদের অবশ্যই প্রপার্টি ID হার্ড-কোড করতে হবে। উদাহরণস্বরূপ, নিম্নলিখিত স্নিপেটটি দেখায় যে এটি কীভাবে 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 ব্যবহার করুন।
  • Android 12-এ, প্রপার্টি আইডি হিসাবে 0x11400F47 এর হার্ড-কোডেড মান ব্যবহার করুন। এই সম্পত্তির অনুমতি প্রয়োজন, Car#PERMISSION_CAR_INFO