تنظیمات دارایی

هر ویژگی پشتیبانی شده توسط یک پیکربندی ویژگی تعریف شده از طریق ساختار VehiclePropConfig مشخص می شود و دارای فیلدهای زیر است.

میدان توضیحات
prop

شناسه ملک این باید یکی از ویژگی های سیستم تعریف شده از VehicleProperty.aidl یا یک ویژگی فروشنده باشد. شناسه ویژگی با استفاده از بیت یا فیلدهای زیر (راست به چپ) ساخته می شود:

  • (0x0000 0000 ) 16 بیت: شناسه منحصر به فرد از محدوده 0x0100 - 0xffff.
  • (0x00 00 0000) 8 بیت: انواع ویژگی که نوع خاصیت را مشخص می کند.
  • (0x0 0 000000) 4 بیت: انواع ناحیه .
  • ( 0x 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 قابل دستیابی باشند. همه نرخ‌های نمونه بین حداقل و حداکثر نباید پشتیبانی شوند.

انواع املاک

به عنوان enum در VehiclePropertyType.aidl تعریف شده است. انواع اموال پشتیبانی شده در جدول زیر فهرست شده است.

نوع ملک ارزش توضیحات
STRING 0x00100000 ویژگی String، از فیلد stringValue در مقدار ویژگی Vehicle استفاده می کند.
BOOLEAN 0x00200000 ویژگی Boolean ، از اولین عنصر در فیلد int32Values ​​در مقدار ویژگی Vehicle استفاده می کند. 0 به معنای false ، None 0 به معنای true .
INT32 0x00400000 ویژگی Integer ، از اولین عنصر در فیلد int32Values ​​در مقدار ویژگی Vehicle استفاده می کند.
INT32_VEC 0x00410000 ویژگی Integer[] ، از عناصر فیلد int32Values ​​در مقدار ویژگی Vehicle استفاده می کند.
INT64 0x00500000 ویژگی Long، از اولین عنصر در فیلد int64Values ​​در مقدار ویژگی Vehicle استفاده می کند.
INT64_VEC 0x00510000 ویژگی Long[] ، از عناصر فیلد int64Values ​​در مقدار ویژگی Vehicle استفاده می کند.
FLOAT 0x00600000 ویژگی Float ، از اولین عنصر در قسمت floatValues ​​در مقدار ویژگی Vehicle استفاده می کند.
FLOAT_VEC 0x00610000 ویژگی Float[] ، از عناصر فیلد floatValues ​​در مقدار ویژگی Vehicle استفاده می کند.
BYTES 0x00700000 ویژگی byte[] ، از عناصر فیلد byteValues ​​در مقدار ویژگی خودرو استفاده می کند.
MIXED 0x00e00000 خاصیت نوع مختلط هر ترکیبی از انواع اسکالر یا برداری. فرمت دقیق باید در آرایه پیکربندی در پیکربندی ویژگی ارائه شود.

برای ویژگی های نوع MIXED فروشنده، 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
  • حداقل و حداکثر مقدار اختیاری برای ویژگی های نوع Float در زمان راه اندازی. برای همه انواع دیگر باید 0 باشد. اگر هر دو 0.0 باشند نادیده گرفته می شود.
  • برای ویژگی جهانی، اگر مقدار حداقل و حداکثر نیاز به تعریف باشد، باید از یک پیکربندی ناحیه با شناسه ناحیه 0 استفاده شود.
  • این مقدار ثابت است و حتی اگر مقدار حداقل یا حداکثر در زمان اجرا تغییر کند، تغییر نخواهد کرد. IVehicle#getMinMaxSupportedValue برای حداقل یا حداکثر مقدار پویا پیاده سازی کنید.
( جدید در اندروید 14 )
supportedEnumValues
  • لیست اختیاری مقادیر پشتیبانی شده در زمان راه‌اندازی اگر ویژگی به عنوان یک ویژگی نوع enum تعریف شده باشد. اگر مشخص نشده باشد (خالی) یا قبل از Android 14، فرض می شود که تمام مقادیر enum پشتیبانی می شوند.
  • برای ویژگی عمومی، اگر مقادیر enum پشتیبانی شده نیاز به تعریف داشته باشند، باید از یک پیکربندی ناحیه با شناسه ناحیه 0 استفاده شود.
  • این مقدار ثابت است و حتی اگر مقادیر پشتیبانی شده در زمان اجرا تغییر کنند، تغییر نخواهد کرد. IVehicle#getSupportedValuesLists برای مقادیر پشتیبانی شده پویا پیاده سازی کنید.
  • این فقط برای خصوصیات نوع enum اعمال می شود. برای انواع دیگر، این قسمت باید خالی باشد. برای نمایش مقادیر پشتیبانی شده برای سایر انواع غیر enum، از IVehicle#getSupportedValuesLists استفاده کنید.
( جدید در اندروید 15 )
supportVariableUpdateRate
  • اینکه آیا نرخ به‌روزرسانی متغیر پشتیبانی می‌شود یا خیر. این فقط برای خواص پیوسته اعمال می شود.
  • اگر این true باشد، برنامه می‌تواند نرخ به‌روزرسانی متغیر را برای یک اشتراک فعال کند تا رویدادهای به‌روزرسانی دارایی را فقط زمانی که مقدار ویژگی تغییر می‌کند (که ویژگی‌های پیوسته را به عنوان ویژگی‌های در حال تغییر تلقی می‌کند) دریافت کند.
  • اگر همه مشترکین یک ویژگی نرخ به‌روزرسانی متغیر را فعال کنند، درخواست اشتراک VHAL نرخ به‌روزرسانی متغیر را برای ویژگی فعال می‌کند و VHAL باید رویدادهای به‌روزرسانی ویژگی را فقط زمانی ارسال کند که مقدار ویژگی تغییر کند.
  • اگر هر مشترکی درخواست نرخ به‌روزرسانی ثابتی داشته باشد، درخواست اشتراک VHAL نرخ به‌روزرسانی متغیر را برای ویژگی غیرفعال می‌کند و AAOS رویدادهای تکراری را برای مشتریانی که نرخ به‌روزرسانی متغیر درخواست می‌کنند فیلتر می‌کند.
  • به شدت توصیه می‌شود که از نرخ به‌روزرسانی متغیر برای همه ویژگی‌های پیوسته بدون ضربان قلب برای عملکرد بهتر پشتیبانی شود، مگر اینکه داده‌های ویژگی بزرگ باشند (به عنوان مثال، یک آرایه بایت با اندازه ۱k) و ممکن است مقدار زیادی از حافظه را برای ذخیره‌سازی اشغال کند.
( جدید در اندروید 16 )
hasSupportedValueInfo
  • اگر null نباشد، نشان می دهد که آیا این ویژگی حداقل یا حداکثر مقادیر پشتیبانی شده یا لیست مقادیر پشتیبانی شده را مشخص می کند.
  • این فیلد کنترل می‌کند که آیا APIهای ارزش پشتیبانی شده پویا: getMinMaxSupportedValue ، getSupportedValuesLists ، subscribeSupportedValueChange ، unsubscribeSupportedValueChange برای این شناسه ویژگی و شناسه منطقه پشتیبانی می‌شوند یا خیر.
  • اگر null نباشد، VHAL باید این APIها را برای شناسه این ویژگی و شناسه ناحیه پیاده‌سازی کند.
  • اگر null یا در Android 15 یا پایین‌تر باشد، مقادیر پشتیبانی شده پویا برای این شناسه ویژگی و شناسه منطقه پشتیبانی نمی‌شوند. مشتری باید از اطلاعات ارزش پشتیبانی شده استاتیک ارائه شده در پیکربندی ویژگی خودرو استفاده کند.

انواع منطقه

به عنوان enum در VehicleArea.aidl تعریف شده است. انواع مناطق پشتیبانی شده در زیر فهرست شده است.

نوع منطقه ارزش توضیحات
جهانی 0x01000000 این ملک یک اموال جهانی است و چندین ناحیه ندارد.
پنجره 0x03000000 ناحیه مبتنی بر ویندوز، از Enum VehicleAreaWindow استفاده می کند.
آینه 0x04000000 منطقه مبتنی بر آینه، از VehicleAreaMirror enum استفاده می کند.
صندلی 0x05000000 منطقه بر اساس صندلی، از VehicleAreaSeat enum استفاده می کند.
درب 0x06000000 منطقه بر اساس درب، از VehicleAreaDoor enum استفاده می کند.
چرخ 0x07000000 منطقه مبتنی بر چرخ، از VehicleAreaWheel enum استفاده می کند.

هر ویژگی منطقه بندی شده باید از نوع منطقه از پیش تعریف شده استفاده کند. هر نوع ناحیه دارای مجموعه ای از پرچم های بیت است که در یک enum برای نوع ناحیه تعریف شده است. به عنوان مثال، ناحیه SEAT شماره های VehicleAreaSeat تعریف می کند:

  • 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 فقط برای صندلی عقب راست اعمال می شود.

برای کسب اطلاعات بیشتر، HVAC را ببینید.