خواص ویژه

املاک فروشنده

برای پشتیبانی از نیازهای خاص شریک، 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 نیاز دارد.