Özel özellikler

Satıcı özellikleri

İş ortağına özgü ihtiyaçları desteklemek için VHAL, yalnızca sistem API'leri aracılığıyla erişilen satıcı özelliklerine izin verir. Satıcı özellikleriyle çalışırken aşağıdaki yönergeleri kullanın:

  • Her zaman önce sistem özelliklerini kullanmaya çalışın; sistem özelliklerinden hiçbiri gereksiniminizi karşılamadığında satıcı özellikleri son çare olarak kullanılmalıdır.
  • Ekosistem parçalanmasını önlemek için satıcı özellikleri, SDK'da zaten mevcut olan araç özelliklerini çoğaltmak için kullanılmamalıdır Araç Özellikleri Ids . Daha fazla bilgi edinmek için CDD'deki Bölüm 2.5, Otomotiv Gereksinimleri'ne bakın.
  • Mülk Kimliğini oluşturmak için aşağıdaki alanları kullanın:
    • VehiclePropertyGroup:VENDOR VENDOR grubu yalnızca satıcı mülkleri için kullanılır.
    • VehicleArea Uygun bir Alan Tipini seçin.
    • VehiclePropertyType Uygun veri türünü seçin. BYTES türü, çoğu durumda yeterli olan ham verilerin aktarılmasına izin verir. Büyük verilerin satıcı mülkleri aracılığıyla sık sık gönderilmesi, tüm araç ağı erişimini yavaşlatabilir. Büyük bir yük eklerken dikkatli olun.
    • Property ID Satıcı mülkü için iki baytlık benzersiz bir kimlik seçin. Örneğin, 0x1234.
  • VehiclePropConfig.configString alanını satıcı özelliğinin kısa bir açıklamasıyla doldurun. Bu, geçerlilik kontrol araçlarının mevcut araç özelliklerinin yanlışlıkla kopyalanmasını işaretlemesine olanak tanır. Örneğin, "XYZ için özel özelliğim."
  • CarPropertyManager (Java bileşenleri için) veya libvhalclient (yerel için) aracılığıyla erişim. Gelecekte uyumluluk sorunlarına yol açabileceğinden diğer araç API'lerini değiştirmeyin.

Satıcı mülk izni

Tanımlanan herhangi bir satıcı özelliği için varsayılan izin android.car.Car.PERMISSION_VENDOR_EXTENSION şeklindedir. İzin kontrolünde daha ayrıntılı bilgi için SUPPORT_CUSTOMIZE_VENDOR_PERMISSION özelliğini destekleyin. Bu STATIC özelliği salt okunurdur ve yapılandırma dizisi satıcı özelliklerine ilişkin izinleri belirtir. configArray şu şekilde ayarlanır (i, 0'dan başlayan bir tamsayıdır):

  • configArray[3 * i] propId, satıcı özelliğinin özellik kimliği.
  • configArray[3 * i + 1] VehicleVendorPermission.aidl özellik değerini okuma iznini gösteren bir numaralandırma.
  • configArray[3 * i + 2] VehicleVendorPermission.aidl özellik değerini yazma iznini gösteren bir numaralandırma.

Örneğin, aşağıdaki yapılandırma dizisi, izinlere sahip olmak için vendor_prop_1 ve vendor_prop_2 olmak üzere iki satıcı özelliğini yapılandırır:

  • vendor_prop_1 , okumak için android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT , yazmak için android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT gerektirir.
  • vendor_prop-2 okunması için android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO gerekir ve Android uygulamaları için yazılamaz.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

Bu dizide bulunmayan satıcı özellikleri, varsayılan satıcı iznini alır. PERMISSION_NOT_ACCESSIBLE seçildiğinde Android uygulamaları bu özelliğe erişemez. Örnekte Android uygulamaları vendor_prop_2 için bir değer yazamıyor. Bu özelliğe yalnızca yerel VHAL istemcileri yazabilir.

Gelişmiş sürücü destek sistemleri (ADAS)

Bkz. ADAS Araç Özellikleri .

KOLTUK ve DİREKSİYON

Bkz . Koltuk ve Direksiyon Özellikleri .

HVAC

HVAC ile ilgili özellikleri ayarlayarak HVAC'ı kontrol etmek için VHAL'i kullanabilirsiniz. Çoğu HVAC özelliği araçtaki belirli alanlarla ilişkilidir, ancak birçoğu küresel özelliklerdir. Örnek tanımlı özellikler şunları içerir:

Mülk Amaç
HVAC_TEMPERATURE_SET Alan kimliği başına sıcaklığı ayarlayın.
HVAC_POWER_ON Alan kimliği başına HVAC sisteminin güç durumu.

HVAC sisteminin güç durumuna bağlı olan HVAC özellikleri için bunların HVAC_POWER_ON yapılandırma dizisinde listelenmesi gerekir. HVAC özelliklerinin tam listesini görmek için, VehicleProperty.aidl dosyasında HVAC_* ifadesini arayın, bkz. Desteklenen Sistem Özellikleri . özellikler.

GLOBAL olmayan AraçArea tipi HVAC özelliklerini AreaID'lerle eşlemeye yönelik kurallar: Özellikten etkilenen belirli bir VehicleArea tipine ait her "alan", o mülkün alan kimliğine dahil edilmelidir. Sıcaklık kontrolörleri "en çok etkiledikleri" koltuklara atanmıştır ancak etkilenen her koltuğun tam olarak bir kez dahil edilmesi gerekir. Orta arka koltuğun sol veya sağ AreaID'ye atanması keyfi görünebilir, ancak etkilenen her koltuğun tam olarak bir AreaID'ye dahil edilmesi, araçtaki tüm koltukların ifade edilmesini ve her koltuğu etkilemenin makul bir yolunun mevcut olmasını sağlar.

örnek 1

Bir arabanın iki ön koltuğu (ROW_1_LEFT, ROW_1_RIGHT) ve üç arka koltuğu (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) vardır. Sürücü tarafı ve yolcu tarafı için birer adet olmak üzere iki adet sıcaklık kontrol ünitesi bulunmaktadır. HVAC_TEMPERATURE_SET için geçerli bir AreaID eşleme seti iki öğeli bir dizi olacaktır:

  • ROW_1_LEFT | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT

Aynı donanım konfigürasyonu için alternatif bir eşleme şöyle olacaktır:

  • ROW_1_LEFT | ROW_2_CENTER | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_RIGHT

Örnek 2

Bir arabada, ön sırada iki koltuk (ROW_1_LEFT, ROW_1_RIGHT) ve ikinci sırada (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) ve üçüncü sırada (ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT) üç koltuk bulunan üç koltuk sırası vardır. Sürücü tarafı, yolcu tarafı ve arka taraf için birer tane olmak üzere üç sıcaklık kontrol ünitesi bulunmaktadır. HVAC_TEMPERATURE_SET AreaID'lerle eşleştirmenin makul bir yolu üç öğeli bir dizidir:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

Örnek 3

Bir arabanın iki ön koltuğu (ROW_1_LEFT, ROW_1_RIGHT) ve üç arka koltuğu (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT) vardır. Arabanın yalnızca iki ön koltuk için HVAC_AUTO_ON'u desteklediğini varsayalım. HVAC_AUTO_ON için geçerli bir Alan Kimliği eşleme seti, tek bir öğe dizisi olacaktır:

  • ROW_1_LEFT | ROW_1_RIGHT

HVAC_AUTO_ON sürücü ve yolcu tarafı için iki ayrı kontrol ünitesi olsaydı, alternatif bir eşleme iki öğeli bir dizi olurdu:

  • ROW_1_LEFT
  • ROW_1_RIGHT

Avrupa Birliği genel güvenlik düzenlemelerine uygunluk

Aracın Android üzerinden Avrupa Birliği Genel Güvenlik Yönetmeliği (GSR) gereksinimlerine uyması gerekiyorsa GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT özelliğinin desteklenmesi gerekir. Örnek bir kullanım durumu, 2019/2144 AB Düzenlemesinde tanımlanan GSR-ISA'dır (Akıllı Hız Yardımı). Bu özellik Android 13'ten itibaren AIDL VHAL'e eklenmiştir, ancak Android 12'nin piyasaya sürülmesinden bu yana Araba Hizmeti'nde desteklenmektedir. Bu özellik, GsrComplianceRequirementType enum tarafından tanımlanan olası değerlerle birlikte, salt okunur bir statik global tamsayı özelliği olarak tanımlanır:

İsim Değer Tanım
GSR_COMPLIANCE_NOT_REQUIRED 0 GSR uyumluluğu gerekli değildir
GSR_COMPLIANCE_REQUIRED_V1 1 GSR uyumluluğu gereklidir ve gereksinim çözümü sürümü 1'dir.

Bu özelliği HIDL VHAL'de (Android 12'de) desteklemek için satıcıların mülk kimliğini sabit olarak kodlaması gerekir. Örneğin, aşağıdaki kod parçası bunun HIDL VHAL DefaultConfig.h referansında nasıl desteklendiğini gösterir:

{
  .config =
      {
          // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
          .prop = 0x11400F47,
          .access = VehiclePropertyAccess::READ,
          .changeMode = VehiclePropertyChangeMode::STATIC,
      },
  // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1
  .initialValue = {.int32Values = {1}},
}

Bu özelliği AIDL VHAL'de (Android 13'ten itibaren) desteklemek için satıcılar, VehicleProperty.h özellik kimliğini ve GsrComplianceRequirementType.h numaralandırmayı kullanabilir. Örneğin, AIDL VHAL DefaultProperties.json referansında olduğu gibi:

{
  "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
  "defaultValue": {
    "int32Values": [
      "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1"
    ]
  }
}

Bu özelliği bir Android uygulamasından okumak için CarPropertyManager.getIntProperty kullanın.