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

বিক্রেতার সম্পত্তি

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

  • সর্বদা প্রথমে সিস্টেম প্রোপার্টি ব্যবহার করার চেষ্টা করুন; যখন কোনো সিস্টেম প্রোপার্টিই আপনার প্রয়োজন মেটাতে পারে না, তখন শেষ উপায় হিসেবে ভেন্ডর প্রোপার্টি ব্যবহার করা উচিত।
  • ইকোসিস্টেমের বিভাজন রোধ করতে, SDK VehiclePropertyIds- এ আগে থেকেই বিদ্যমান গাড়ির বৈশিষ্ট্যগুলো প্রতিলিপি করার জন্য ভেন্ডর বৈশিষ্ট্যগুলো ব্যবহার করা যাবে না। আরও জানতে, CDD-এর ২.৫ অনুচ্ছেদ, ‘অটোমোটিভ রিকোয়ারমেন্টস’ দেখুন।
  • প্রপার্টি আইডি তৈরি করতে নিম্নলিখিত ফিল্ডগুলি ব্যবহার করুন:
    • VehiclePropertyGroup:VENDOR 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 হলো একটি পূর্ণসংখ্যা যা ০ থেকে শুরু হয়):

  • 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 প্রয়োজন, এবং এটি অ্যান্ড্রয়েড অ্যাপের জন্য লেখার যোগ্য নয়।
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

এই অ্যারেতে নেই এমন ভেন্ডর প্রপার্টিগুলো ডিফল্ট ভেন্ডর পারমিশন গ্রহণ করে। যখন PERMISSION_NOT_ACCESSIBLE নির্বাচন করা হয়, তখন অ্যান্ড্রয়েড অ্যাপগুলো প্রপার্টিটি অ্যাক্সেস করতে পারে না। উদাহরণে, অ্যান্ড্রয়েড অ্যাপগুলো vendor_prop_2 জন্য কোনো ভ্যালু লিখতে পারে না। শুধুমাত্র নেটিভ VHAL ক্লায়েন্টরাই এই প্রপার্টিতে লিখতে পারে।

উন্নত চালক সহায়তা ব্যবস্থা (ADAS)

ADAS গাড়ির বৈশিষ্ট্যসমূহ দেখুন।

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

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

এইচভিএসি

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

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

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

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

উদাহরণ ১

একটি গাড়িতে দুটি সামনের আসন (ROW_1_LEFT, ROW_1_RIGHT) এবং তিনটি পিছনের আসন (ROW_2_LEFT, ROW_2_CENTER, ROW_2_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) রয়েছে। তিনটি তাপমাত্রা নিয়ন্ত্রণ ইউনিট আছে, যার একটি চালকের দিকের জন্য, একটি যাত্রীর দিকের জন্য এবং একটি পেছনের দিকের জন্য। HVAC_TEMPERATURE_SET AreaIDs-এর সাথে ম্যাপ করার একটি যুক্তিসঙ্গত উপায় হলো তিনটি উপাদানের একটি অ্যারে:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • সারি ২ বাম | সারি ২ কেন্দ্র | সারি ২ ডান | সারি ৩ বাম | সারি ৩ কেন্দ্র | সারি ৩ ডান

উদাহরণ ৩

একটি গাড়িতে সামনে দুটি আসন (ROW_1_LEFT, ROW_1_RIGHT) এবং পিছনে তিনটি আসন (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) আছে। ধরা যাক, গাড়িটি শুধুমাত্র সামনের দুটি আসনের জন্য HVAC_AUTO_ON সমর্থন করে। HVAC_AUTO_ON-এর জন্য AreaIDs-এর একটি বৈধ ম্যাপিং সেট হবে একটি একক উপাদানের অ্যারে:

  • সারি_১_বাম | সারি_১_ডান

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

  • ROW_1_LEFT
  • ROW_1_RIGHT

INFO_EXTERIOR_DIMENSIONS

একটি যানবাহনের বাহ্যিক মাত্রা মিলিমিটারে পরিমাপ করা হয়, যেমনটি চিত্র ১-এ দেখানো হয়েছে।

চিত্র ১. যানবাহনের বাহ্যিক পরিমাপ, সম্মুখ দৃশ্য।
চিত্র ২. যানবাহনের বাহ্যিক পরিমাপ, পার্শ্ব দৃশ্য।

একটি গাড়ির বাহ্যিক মাত্রা নির্ধারণ করতে এই সারণিতে বর্ণিত বৈশিষ্ট্যগুলো ব্যবহার করুন।

যানবাহন সম্পত্তি ভিএইচএএল ক্ষেত্র বর্ণনা
উচ্চতা 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-এ সংজ্ঞায়িত। এই প্রপার্টিটি অ্যান্ড্রয়েড ১৩ থেকে AIDL VHAL-এ যোগ করা হয়েছে, তবে এটি অ্যান্ড্রয়েড ১২ প্রকাশের পর থেকেই কার সার্ভিসে সমর্থিত। এই প্রপার্টিটি একটি রিড-অনলি স্ট্যাটিক গ্লোবাল ইন্টিজার প্রপার্টি হিসাবে সংজ্ঞায়িত করা হয়েছে, যার সম্ভাব্য মানগুলি GsrComplianceRequirementType enum দ্বারা নির্ধারিত হয়।

নাম মূল্য বর্ণনা
GSR_COMPLIANCE_NOT_REQUIRED জিএসআর সম্মতি আবশ্যক নয়
GSR_COMPLIANCE_REQUIRED_V1 জিএসআর (GSR) সম্মতি আবশ্যক এবং প্রয়োজনীয় সমাধানের সংস্করণ হলো ১।

HIDL VHAL-এ (অ্যান্ড্রয়েড ১২-এ) এই প্রপার্টিটি সমর্থন করার জন্য, ভেন্ডরদের অবশ্যই প্রপার্টি আইডিটি হার্ড-কোড করতে হবে। উদাহরণস্বরূপ, নিম্নলিখিত কোড স্নিপেটটি দেখায় যে কীভাবে রেফারেন্স 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-এ (অ্যান্ড্রয়েড ১৩ থেকে) এই প্রপার্টিটি সমর্থন করার জন্য, ভেন্ডররা VehicleProperty.h থেকে প্রপার্টি আইডি এবং GsrComplianceRequirementType.h থেকে enum ব্যবহার করতে পারেন। উদাহরণস্বরূপ, রেফারেন্স AIDL VHAL DefaultProperties.json এর মতো:

{
  "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
  "defaultValue": {
    "int32Values": [
      "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1"
    ]
  }
}

অ্যান্ড্রয়েড অ্যাপ থেকে এই প্রপার্টিটি পড়ার জন্য, CarPropertyManager.getIntProperty ব্যবহার করুন।

  • Android 13 এবং তার পরবর্তী সংস্করণগুলিতে, প্রপার্টি আইডি হিসেবে VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE ব্যবহার করুন।
  • অ্যান্ড্রয়েড ১২-এ, প্রপার্টি আইডি হিসেবে 0x11400F47-এর হার্ড-কোডেড মানটি ব্যবহার করুন। এই প্রপার্টিটির জন্য Car#PERMISSION_CAR_INFO পারমিশনটি প্রয়োজন।