সম্পত্তি কনফিগারেশন

প্রতিটি সমর্থিত সম্পত্তি VehiclePropConfig কাঠামোর মাধ্যমে সংজ্ঞায়িত একটি সম্পত্তি কনফিগারেশন দ্বারা নির্দিষ্ট করা হয় এবং নিম্নলিখিত ক্ষেত্রগুলি রয়েছে৷

মাঠ বর্ণনা
prop

সম্পত্তি আইডি। এটি অবশ্যই VehicleProperty.aidl থেকে সংজ্ঞায়িত সিস্টেম বৈশিষ্ট্যগুলির একটি হতে হবে বা একটি বিক্রেতা সম্পত্তি। সম্পত্তি আইডি বিট-বা নিম্নলিখিত ক্ষেত্রগুলির (ডান থেকে বাম) ব্যবহার করে তৈরি করা হয়েছে:

  • (0x0000 0000 ) 16 বিট: 0x0100 - 0xffff রেঞ্জ থেকে একটি অনন্য আইডি।
  • (0x00 00 0000) 8 বিট: সম্পত্তির ধরন যা সম্পত্তির ধরন নির্ধারণ করে।
  • (0x0 0 000000) 4 বিট: এলাকার ধরন
  • (0x 0 0000000) 4 বিট: VehiclePropertyGroup এটি হয় SYSTEM (0x10000000) অথবা VENDOR (0x20000000)। আপনি কাস্টমাইজ করতে পারেন এমন বৈশিষ্ট্যগুলির জন্য বিক্রেতার বৈশিষ্ট্যগুলি দেখুন৷

যেমন,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access
  • সম্পত্তি জন্য অ্যাক্সেস মোড. READ , WRITE , বা READ_WRITE এর একটি হতে হবে৷
  • সিস্টেমের বৈশিষ্ট্যগুলির জন্য, এটি অবশ্যই VehicleProperty.aidl এ নথিভুক্ত সংজ্ঞায়িত অ্যাক্সেস মোডগুলির মধ্যে একটি হতে হবে।
  • যে সকল বৈশিষ্ট্যে প্রতি-এরিয়া অ্যাক্সেস আছে, এটি হল প্রতি-এরিয়া অ্যাক্সেসের সর্বাধিক উপসেট, উদাহরণস্বরূপ, যদি বৈশিষ্ট্যগুলির দুটি ক্ষেত্র থাকে যার অ্যাক্সেস READ এবং READ_WRITE , তাহলে এটি READ এ সেট করা উচিত।
changeMode
  • সম্পত্তির জন্য মোড পরিবর্তন করুন. STATIC , ON_CHANGE , বা CONTINUOUS এর মধ্যে একটি হতে হবে৷ STATIC মানে সিস্টেম বুট করার পর সম্পত্তির মান কখনই পরিবর্তিত হয় না। ON_CHANGE মানে VHAL কে রিপোর্ট করতে হবে যখন মান পরিবর্তন হয়। CONTINUOUS মানে সম্পত্তির মান ক্রমাগত পরিবর্তিত হয় এবং VHAL কে অবশ্যই সাবস্ক্রিপশন নমুনা হারের উপর ভিত্তি করে রিপোর্ট করতে হবে।
  • সিস্টেমের বৈশিষ্ট্যগুলির জন্য, এটি অবশ্যই VehicleProperty.aidl এ নথিভুক্ত পরিবর্তন মোডের সমান হতে হবে।
configArray সম্পত্তি-নির্দিষ্ট কনফিগারেশন ধারণ করার জন্য একটি ঐচ্ছিক অ্যারে। খালি হতে পারে। নির্দিষ্ট সিস্টেম বৈশিষ্ট্যের জন্য, উদাহরণস্বরূপ, GEAR_SELECTION , কনফিগার অ্যারের বিশেষ অর্থ রয়েছে এবং অবশ্যই নির্দিষ্ট করা উচিত।
configString সম্পত্তি নির্দিষ্ট কনফিগারেশন ধারণ করার জন্য একটি ঐচ্ছিক স্ট্রিং। খালি হতে পারে।
minSampleRate এবং maxSampleRate অবিচ্ছিন্ন সম্পত্তির জন্য সর্বনিম্ন এবং সর্বাধিক সমর্থিত নমুনা হার (হার্টজে)। সম্পত্তি ক্রমাগত না হলে ব্যবহার করা হয় না। minSampleRate এবং maxSampleRate অবশ্যই VHAL বাস্তবায়নের দ্বারা অর্জনযোগ্য হতে হবে। ন্যূনতম এবং সর্বাধিকের মধ্যে সমস্ত নমুনা হার সমর্থন করা উচিত নয়।

সম্পত্তির ধরন

VehiclePropertyType.aidl এ enums হিসাবে সংজ্ঞায়িত করা হয়েছে। সমর্থিত সম্পত্তির প্রকারগুলি নিম্নলিখিত টেবিলে তালিকাভুক্ত করা হয়েছে।

সম্পত্তির ধরন মান বর্ণনা
STRING 0x00100000 স্ট্রিং প্রপার্টি, যানবাহনের সম্পত্তির মানের মধ্যে stringValue ক্ষেত্র ব্যবহার করে।
BOOLEAN 0x00200000 Boolean প্রপার্টি, যানবাহন সম্পত্তির মানের int32Values ​​ক্ষেত্রের প্রথম উপাদান ব্যবহার করে। 0 মানে false , None 0 মানে true
INT32 0x00400000 Integer সম্পত্তি, যানবাহন সম্পত্তি মান int32Values ​​ক্ষেত্রের প্রথম উপাদান ব্যবহার করে।
INT32_VEC 0x00410000 Integer[] সম্পত্তি, যানবাহন সম্পত্তির মানের int32Values ​​ক্ষেত্রের উপাদানগুলি ব্যবহার করে।
INT64 0x00500000 লং প্রপার্টি, গাড়ির সম্পত্তির মানের int64Values ​​ক্ষেত্রের প্রথম উপাদান ব্যবহার করে।
INT64_VEC 0x00510000 Long[] প্রপার্টি, গাড়ির সম্পত্তির মানের int64Values ​​ক্ষেত্রের উপাদান ব্যবহার করে।
FLOAT 0x00600000 Float প্রপার্টি, ভেহিক্যাল প্রোপার্টি ভ্যালুতে floatValues ​​ক্ষেত্রের প্রথম উপাদান ব্যবহার করে।
FLOAT_VEC 0x00610000 Float[] প্রপার্টি, ভেহিকল প্রপার্টি ভ্যালুতে floatValues ​​ক্ষেত্রের উপাদান ব্যবহার করে।
BYTES 0x00700000 byte[] প্রপার্টি, গাড়ির সম্পত্তি মানের byteValues ক্ষেত্রের উপাদান ব্যবহার করে।
MIXED 0x00e00000 মিশ্র ধরনের সম্পত্তি। স্কেলার বা ভেক্টর প্রকারের যেকোনো সমন্বয়। প্রপার্টি কনফিগারেশনের কনফিগার অ্যারেতে সঠিক বিন্যাস অবশ্যই প্রদান করতে হবে।

বিক্রেতা মিক্সড ধরনের বৈশিষ্ট্যের জন্য, configArray এই কাঠামোতে ফর্ম্যাট করা প্রয়োজন:

  • configArray[0] , 1 নির্দেশ করে প্রপার্টির একটি String মান আছে
  • configArray[1] , 1 নির্দেশ করে প্রপার্টির একটি Boolean মান আছে
  • configArray[2] , 1 ইঙ্গিত করে যে সম্পত্তিটির একটি Integer মান রয়েছে
  • configArray[3] , সংখ্যাটি বৈশিষ্ট্যে Integer[] আকার নির্দেশ করে
  • configArray[4] , 1 ইঙ্গিত করে যে সম্পত্তিটির একটি Long মান রয়েছে
  • configArray[5] , সংখ্যাটি প্রপার্টিতে Long[] এর আকার নির্দেশ করে
  • configArray[6] , 1 নির্দেশ করে প্রপার্টির একটি Float মান আছে
  • configArray[7] , সংখ্যাটি বৈশিষ্ট্যে Float[] এর আকার নির্দেশ করে
  • configArray[8] , সংখ্যাটি বৈশিষ্ট্যে byte[] আকার নির্দেশ করে।

উদাহরণস্বরূপ, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} নির্দেশ করে প্রপার্টির একটি String মান, একটি Boolean মান, একটি Integer মান এবং তিনটি পূর্ণসংখ্যা সহ একটি অ্যারে রয়েছে৷

এলাকা আইডি কনফিগারেশন

প্রতিটি সম্পত্তি কনফিগারেশনে এলাকা আইডি কনফিগারেশনের একটি তালিকাও থাকতে পারে। এই তালিকাটি বৈশ্বিক বৈশিষ্ট্যগুলির জন্য ঐচ্ছিক এবং জোনযুক্ত বৈশিষ্ট্যগুলির জন্য প্রয়োজনীয় (একাধিক সমর্থিত এলাকার বৈশিষ্ট্যগুলি)৷ প্রতিটি এলাকা আইডি কনফিগারেশন নিম্নলিখিত ক্ষেত্র আছে.

মাঠ বর্ণনা
areaId এই এলাকার জন্য আইডি. এলাকা আইডি দেখুন।
minInt32Value এবং maxInt32Value
  • বুট করার সময় INT32 প্রকারের বৈশিষ্ট্যগুলির জন্য ঐচ্ছিক সর্বনিম্ন এবং সর্বোচ্চ মান। অন্য সব ধরনের জন্য 0 হতে হবে। উভয়ই 0 হলে উপেক্ষা করা হয়।
  • বৈশ্বিক সম্পত্তির জন্য, যদি ন্যূনতম এবং সর্বোচ্চ মান সংজ্ঞায়িত করার প্রয়োজন হয়, তাহলে এলাকা আইডি 0 সহ একটি এলাকা কনফিগারেশন ব্যবহার করতে হবে।
  • এই মানটি স্থির এবং রানটাইমে ন্যূনতম বা সর্বোচ্চ মান পরিবর্তিত হলেও পরিবর্তন হবে না। গতিশীল সর্বনিম্ন বা সর্বোচ্চ মানের জন্য IVehicle#getMinMaxSupportedValue প্রয়োগ করুন।
minInt64Value এবং maxInt64Value
  • বুট করার সময় INT64 প্রকারের বৈশিষ্ট্যগুলির জন্য ঐচ্ছিক সর্বনিম্ন এবং সর্বোচ্চ মান। অন্য সব ধরনের জন্য 0 হতে হবে। উভয়ই 0 হলে উপেক্ষা করা হয়।
  • বৈশ্বিক সম্পত্তির জন্য, যদি ন্যূনতম এবং সর্বোচ্চ মান সংজ্ঞায়িত করার প্রয়োজন হয়, তাহলে এলাকা আইডি 0 সহ একটি এলাকা কনফিগারেশন ব্যবহার করতে হবে।
  • এই মানটি স্থির এবং রানটাইমে ন্যূনতম বা সর্বোচ্চ মান পরিবর্তিত হলেও পরিবর্তন হবে না। গতিশীল সর্বনিম্ন বা সর্বোচ্চ মানের জন্য IVehicle#getMinMaxSupportedValue প্রয়োগ করুন।
minFloatValue এবং maxFloatValue
  • বুট করার সময় ফ্লোট টাইপ বৈশিষ্ট্যের জন্য ঐচ্ছিক সর্বনিম্ন এবং সর্বোচ্চ মান। অন্য সব ধরনের জন্য 0 হতে হবে। উভয়ই 0.0 হলে উপেক্ষা করা হয়।
  • বৈশ্বিক সম্পত্তির জন্য, যদি ন্যূনতম এবং সর্বোচ্চ মান সংজ্ঞায়িত করার প্রয়োজন হয়, তাহলে এলাকা আইডি 0 সহ একটি এলাকা কনফিগারেশন ব্যবহার করতে হবে।
  • এই মানটি স্থির এবং রানটাইমে ন্যূনতম বা সর্বোচ্চ মান পরিবর্তিত হলেও পরিবর্তন হবে না। গতিশীল সর্বনিম্ন বা সর্বোচ্চ মানের জন্য IVehicle#getMinMaxSupportedValue প্রয়োগ করুন।
( Android 14 এ নতুন )
supportedEnumValues
  • বুট করার সময় সমর্থিত মানগুলির ঐচ্ছিক তালিকা যদি সম্পত্তিটিকে একটি enum টাইপ সম্পত্তি হিসাবে সংজ্ঞায়িত করা হয়। যদি নির্দিষ্ট করা না থাকে (খালি) বা Android 14 এর আগে, এটা ধরে নেওয়া হয় যে সমস্ত enum মান সমর্থিত।
  • বৈশ্বিক সম্পত্তির জন্য, সমর্থিত enum মান সংজ্ঞায়িত করা প্রয়োজন হলে, এলাকা আইডি 0 সহ একটি এলাকা কনফিগারেশন ব্যবহার করতে হবে।
  • এই মানটি স্থির এবং রানটাইমে সমর্থিত মান পরিবর্তন হলেও পরিবর্তন হবে না। গতিশীল সমর্থিত মানগুলির জন্য IVehicle#getSupportedValuesLists প্রয়োগ করুন।
  • এটি শুধুমাত্র enum ধরনের বৈশিষ্ট্যের জন্য প্রযোজ্য। অন্যান্য ধরনের জন্য, এই ক্ষেত্রটি খালি হতে হবে। অন্যান্য নন-এনাম প্রকারের জন্য সমর্থিত মানগুলি প্রকাশ করতে, IVehicle#getSupportedValuesLists ব্যবহার করুন।
( Android 15 এ নতুন )
supportVariableUpdateRate
  • পরিবর্তনশীল আপডেট রেট সমর্থিত কিনা। এটি শুধুমাত্র অবিচ্ছিন্ন বৈশিষ্ট্যের জন্য প্রযোজ্য।
  • যদি এটি true হয়, তবে সম্পত্তির মান পরিবর্তন হলেই (যা ক্রমাগত বৈশিষ্ট্যগুলিকে অন-চেঞ্জ বৈশিষ্ট্য হিসাবে বিবেচনা করে) সম্পত্তি আপডেট ইভেন্টগুলি পাওয়ার জন্য অ্যাপটি সদস্যতার জন্য পরিবর্তনশীল আপডেট রেট সক্ষম করতে পারে৷
  • যদি একটি সম্পত্তির জন্য সমস্ত গ্রাহক পরিবর্তনশীল আপডেট রেট সক্ষম করে, VHAL-এর সাবস্ক্রিপশন অনুরোধ সম্পত্তির জন্য পরিবর্তনশীল আপডেট রেট সক্ষম করে এবং VHAL-কে অবশ্যই সম্পত্তি আপডেট ইভেন্টগুলি পাঠাতে হবে যখন সম্পত্তির মান পরিবর্তন হয়।
  • যদি কোনো গ্রাহক স্থির আপডেট হারের জন্য অনুরোধ করে, VHAL-এর সাবস্ক্রিপশন অনুরোধ সম্পত্তির জন্য পরিবর্তনশীল আপডেট রেট নিষ্ক্রিয় করে এবং AAOS ক্লায়েন্টদের জন্য সদৃশ ইভেন্টগুলি ফিল্টার করে যা পরিবর্তনশীল আপডেট হারের জন্য অনুরোধ করে।
  • ভাল পারফরম্যান্সের জন্য সমস্ত নন-হার্টবিট ক্রমাগত বৈশিষ্ট্যগুলির পরিবর্তনশীল আপডেট রেট সমর্থন করার জন্য এটি অত্যন্ত সুপারিশ করা হয় যদি না সম্পত্তি ডেটা বড় হয় (উদাহরণস্বরূপ, 1k আকারের একটি বাইট অ্যারে) এবং ক্যাশিংয়ের জন্য প্রচুর পরিমাণে মেমরি দখল করতে পারে।
( Android 16 এ নতুন )
hasSupportedValueInfo
  • যদি null না হয়, তাহলে দেখায় যে এই বৈশিষ্ট্যটি সর্বনিম্ন বা সর্বোচ্চ সমর্থিত মান বা সমর্থিত মান তালিকা নির্দিষ্ট করে কিনা।
  • এই ক্ষেত্রটি নিয়ন্ত্রণ করে যে গতিশীল সমর্থিত মান APIগুলি: getMinMaxSupportedValue , getSupportedValuesLists , subscribeSupportedValueChange , unsubscribeSupportedValueChange এই সম্পত্তি আইডি এবং এলাকা আইডির জন্য সমর্থিত কিনা৷
  • null না হলে, VHAL-কে অবশ্যই এই প্রপার্টি আইডি এবং এরিয়া আইডির জন্য এই APIগুলি প্রয়োগ করতে হবে।
  • যদি null বা Android 15 বা তার নিচের হয়, তাহলে এই প্রপার্টি আইডি এবং এরিয়া আইডির জন্য ডায়নামিক সমর্থিত মান সমর্থিত নয়। ক্লায়েন্টকে অবশ্যই গাড়ির সম্পত্তি কনফিগারেশনে দেওয়া স্ট্যাটিক সমর্থিত মান তথ্য ব্যবহার করতে হবে।

এলাকার ধরন

VehicleArea.aidl এ enums হিসাবে সংজ্ঞায়িত করা হয়েছে। সমর্থিত এলাকার প্রকারগুলি নীচে তালিকাভুক্ত করা হয়েছে৷

এলাকার ধরন মান বর্ণনা
গ্লোবাল 0x01000000 এই সম্পত্তি একটি বিশ্বব্যাপী সম্পত্তি এবং একাধিক এলাকা নেই.
উইন্ডো 0x03000000 উইন্ডোর উপর ভিত্তি করে এলাকা, VehicleAreaWindow enum ব্যবহার করে।
মিরর 0x04000000 আয়নার উপর ভিত্তি করে এলাকা, VehicleAreaMirror enum ব্যবহার করে।
আসন 0x05000000 আসন ভিত্তিক এলাকা, VehicleAreaSeat enum ব্যবহার করে।
দরজা 0x06000000 দরজার উপর ভিত্তি করে এলাকা, VehicleAreaDoor enum ব্যবহার করে।
চাকা 0x07000000 চাকার উপর ভিত্তি করে এলাকা, 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
  • ...

এলাকার আইডি

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

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

আরও জানতে, HVAC দেখুন।