املاک فروشنده
برای پشتیبانی از نیازهای خاص شریک، VHAL به ویژگی های فروشنده اجازه می دهد که فقط از طریق API های سیستم قابل دسترسی باشند. هنگام کار با ویژگی های فروشنده از دستورالعمل های زیر استفاده کنید:
- همیشه سعی کنید ابتدا از ویژگی های سیستم استفاده کنید، از ویژگی های فروشنده باید به عنوان آخرین راه حل استفاده شود زمانی که هیچ یک از ویژگی های سیستم نیاز شما را تامین نمی کند.
- برای جلوگیری از تکه تکه شدن اکوسیستم، ویژگیهای فروشنده نباید برای تکرار ویژگیهای وسیله نقلیه که قبلاً در SDK VehiclePropertyIds وجود دارد، استفاده شود. برای کسب اطلاعات بیشتر، بخش 2.5، الزامات خودرو در CDD را ببینید.
- برای تولید Property ID از فیلدهای زیر استفاده کنید:
-
VehiclePropertyGroup:VENDOR
VENDOR گروه فقط برای خواص فروشنده استفاده می شود. -
VehicleArea
نوع منطقه مناسب را انتخاب کنید. -
VehiclePropertyType
نوع داده مناسب را انتخاب کنید. نوع BYTES اجازه ارسال داده های خام را می دهد که در بیشتر موارد کافی است. ارسال داده های بزرگ به طور مکرر از طریق ویژگی های فروشنده می تواند دسترسی کل شبکه خودرو را کند کند. هنگام اضافه کردن محموله بزرگ مراقب باشید. -
Property ID
یک شناسه منحصر به فرد دو بایتی برای دارایی فروشنده انتخاب کنید. به عنوان مثال، 0x1234.
-
-
VehiclePropConfig.configString
را با توضیح کوتاهی از ویژگی vendor پر کنید. این به ابزارهای بررسی اعتبار اجازه می دهد تا تکرار تصادفی ویژگی های وسیله نقلیه موجود را علامت گذاری کنند. به عنوان مثال، "مالیات سفارشی من برای XYZ." - دسترسی از طریق CarPropertyManager (برای اجزای جاوا) یا از طریق
libvhalclient
(برای بومی). API های دیگر خودرو را تغییر ندهید زیرا انجام این کار می تواند منجر به مشکلات سازگاری در آینده شود.
مجوز مالکیت فروشنده
مجوز پیشفرض برای هر ویژگی فروشنده تعریفشده android.car.Car.PERMISSION_VENDOR_EXTENSION
است. برای جزئیات دقیقتر کنترل مجوز، از ویژگی SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
پشتیبانی کنید. این ویژگی STATIC فقط خواندنی است، که آرایه پیکربندی آن مجوزهای ویژگی های فروشنده را مشخص می کند. configArray
به صورت زیر تنظیم شده است (i یک عدد صحیح است که از 0 شروع می شود):
-
configArray[3 * i]
propId، شناسه ویژگی برای ویژگی فروشنده. -
configArray[3 * i + 1]
یک عدد درVehicleVendorPermission.aidl
برای نشان دادن اجازه خواندن مقدار ویژگی. -
configArray[3 * i + 2]
یک عدد درVehicleVendorPermission.aidl
برای نشان دادن اجازه نوشتن مقدار ویژگی.
به عنوان مثال، آرایه پیکربندی زیر دو ویژگی vendor، vendor_prop_1
و vendor_prop_2
را برای داشتن مجوزها پیکربندی می کند:
-
vendor_prop_1
بهandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
برای خواندن،android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
برای نوشتن نیاز دارد. -
vendor_prop-2
برای خواندن بهandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO
نیاز دارد و برای برنامه های Android قابل نوشتن نیست.
configArray = { PERMISSION_SET_VENDOR_CATEGORY_SEAT vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE }
ویژگی های فروشنده که در این آرایه نیستند، مجوز پیش فرض فروشنده را می گیرند. وقتی PERMISSION_NOT_ACCESSIBLE
انتخاب شده است، برنامههای Android نمیتوانند به دارایی دسترسی داشته باشند. در مثال، برنامههای Android نمیتوانند مقداری برای vendor_prop_2
بنویسند. فقط مشتریان بومی VHAL می توانند در این ویژگی بنویسند.
سیستم های کمک راننده پیشرفته (ADAS)
مشخصات خودرو ADAS را ببینید.صندلی و فرمان
مشخصات صندلی و فرمان را ببینید.
تهویه مطبوع
با تنظیم ویژگی های مربوط به HVAC می توانید از VHAL برای کنترل HVAC استفاده کنید. اکثر خصوصیات HVAC با مناطق خاصی در خودرو مرتبط هستند، اگرچه چندین ویژگی جهانی هستند. ویژگی های تعریف شده نمونه عبارتند از:
اموال | هدف |
---|---|
HVAC_TEMPERATURE_SET | تنظیم درجه حرارت در هر منطقه ID. |
HVAC_POWER_ON | وضعیت توان سیستم تهویه مطبوع به ازای شناسه منطقه. |
برای خصوصیات HVAC که به وضعیت توان سیستم HVAC وابسته هستند، باید در آرایه پیکربندی HVAC_POWER_ON
فهرست شوند. برای مشاهده لیست کاملی از ویژگی های HVAC، HVAC_*
در VehicleProperty.aidl
جستجو کنید، به ویژگی های سیستم پشتیبانی شده مراجعه کنید. خواص
قوانین مربوط به نگاشت خصوصیات تهویه مطبوع غیر GLOBAL VehicleArea به AreaID ها: هر "منطقه" برای یک نوع VehicleArea
خاص که تحت تأثیر ویژگی قرار می گیرد، باید در شناسه منطقه برای آن ویژگی گنجانده شود. کنترلکنندههای دما به صندلیهایی اختصاص داده میشوند که آنها «بیشترین تأثیر را دارند»، اما هر صندلی آسیبدیده باید دقیقاً یک بار گنجانده شود. تخصیص صندلی عقب مرکزی به سمت چپ یا راست AreaID ممکن است خودسرانه به نظر برسد، اما گنجاندن هر صندلی آسیبدیده دقیقاً در یک AreaID تضمین میکند که صندلیهای خودرو همگی بیان شدهاند و راه معقولی برای تأثیرگذاری روی هر صندلی در دسترس است.
مثال 1
یک خودرو دارای دو صندلی جلو (ROW_1_LEFT، ROW_1_RIGHT) و سه صندلی عقب (ROW_2_LEFT، ROW_2_CENTER، ROW_2_RIGHT) است. دو واحد کنترل دما وجود دارد، یکی برای سمت راننده و دیگری برای سمت سرنشین. یک مجموعه نگاشت معتبر از AreaID ها برای HVAC_TEMPERATURE_SET
یک آرایه دو عنصری خواهد بود:
- ROW_1_LEFT | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
یک نگاشت جایگزین برای همان پیکربندی سخت افزاری می تواند این باشد:
- ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
- ROW_1_RIGHT | ROW_2_RIGHT
مثال 2
یک خودرو دارای سه ردیف صندلی با دو صندلی در ردیف جلو (ROW_1_LEFT، ROW_1_RIGHT) و سه صندلی در ردیف دوم (ROW_2_LEFT، ROW_2_CENTER، ROW_2_RIGHT) و ردیف سوم (ROW_3_LEFT، ROW_3_3_CENTER، ROW) است. سه واحد کنترل دما وجود دارد، یکی برای سمت راننده، سمت سرنشین و عقب. یک راه معقول برای نگاشت HVAC_TEMPERATURE_SET
به AreaID، یک آرایه سه عنصری است:
- ROW_1_LEFT
- ROW_1_RIGHT
- ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT
مثال 3
یک خودرو دارای دو صندلی جلو (ROW_1_LEFT، ROW_1_RIGHT) و سه صندلی عقب (ROW_2_LEFT، ROW_2_CENTER، ROW_2_RIGHT) است. فرض کنید ماشین از HVAC_AUTO_ON فقط برای دو صندلی جلو پشتیبانی می کند. یک مجموعه نگاشت معتبر از AreaID ها برای HVAC_AUTO_ON یک آرایه تک عنصری خواهد بود:
- ROW_1_LEFT | ROW_1_RIGHT
اگر HVAC_AUTO_ON
دو واحد کنترل مجزا برای سمت راننده و سرنشین داشته باشد، یک نقشه جایگزین یک آرایه دو عنصری خواهد بود:
- ROW_1_LEFT
- ROW_1_RIGHT
انطباق با مقررات ایمنی عمومی اتحادیه اروپا
اگر خودرو باید از طریق Android با الزامات مقررات ایمنی عمومی اتحادیه اروپا (GSR) مطابقت داشته باشد، ویژگی GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
باید پشتیبانی شود. یک مورد استفاده مثال GSR-ISA (دستیار سرعت هوشمند) همانطور که در مقررات اتحادیه اروپا 2019/2144 تعریف شده است. این ویژگی در AIDL VHAL از Android 13 اضافه شده است، با این حال، از زمان انتشار Android 12 در Car Service پشتیبانی میشود. این ویژگی بهعنوان یک ویژگی عدد صحیح جهانی استاتیک فقط خواندنی تعریف میشود، با مقادیر ممکن که توسط GsrComplianceRequirementType
enum تعریف شده است:
نام | ارزش | توضیحات |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED | 0 | انطباق با GSR مورد نیاز نیست |
GSR_COMPLIANCE_REQUIRED_V1 | 1 | انطباق با GSR مورد نیاز است و نسخه راه حل مورد نیاز 1 است. |
برای پشتیبانی از این ویژگی در HIDL VHAL (در اندروید 12)، فروشندگان باید شناسه دارایی را سخت کد کنند. به عنوان مثال، قطعه زیر نشان می دهد که چگونه این مورد در مرجع HIDL VHAL DefaultConfig.h
پشتیبانی می شود:
{ .config = { // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT .prop = 0x11400F47, .access = VehiclePropertyAccess::READ, .changeMode = VehiclePropertyChangeMode::STATIC, }, // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1 .initialValue = {.int32Values = {1}}, }
برای پشتیبانی از این ویژگی در AIDL VHAL (از Android 13)، فروشندگان میتوانند از شناسه ویژگی از VehicleProperty.h
و enum از GsrComplianceRequirementType.h
استفاده کنند. به عنوان مثال، همانطور که در مرجع AIDL VHAL DefaultProperties.json
:
{ "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT", "defaultValue": { "int32Values": [ "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1" ] } }
برای خواندن این ویژگی از یک برنامه Android، از CarPropertyManager.getIntProperty
استفاده کنید.
- در Android نسخه 13 و بالاتر، از
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
به عنوان شناسه دارایی استفاده کنید. - در اندروید 12، از مقدار رمزگذاری شده 0x11400F47 به عنوان شناسه ویژگی استفاده کنید. این ویژگی به مجوز
Car#PERMISSION_CAR_INFO
نیاز دارد.