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

هر ویژگی پشتیبانی شده توسط یک پیکربندی ویژگی که از طریق ساختار 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) است. برای ویژگی‌هایی که می‌توانید سفارشی کنید، به 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 قابل دستیابی باشند. لازم نیست همه نرخ‌های نمونه‌برداری بین حداقل و حداکثر پشتیبانی شوند.

انواع ملک

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

نوع ملک ارزش توضیحات
STRING 0x00100000 ویژگی رشته‌ای، از فیلد 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 ۰x۰۰۶۰۰۰۰۰ ویژگی Float ، از اولین عنصر در فیلد floatValues ​​در مقدار ویژگی Vehicle استفاده می‌کند.
FLOAT_VEC 0x00610000 ویژگی Float[] ، از عناصر موجود در فیلد floatValues ​​در مقدار ویژگی Vehicle استفاده می‌کند.
BYTES 0x00700000 ویژگی byte[] ، از عناصر موجود در فیلد byteValues ​​در مقدار ویژگی Vehicle استفاده می‌کند.
MIXED 0x00e00000 ویژگی نوع ترکیبی. هر ترکیبی از انواع اسکالر یا برداری. فرمت دقیق باید در آرایه پیکربندی در پیکربندی ویژگی ارائه شود.

برای ویژگی‌های نوع vendor MIXED، configArray باید با این ساختار قالب‌بندی شود:

  • configArray[0] ، عدد ۱ نشان می‌دهد که ویژگی دارای مقدار String است.
  • configArray[1] ، عدد ۱ نشان می‌دهد که ویژگی دارای مقدار Boolean است.
  • configArray[2] ، عدد ۱ نشان می‌دهد که ویژگی دارای مقدار Integer است.
  • configArray[3] ، عدد نشان دهنده اندازه Integer[] در ویژگی است.
  • configArray[4] ، عدد ۱ نشان می‌دهد که ویژگی دارای مقدار Long است.
  • configArray[5] ، عدد نشان دهنده اندازه Long[] در ویژگی است.
  • configArray[6] ، عدد ۱ نشان می‌دهد که ویژگی دارای مقدار 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 باشند، نادیده گرفته می‌شود.
  • برای خاصیت سراسری، اگر نیاز به تعریف حداقل و حداکثر مقدار باشد، باید از یک پیکربندی ناحیه با شناسه ناحیه ۰ استفاده شود.
  • این مقدار استاتیک است و حتی اگر حداقل یا حداکثر مقدار در زمان اجرا تغییر کند، تغییر نخواهد کرد. برای مقدار حداقل یا حداکثر پویا IVehicle#getMinMaxSupportedValue را پیاده‌سازی کنید.
minInt64Value و maxInt64Value
  • مقدار حداقل و حداکثر اختیاری برای ویژگی‌های نوع INT64 در زمان بوت. برای سایر انواع باید 0 باشد. اگر هر دو 0 باشند، نادیده گرفته می‌شود.
  • برای خاصیت سراسری، اگر نیاز به تعریف حداقل و حداکثر مقدار باشد، باید از یک پیکربندی ناحیه با شناسه ناحیه ۰ استفاده شود.
  • این مقدار استاتیک است و حتی اگر حداقل یا حداکثر مقدار در زمان اجرا تغییر کند، تغییر نخواهد کرد. برای مقدار حداقل یا حداکثر پویا IVehicle#getMinMaxSupportedValue را پیاده‌سازی کنید.
minFloatValue و maxFloatValue
  • مقدار حداقل و حداکثر اختیاری برای ویژگی‌های نوع Float در زمان بوت. برای سایر انواع باید 0 باشد. اگر هر دو 0.0 باشند، نادیده گرفته می‌شود.
  • برای خاصیت سراسری، اگر نیاز به تعریف حداقل و حداکثر مقدار باشد، باید از یک پیکربندی ناحیه با شناسه ناحیه ۰ استفاده شود.
  • این مقدار استاتیک است و حتی اگر حداقل یا حداکثر مقدار در زمان اجرا تغییر کند، تغییر نخواهد کرد. برای مقدار حداقل یا حداکثر پویا IVehicle#getMinMaxSupportedValue را پیاده‌سازی کنید.
( جدید در اندروید ۱۴ )
supportedEnumValues
  • لیست اختیاری از مقادیر پشتیبانی شده در زمان بوت، در صورتی که ویژگی به عنوان یک ویژگی از نوع enum تعریف شده باشد. اگر مشخص نشده باشد (خالی) یا قبل از Android 14 باشد، فرض بر این است که تمام مقادیر enum پشتیبانی می‌شوند.
  • برای خاصیت سراسری، اگر نیاز به تعریف مقادیر enum پشتیبانی‌شده باشد، باید از یک پیکربندی ناحیه با شناسه ناحیه ۰ استفاده شود.
  • این مقدار استاتیک است و حتی اگر مقادیر پشتیبانی شده در زمان اجرا تغییر کنند، تغییر نخواهد کرد. برای مقادیر پشتیبانی شده پویا IVehicle#getSupportedValuesLists را پیاده‌سازی کنید.
  • این فقط برای ویژگی‌های نوع enum اعمال می‌شود. برای انواع دیگر، این فیلد باید خالی باشد. برای نمایش مقادیر پشتیبانی شده برای انواع غیر enum، IVehicle#getSupportedValuesLists استفاده کنید.
( قابلیت جدید در اندروید ۱۵ )
supportVariableUpdateRate
  • آیا نرخ به‌روزرسانی متغیر پشتیبانی می‌شود؟ این فقط برای ویژگی‌های پیوسته اعمال می‌شود.
  • اگر این true باشد، برنامه می‌تواند نرخ به‌روزرسانی متغیر را برای یک اشتراک فعال کند تا رویدادهای به‌روزرسانی ویژگی را فقط زمانی که مقدار ویژگی تغییر می‌کند دریافت کند (که در واقع ویژگی‌های پیوسته را به عنوان ویژگی‌های در حال تغییر در نظر می‌گیرد).
  • اگر همه مشترکین یک ویژگی، نرخ به‌روزرسانی متغیر را فعال کنند، درخواست اشتراک به VHAL نرخ به‌روزرسانی متغیر را برای ویژگی فعال می‌کند و VHAL باید رویدادهای به‌روزرسانی ویژگی را فقط زمانی ارسال کند که مقدار ویژگی تغییر کند.
  • اگر هر مشترکی درخواست نرخ به‌روزرسانی ثابت داشته باشد، درخواست اشتراک به VHAL نرخ به‌روزرسانی متغیر را برای آن ویژگی غیرفعال می‌کند و AAOS رویدادهای تکراری را برای کلاینت‌هایی که نرخ به‌روزرسانی متغیر درخواست می‌کنند، فیلتر می‌کند.
  • اکیداً توصیه می‌شود که برای عملکرد بهتر، از نرخ به‌روزرسانی متغیر برای همه ویژگی‌های پیوسته غیر ضربان قلب پشتیبانی شود، مگر اینکه داده‌های ویژگی بزرگ باشند (برای مثال، یک آرایه بایتی با اندازه ۱ کیلوبایت) و ممکن است حجم زیادی از حافظه را برای ذخیره‌سازی اشغال کنند.
( قابلیت جدید در اندروید ۱۶ )
hasSupportedValueInfo
  • اگر null نباشد، نشان می‌دهد که آیا این ویژگی حداقل یا حداکثر مقادیر پشتیبانی‌شده یا فهرست مقادیر پشتیبانی‌شده را مشخص می‌کند.
  • این فیلد کنترل می‌کند که آیا APIهای مقدار پویای پشتیبانی‌شده: getMinMaxSupportedValue ، getSupportedValuesLists ، subscribeSupportedValueChange ، unsubscribeSupportedValueChange برای این شناسه ویژگی و شناسه منطقه پشتیبانی می‌شوند یا خیر.
  • اگر null نباشد، VHAL باید این APIها را برای این شناسه ویژگی و شناسه منطقه پیاده‌سازی کند.
  • اگر null یا در اندروید ۱۵ یا پایین‌تر باشد، مقادیر پویای پشتیبانی‌شده برای این شناسه ویژگی و شناسه منطقه پشتیبانی نمی‌شوند. کلاینت باید از اطلاعات مقدار استاتیک پشتیبانی‌شده ارائه شده در پیکربندی ویژگی وسیله نقلیه استفاده کند.

انواع منطقه

به صورت enum در VehicleArea.aidl تعریف شده‌اند. انواع ناحیه‌های پشتیبانی‌شده در زیر فهرست شده‌اند.

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

هر ویژگی منطقه‌بندی شده باید از یک نوع ناحیه از پیش تعریف شده استفاده کند. هر نوع ناحیه دارای مجموعه‌ای از پرچم‌های بیتی است که در یک enum برای نوع ناحیه تعریف شده‌اند. به عنوان مثال، ناحیه SEAT enumهای 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
  • ...

شناسه‌های منطقه

ویژگی‌های منطقه‌بندی‌شده از طریق شناسه‌های ناحیه (Area IDs) آدرس‌دهی می‌شوند. هر ویژگی منطقه‌بندی‌شده ممکن است از یک یا چند شناسه ناحیه پشتیبانی کند. یک شناسه ناحیه شامل یک یا چند پرچم از enum مربوطه است. برای مثال، یک ویژگی که از VehicleAreaSeat استفاده می‌کند، ممکن است از شناسه‌های ناحیه زیر استفاده کند:

مورد توضیحات
ROW_1_LEFT | ROW_1_RIGHT شناسه منطقه برای هر دو صندلی جلو اعمال می‌شود.
ROW_2_LEFT فقط برای صندلی عقب سمت چپ اعمال می‌شود.
ROW_2_RIGHT فقط برای صندلی عقب سمت راست اعمال می‌شود.

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