যানবাহনের বৈশিষ্ট্য

যানবাহন হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার (ভিএইচএএল) ইন্টারফেস OEM গুলি প্রয়োগ করতে পারে এমন বৈশিষ্ট্যগুলিকে সংজ্ঞায়িত করে এবং এতে সম্পত্তি মেটাডেটা রয়েছে (উদাহরণস্বরূপ, সম্পত্তিটি একটি int কিনা এবং কোন পরিবর্তন মোড অনুমোদিত)৷ VHAL ইন্টারফেস একটি সম্পত্তি অ্যাক্সেস (পড়ুন, লিখুন, সদস্যতা) উপর ভিত্তি করে, যা একটি নির্দিষ্ট ফাংশন জন্য একটি বিমূর্ততা।

HAL ইন্টারফেস

VHAL নিম্নলিখিত ইন্টারফেস ব্যবহার করে:

  • getAllPropConfigs() তৈরি করে (vec<VehiclePropConfig>propConfigs)
    VHAL দ্বারা সমর্থিত সমস্ত বৈশিষ্ট্যের কনফিগারেশন তালিকাভুক্ত করুন। CarService শুধুমাত্র সমর্থিত বৈশিষ্ট্য ব্যবহার করে।
  • getPropConfigs(vec<int32_t> props) তৈরি করে (StatusCode status,vec<VehiclePropConfig> propConfigs);
    নির্বাচিত বৈশিষ্ট্যের কনফিগারেশন ফেরত দিন।
  • set(VehiclePropValue propValue) জেনারেট করে (StatusCodestatus);
    সম্পত্তির একটি মান লিখুন। লেখার ফলাফল সম্পত্তি প্রতি সংজ্ঞায়িত করা হয়.
  • subscribe(IVehicleCallback callback, vec<SubscribeOptions> options) তৈরি করে (StatusCode status);
    একটি সম্পত্তি মান পরিবর্তন নিরীক্ষণ শুরু করুন. জোনযুক্ত সম্পত্তির জন্য, unsubscribe(IVehicleCallback callback, int32_t propId) জেনারেট করে (StatusCode status);

VHAL নিম্নলিখিত কলব্যাক ইন্টারফেস ব্যবহার করে:

  • oneway onPropertyEvent(vec<VehiclePropValue>propValues);
    যানবাহনের সম্পত্তির মান পরিবর্তনের বিজ্ঞপ্তি দেয়। শুধুমাত্র সাবস্ক্রাইব করা সম্পত্তির জন্য করা উচিত.
  • oneway onPropertySetError(StatusCode errorCode,int32_t propId,int32_tareaId);
    বৈশ্বিক VHAL স্তরের ত্রুটি বা সম্পত্তি প্রতি ত্রুটি ফেরত দিন। গ্লোবাল ত্রুটির কারণে HAL পুনরায় চালু হয়, যার ফলে অন্যান্য উপাদানগুলি (অ্যাপ্লিকেশন সহ) পুনরায় চালু হতে পারে।

যানবাহনের বৈশিষ্ট্য

বৈশিষ্ট্যগুলি কেবল-পঠন, কেবলমাত্র লিখতে (ভিএইচএএল স্তরে তথ্য প্রেরণ করতে ব্যবহৃত) বা পড়তে এবং লিখতে পারে (বেশিরভাগ বৈশিষ্ট্যের সমর্থন ঐচ্ছিক)। প্রতিটি সম্পত্তি একটি int32 কী দ্বারা স্বতন্ত্রভাবে চিহ্নিত করা হয় এবং একটি পূর্বনির্ধারিত প্রকার ( value_type ):

  • BYTES
  • BOOLEAN
  • EPOCH_TIME
  • FLOAT
  • FLOAT[]
  • INT32
  • INT32[]
  • INT64
  • INT64[]
  • STRING
  • MIXED

সম্পত্তি দ্বারা সমর্থিত অঞ্চলের সংখ্যার উপর ভিত্তি করে একটি জোনযুক্ত সম্পত্তির একাধিক মান থাকতে পারে।

এলাকার ধরন

VHAL একাধিক এলাকার ধরন সংজ্ঞায়িত করে:

এলাকার ধরন বর্ণনা
GLOBAL এই সম্পত্তি একটি একক এবং একাধিক এলাকা নেই.
WINDOW উইন্ডোর উপর ভিত্তি করে এলাকা, VehicleAreaWindow enum ব্যবহার করে।
MIRROR আয়নার উপর ভিত্তি করে এলাকা, VehicleAreaMirror enum ব্যবহার করে।
SEAT আসন ভিত্তিক এলাকা, VehicleAreaSeat enum ব্যবহার করে।
DOOR দরজার উপর ভিত্তি করে এলাকা, VehicleAreaDoor enum ব্যবহার করে।
WHEEL চাকার উপর ভিত্তি করে এলাকা, VehicleAreaWheel enum ব্যবহার করে।

প্রতিটি জোনযুক্ত সম্পত্তি একটি পূর্ব-সংজ্ঞায়িত এলাকার ধরন ব্যবহার করতে হবে। প্রতিটি এলাকার ধরণে এলাকার প্রকারের জন্য একটি enum-এ সংজ্ঞায়িত বিট পতাকার একটি সেট রয়েছে। উদাহরণস্বরূপ, SEAT এলাকা VehicleAreaSeat enums সংজ্ঞায়িত করে:

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

এলাকা আইডি

জোনযুক্ত বৈশিষ্ট্যগুলি এলাকা আইডির মাধ্যমে সম্বোধন করা হয়। প্রতিটি জোনযুক্ত সম্পত্তি এক বা একাধিক এলাকা আইডি সমর্থন করতে পারে। একটি এলাকা আইডি তার নিজ নিজ এনাম থেকে এক বা একাধিক পতাকা নিয়ে গঠিত। উদাহরণস্বরূপ, VehicleAreaSeat ব্যবহার করে একটি সম্পত্তি নিম্নলিখিত এলাকা আইডি ব্যবহার করতে পারে:

আইটেম বর্ণনা
ROW_1_LEFT | ROW_1_RIGHT এরিয়া আইডি উভয় সামনের আসনের জন্য প্রযোজ্য।
ROW_2_LEFT শুধুমাত্র পিছনের বাম আসনে প্রযোজ্য।
ROW_2_RIGHT শুধুমাত্র পিছনের ডান আসনে প্রযোজ্য।

সম্পত্তি অবস্থা

প্রতিটি সম্পত্তির মান একটি VehiclePropertyStatus মান সহ আসে। এটি সম্পত্তির বর্তমান অবস্থা নির্দেশ করে:

আইটেম বর্ণনা
AVAILABLE সম্পত্তি উপলব্ধ এবং মান বৈধ.
UNAVAILABLE সম্পত্তি মান বর্তমানে অনুপলব্ধ. একটি সমর্থিত সম্পত্তির জন্য ক্ষণস্থায়ীভাবে অক্ষম বৈশিষ্ট্যগুলির জন্য ব্যবহৃত হয়।
ERROR এই সম্পত্তির সাথে কিছু ভুল আছে।

একটি সম্পত্তি কনফিগার করা হচ্ছে

প্রতিটি সম্পত্তির জন্য কনফিগারেশন তথ্য প্রদান করতে VehiclePropConfig ব্যবহার করুন। তথ্য অন্তর্ভুক্ত:

পরিবর্তনশীল বর্ণনা
access r , w , rw
changeMode পরিবর্তন বনাম ক্রমাগত কিভাবে একটি সম্পত্তি নিরীক্ষণ করা হয় প্রতিনিধিত্ব করে।
areaConfigs areaId , min এবং max মান।
configArray অতিরিক্ত কনফিগারেশন পরামিতি।
configString অতিরিক্ত তথ্য একটি স্ট্রিং হিসাবে পাস.
minSampleRate maxSampleRate
prop সম্পত্তি আইডি, int

হ্যান্ডলিং জোন বৈশিষ্ট্য

একটি জোনযুক্ত সম্পত্তি একাধিক বৈশিষ্ট্যের একটি সংগ্রহের সমতুল্য যেখানে প্রতিটি উপ-সম্পত্তি নির্দিষ্ট এলাকা আইডি মান দিয়ে অ্যাক্সেস করা যেতে পারে।

  • জোনযুক্ত সম্পত্তির জন্য কল get সর্বদা অনুরোধে এরিয়া আইডি অন্তর্ভুক্ত করে। অতএব, অনুরোধ করা এলাকা আইডির জন্য শুধুমাত্র বর্তমান মান ফেরত দেওয়া হয়। যদি সম্পত্তি একটি বিশ্বব্যাপী হয়, তাহলে এরিয়া আইডি 0 হয়।
  • জোনযুক্ত সম্পত্তির জন্য set কল সবসময় অনুরোধে এলাকা আইডি অন্তর্ভুক্ত করে। অতএব, শুধুমাত্র অনুরোধ করা এলাকা আইডি পরিবর্তন করা হয়.
  • subscribe কল সম্পত্তির জন্য সমস্ত এলাকা আইডির জন্য ইভেন্ট তৈরি করে।

কল পান

প্রারম্ভিকতার সময়, সম্পত্তির জন্য মান এখনও উপলব্ধ নাও হতে পারে কারণ ম্যাচিং গাড়ির নেটওয়ার্ক বার্তা এখনও পাওয়া যায়নি৷ এই ধরনের ক্ষেত্রে, get ফিরে আসা উচিত -EAGAIN । কিছু প্রপার্টি (যেমন HVAC) আলাদা চালু/বন্ধ পাওয়ার প্রপার্টি আছে। এই জাতীয় সম্পত্তির get কল করা (যখন চালিত বন্ধ থাকে) একটি ত্রুটি ফেরত দেওয়ার পরিবর্তে একটি UNAVAILABLE স্থিতি ফিরিয়ে দেওয়া উচিত। উদাহরণস্বরূপ, HVAC তাপমাত্রা পান

VHAL HVAC উদাহরণ পান

চিত্র 1 । HVAC তাপমাত্রা পান (CS = CarService, VHAL = Vehicle HAL)

কল সেট করুন

একটি সাধারণ অপারেশনে, একটি set কল গাড়ির নেটওয়ার্ক জুড়ে একটি পরিবর্তনের অনুরোধ করে। একটি set কল আদর্শভাবে একটি অ্যাসিঙ্ক্রোনাস অপারেশন যা যত তাড়াতাড়ি সম্ভব ফিরে আসে, তবে এটি সিঙ্ক্রোনাসও হতে পারে। কিছু set কলের জন্য প্রাথমিক ডেটা প্রস্তুত হওয়ার প্রয়োজন হতে পারে কিন্তু শুরু করার সময়, এই ধরনের ডেটা এখনও উপলব্ধ নাও হতে পারে। এই ধরনের ক্ষেত্রে, set কলটি StatusCode#TRY_AGAIN ফেরত দিতে হবে। আলাদা পাওয়ার চালু এবং বন্ধ থাকা কিছু প্রপার্টি StatusCode#NOT_AVAILABLE বা StatusCode#NOT_AVAILABLE_DISABLED ফেরত দেওয়া উচিত যখন প্রপার্টি পাওয়ার বন্ধ থাকে এবং set করা যাবে না। set কার্যকর না হওয়া পর্যন্ত, get অগত্যা সেট করা একই মান ফেরত দেয় না। উদাহরণস্বরূপ, set HVAC Temperature

VHAL HVAC উদাহরণ সেট করেছে

চিত্র 2 । HVAC তাপমাত্রা সেট করুন (CS = CarService, VHAL = Vehicle HAL)

কাস্টম বৈশিষ্ট্য হ্যান্ডলিং

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

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

HVAC বৈশিষ্ট্য পরিচালনা করা

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

সম্পত্তি উদ্দেশ্য
VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET প্রতি অঞ্চলে তাপমাত্রা সেট করুন।
VEHICLE_PROPERTY_HVAC_RECIRC_ON প্রতি অঞ্চলে পুনঃপ্রবর্তন নিয়ন্ত্রণ করুন।

HVAC বৈশিষ্ট্যগুলির একটি সম্পূর্ণ তালিকা দেখতে, types.halVEHICLE_PROPERTY_HVAC_* অনুসন্ধান করুন। যখন HVAC প্রপার্টি VehicleAreaSeat ব্যবহার করে, তখন এলাকা আইডিতে জোনযুক্ত HVAC প্রপার্টি ম্যাপ করার জন্য অতিরিক্ত নিয়ম প্রযোজ্য হয়। গাড়ির প্রতিটি উপলব্ধ আসন অবশ্যই এরিয়া আইডি অ্যারেতে একটি এরিয়া আইডির অংশ হতে হবে।

উদাহরণ এক. একটি গাড়ির সামনের দুটি আসন রয়েছে ( ROW_1_LEFT, ROW_1_RIGHT ) এবং তিনটি পিছনের আসন ( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT )। গাড়িতে দুটি তাপমাত্রা নিয়ন্ত্রণ ইউনিট রয়েছে: ড্রাইভার সাইড এবং যাত্রীর দিক।

  • HVAC_TEMPERATURE SET এর জন্য এলাকা আইডিগুলির একটি বৈধ ম্যাপিং সেট হল:
    • ROW_1_LEFT | ROW_2_LEFT
    • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
  • একই হার্ডওয়্যার কনফিগারেশনের জন্য একটি বিকল্প ম্যাপিং হল:
    • ROW_1_LEFT | ROW_2_LEFT | ROW_2_CENTER
    • ROW_1_RIGHT | ROW_2_RIGHT

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

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

সেন্সর বৈশিষ্ট্য হ্যান্ডলিং

VHAL সেন্সর বৈশিষ্ট্য বাস্তব সেন্সর ডেটা বা নীতি তথ্য যেমন ড্রাইভিং অবস্থা প্রতিনিধিত্ব করে। কিছু সেন্সর তথ্য (যেমন ড্রাইভিং স্ট্যাটাস এবং ডে/নাইট মোড) কোনো সীমাবদ্ধতা ছাড়াই যেকোন অ্যাপ দ্বারা অ্যাক্সেসযোগ্য কারণ একটি নিরাপদ যানবাহন অ্যাপ্লিকেশন তৈরি করতে ডেটা বাধ্যতামূলক৷ অন্যান্য সেন্সর তথ্য (যেমন গাড়ির গতি) আরও সংবেদনশীল এবং ব্যবহারকারীদের পরিচালনা করতে পারে এমন নির্দিষ্ট অনুমতি প্রয়োজন।

সমর্থিত সেন্সর বৈশিষ্ট্য দেখুন ( types.hal এ)।

যানবাহন মানচিত্র পরিষেবা

যানবাহন মানচিত্র পরিষেবা (ভিএমএস) একটি পাব/সাব ইন্টারফেসের মাধ্যমে ক্লায়েন্টদের মধ্যে মানচিত্র ডেটা আদান-প্রদানের জন্য একটি ব্যবস্থা প্রদান করে যাতে সাধারণ যানবাহন বৈশিষ্ট্যগুলিকে সমর্থন করা যায়, যেমন অ্যাডভান্সড ড্রাইভার অ্যাসিসট্যান্স সিস্টেম (ADAS) ৷ ক্লায়েন্টরা ভিএইচএএল বা বিশেষ সুবিধাপ্রাপ্ত অ্যান্ড্রয়েড অ্যাপ্লিকেশানগুলিতে ভিএমএস সম্পত্তির মাধ্যমে গাড়ির সিস্টেম ইন্টারফেসিং অন্তর্ভুক্ত করতে পারে। VMS-এ ভাগ করা ডেটা গাড়ির সিস্টেম এবং সহায়ক অ্যাপগুলির দ্বারা ব্যবহারের জন্য ম্যাপ ডেটাতে সীমাবদ্ধ করার উদ্দেশ্যে করা হয়েছে।

VMS শুধুমাত্র অ্যান্ড্রয়েড অটোমোটিভ বাস্তবায়নে ব্যবহারের উদ্দেশ্যে করা হয়েছে; AOSP-এ ডিফল্ট ক্লায়েন্ট থাকে না যেগুলি VMS-এ প্রকাশ বা সাবস্ক্রাইব করে। VHAL-এ VMS বৈশিষ্ট্যের জন্য, VmsMessageType enum-এ VHAL 2.0-এ বার্তার ধরন এবং ডেটা স্ট্রাকচার বর্ণনা করা হয়েছে, যা সমর্থিত VMS বার্তাগুলির প্রকারের তালিকা করে। এই enumটি গাড়ির সম্পত্তি পূর্ণসংখ্যা অ্যারেতে প্রথম পূর্ণসংখ্যা হিসাবে ব্যবহৃত হয় এবং বাকি বার্তাটি কীভাবে ডিকোড করা হয় তা নির্ধারণ করে।