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çinandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT
, yazmak içinandroid.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT
gerektirir. -
vendor_prop-2
okunması içinandroid.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.
- Android 13 ve sonraki sürümlerde, mülk kimliği olarak
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
kullanın. - Android 12'de, özellik kimliği olarak sabit kodlanmış 0x11400F47 değerini kullanın. Bu mülk,
Car#PERMISSION_CAR_INFO
iznini gerektiriyor.