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

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

মাঠ বর্ণনা
prop

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

  • (0x0000 0000 ) ১৬ বিট: 0x0100 - 0xffff পরিসরের মধ্যে একটি অনন্য আইডি।
  • (0x00 00 0000) ৮ বিট: প্রপার্টি টাইপ , যা প্রপার্টিটির ধরন নির্ধারণ করে।
  • (0x0 0 000000) ৪ বিট: এলাকার প্রকারভেদ
  • (0x 0 0000000) ৪ বিট: VehiclePropertyGroup এটি হয় SYSTEM (0x10000000) অথবা VENDOR (0x20000000)। যে প্রোপার্টিগুলো আপনি কাস্টমাইজ করতে পারবেন, সেগুলোর জন্য Vendor Properties দেখুন।

উদাহরণস্বরূপ,
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 এ এনাম (enum) হিসেবে সংজ্ঞায়িত। সমর্থিত প্রপার্টি টাইপগুলো নিম্নলিখিত সারণিতে তালিকাভুক্ত করা হয়েছে।

সম্পত্তির ধরণ মূল্য বর্ণনা
STRING ০x০০১০০০০০ স্ট্রিং প্রপার্টি, যা Vehicle প্রপার্টির value- এর stringValue ফিল্ড ব্যবহার করে।
BOOLEAN ০x০০২০০০০০ Boolean প্রপার্টি, যা Vehicle প্রপার্টির value- এর int32Values ​​ফিল্ডের প্রথম উপাদানটি ব্যবহার করে। 0 মানে false , None 0 মানে true
INT32 ০x০০৪০০০০০ Integer প্রপার্টিটি, Vehicle প্রপার্টির value- এর int32Values ​​ফিল্ডের প্রথম উপাদানটি ব্যবহার করে।
INT32_VEC ০x০০৪১০০০০ Integer[] প্রপার্টিটি, Vehicle প্রপার্টির value- এর int32Values ​​ফিল্ডের উপাদানগুলো ব্যবহার করে।
INT64 ০x০০৫০০০০০ Long প্রপার্টিটি, Vehicle প্রপার্টির value- এর int64Values ​​ফিল্ডের প্রথম উপাদানটি ব্যবহার করে।
INT64_VEC ০x০০৫১০০০০ Long[] প্রপার্টিটি, Vehicle প্রপার্টির value- এর int64Values ​​ফিল্ডের উপাদানগুলো ব্যবহার করে।
FLOAT ০x০০৬০০০০০ Float প্রপার্টি, Vehicle প্রপার্টির value- এর floatValues ​​ফিল্ডের প্রথম উপাদানটি ব্যবহার করে।
FLOAT_VEC ০x০০৬১০০০০ Float[] প্রপার্টিটি, Vehicle প্রপার্টির value- এর floatValues ​​ফিল্ডের উপাদানগুলো ব্যবহার করে।
BYTES ০x০০৭০০০০০ byte[] প্রপার্টিটি, Vehicle প্রপার্টির value- এর 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 টাইপ প্রোপার্টিগুলোর জন্য ঐচ্ছিক সর্বনিম্ন ও সর্বোচ্চ মান। অন্য সব টাইপের জন্য এটি অবশ্যই ০ হতে হবে। উভয়ই ০ হলে এটি উপেক্ষা করা হবে।
  • গ্লোবাল প্রপার্টির ক্ষেত্রে, যদি সর্বনিম্ন এবং সর্বোচ্চ মান নির্ধারণ করার প্রয়োজন হয়, তবে এরিয়া আইডি ০ সহ একটি এরিয়া কনফিগারেশন ব্যবহার করতে হবে।
  • এই মানটি স্থির এবং রানটাইমে সর্বনিম্ন বা সর্বোচ্চ মান পরিবর্তিত হলেও এটি বদলাবে না। পরিবর্তনশীল সর্বনিম্ন বা সর্বোচ্চ মানের জন্য IVehicle#getMinMaxSupportedValue প্রয়োগ করুন।
minInt64Value এবং maxInt64Value
  • বুট করার সময় INT64 টাইপ প্রোপার্টিগুলোর জন্য ঐচ্ছিক সর্বনিম্ন ও সর্বোচ্চ মান। অন্য সব টাইপের জন্য এটি অবশ্যই ০ হতে হবে। উভয়ই ০ হলে এটি উপেক্ষা করা হবে।
  • গ্লোবাল প্রপার্টির ক্ষেত্রে, যদি সর্বনিম্ন এবং সর্বোচ্চ মান নির্ধারণ করার প্রয়োজন হয়, তবে এরিয়া আইডি ০ সহ একটি এরিয়া কনফিগারেশন ব্যবহার করতে হবে।
  • এই মানটি স্থির এবং রানটাইমে সর্বনিম্ন বা সর্বোচ্চ মান পরিবর্তিত হলেও এটি বদলাবে না। পরিবর্তনশীল সর্বনিম্ন বা সর্বোচ্চ মানের জন্য IVehicle#getMinMaxSupportedValue প্রয়োগ করুন।
minFloatValue এবং maxFloatValue
  • বুট করার সময় ফ্লোট টাইপ প্রোপার্টিগুলোর জন্য ঐচ্ছিক সর্বনিম্ন এবং সর্বোচ্চ মান। অন্য সব ধরনের জন্য এটি অবশ্যই ০ হতে হবে। যদি উভয়ই ০.০ হয়, তবে এটি উপেক্ষা করা হবে।
  • গ্লোবাল প্রপার্টির ক্ষেত্রে, যদি সর্বনিম্ন এবং সর্বোচ্চ মান নির্ধারণ করার প্রয়োজন হয়, তবে এরিয়া আইডি ০ সহ একটি এরিয়া কনফিগারেশন ব্যবহার করতে হবে।
  • এই মানটি স্থির এবং রানটাইমে সর্বনিম্ন বা সর্বোচ্চ মান পরিবর্তিত হলেও এটি বদলাবে না। পরিবর্তনশীল সর্বনিম্ন বা সর্বোচ্চ মানের জন্য IVehicle#getMinMaxSupportedValue প্রয়োগ করুন।
( অ্যান্ড্রয়েড ১৪-এর নতুন বৈশিষ্ট্য )
supportedEnumValues
  • প্রপার্টিটি যদি এনাম টাইপ প্রপার্টি হিসেবে সংজ্ঞায়িত করা থাকে, তবে বুট টাইমে সমর্থিত ভ্যালুগুলোর একটি ঐচ্ছিক তালিকা এখানে দেওয়া হলো। যদি এটি নির্দিষ্ট করা না থাকে (খালি) অথবা অ্যান্ড্রয়েড ১৪-এর আগে হয়, তবে ধরে নেওয়া হয় যে সমস্ত এনাম ভ্যালু সমর্থিত।
  • গ্লোবাল প্রপার্টির ক্ষেত্রে, যদি সমর্থিত এনাম ভ্যালু সংজ্ঞায়িত করার প্রয়োজন হয়, তবে এরিয়া আইডি 0 সহ একটি এরিয়া কনফিগারেশন ব্যবহার করতে হবে।
  • এই মানটি স্থির এবং রানটাইমে সমর্থিত মান পরিবর্তিত হলেও এটি বদলাবে না। পরিবর্তনশীল সমর্থিত মানের জন্য IVehicle#getSupportedValuesLists প্রয়োগ করুন।
  • এটি শুধুমাত্র enum টাইপের প্রোপার্টিগুলোর জন্য প্রযোজ্য। অন্যান্য টাইপের ক্ষেত্রে, এই ফিল্ডটি অবশ্যই খালি রাখতে হবে। অন্যান্য নন-enum টাইপের জন্য সমর্থিত মানগুলো প্রকাশ করতে, IVehicle#getSupportedValuesLists ব্যবহার করুন।
( অ্যান্ড্রয়েড ১৫-এর নতুন বৈশিষ্ট্য )
supportVariableUpdateRate
  • পরিবর্তনশীল আপডেট হার সমর্থিত কিনা। এটি শুধুমাত্র অবিচ্ছিন্ন বৈশিষ্ট্যগুলির জন্য প্রযোজ্য।
  • যদি এটি true হয়, তাহলে অ্যাপটি কোনো সাবস্ক্রিপশনের জন্য পরিবর্তনশীল আপডেট হার সক্রিয় করতে পারে, যাতে শুধুমাত্র প্রপার্টির মান পরিবর্তিত হলেই প্রপার্টি আপডেট ইভেন্টগুলো গ্রহণ করা হয় (যা কন্টিনিউয়াস প্রপার্টিগুলোকে অন-চেঞ্জ প্রপার্টি হিসেবে গণ্য করে)।
  • যদি কোনো প্রপার্টির সকল সাবস্ক্রাইবার ভ্যারিয়েবল আপডেট রেট সক্রিয় করে রাখেন, তাহলে VHAL-এর কাছে পাঠানো সাবস্ক্রিপশন অনুরোধটি প্রপার্টিটির জন্য ভ্যারিয়েবল আপডেট রেট সক্রিয় করে দেয় এবং VHAL-কে অবশ্যই শুধুমাত্র প্রপার্টির মান পরিবর্তিত হলেই প্রপার্টি আপডেট ইভেন্ট পাঠাতে হবে।
  • যদি কোনো সাবস্ক্রাইবার নির্দিষ্ট আপডেট রেটের জন্য অনুরোধ করে, তাহলে VHAL-এর কাছে করা সাবস্ক্রিপশন অনুরোধটি সেই প্রপার্টির জন্য পরিবর্তনশীল আপডেট রেট নিষ্ক্রিয় করে দেয় এবং AAOS সেইসব ক্লায়েন্টের জন্য ডুপ্লিকেট ইভেন্টগুলো ফিল্টার করে বাদ দিয়ে দেয়, যারা পরিবর্তনশীল আপডেট রেটের জন্য অনুরোধ করে।
  • উন্নততর পারফরম্যান্সের জন্য হার্টবিট-বহির্ভূত সকল অবিচ্ছিন্ন প্রপার্টির ক্ষেত্রে পরিবর্তনশীল আপডেট রেট সমর্থন করার জন্য জোরালোভাবে সুপারিশ করা হয়, যদি না প্রপার্টির ডেটা বড় হয় (উদাহরণস্বরূপ, ১কে আকারের একটি বাইট অ্যারে) এবং ক্যাশিংয়ের জন্য তা প্রচুর পরিমাণে মেমরি দখল করতে পারে।
( অ্যান্ড্রয়েড ১৬-এর নতুন বৈশিষ্ট্য )
hasSupportedValueInfo
  • যদি null না হয়, তাহলে এটি দেখায় যে এই প্রপার্টিটি সর্বনিম্ন বা সর্বোচ্চ সমর্থিত মান, নাকি সমর্থিত মানগুলোর তালিকা নির্দিষ্ট করে।
  • এই প্রপার্টি আইডি এবং এরিয়া আইডির জন্য getMinMaxSupportedValue , getSupportedValuesLists , subscribeSupportedValueChange , unsubscribeSupportedValueChange মতো ডাইনামিক সাপোর্টেড ভ্যালু এপিআইগুলো সমর্থিত হবে কি না, তা এই ফিল্ডটি নিয়ন্ত্রণ করে।
  • যদি null না হয়, তাহলে VHAL-কে অবশ্যই এই প্রপার্টি আইডি এবং এরিয়া আইডির জন্য এই API-গুলো ইমপ্লিমেন্ট করতে হবে।
  • যদি null অথবা Android 15 বা তার নিচের সংস্করণে, এই প্রপার্টি আইডি এবং এরিয়া আইডির জন্য ডাইনামিক সাপোর্টেড ভ্যালু সমর্থিত নয়। ক্লায়েন্টকে অবশ্যই ভেহিকেল প্রপার্টি কনফিগারেশনে দেওয়া স্ট্যাটিক সাপোর্টেড ভ্যালুর তথ্য ব্যবহার করতে হবে।

এলাকার প্রকারভেদ

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

এলাকার ধরণ মূল্য বর্ণনা
বিশ্বব্যাপী 0x01000000 এই সম্পত্তিটি একটি বৈশ্বিক সম্পত্তি এবং এর একাধিক এলাকা নেই।
জানালা ০x০৩০০০০০০ জানালার উপর ভিত্তি করে এলাকা নির্ধারণ করা হয় এবং এর জন্য VehicleAreaWindow enum ব্যবহৃত হয়।
আয়না ০x০৪০০০০০০ মিরর-ভিত্তিক এলাকা নির্ধারণে VehicleAreaMirror enum ব্যবহৃত হয়।
আসন ০x০৫০০০০০০ আসন সংখ্যার উপর ভিত্তি করে নির্ধারিত এলাকা, যা VehicleAreaSeat enum ব্যবহার করে।
দরজা ০x০৬০০০০০০ দরজার সংখ্যার উপর ভিত্তি করে নির্ধারিত এলাকা, যা VehicleAreaDoor enum ব্যবহার করে।
চাকা ০x০৭০০০০০০ চাকার উপর ভিত্তি করে নির্ধারিত এলাকা, যা VehicleAreaWheel enum ব্যবহার করে।

প্রতিটি জোন করা প্রপার্টিতে অবশ্যই একটি পূর্ব-নির্ধারিত এরিয়া টাইপ ব্যবহার করতে হবে। প্রতিটি এরিয়া টাইপের জন্য একটি enum-এ এক সেট বিট ফ্ল্যাগ সংজ্ঞায়িত করা থাকে। উদাহরণস্বরূপ, SEAT এরিয়া VehicleAreaSeat enum-গুলো সংজ্ঞায়িত করে:

  • 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 দেখুন।