Araç Donanımı Soyutlama Katmanı (VHAL) arabirimi, OEM'lerin uygulayabileceği özellikleri tanımlar ve özellik meta verilerini içerir (örneğin, özelliğin bir int olup olmadığı ve hangi değişiklik modlarına izin verildiği). VHAL arabirimi, belirli bir işlev için bir soyutlama olan bir özelliğe erişmeye (okuma, yazma, abone olma) dayalıdır.
HAL arayüzleri
VHAL aşağıdaki arabirimleri kullanır:
-
getAllPropConfigs()
üretir(vec<VehiclePropConfig>propConfigs)
VHAL tarafından desteklenen tüm özelliklerin yapılandırmasını listeleyin. CarService yalnızca desteklenen özellikleri kullanır. -
getPropConfigs(vec<int32_t> props)
oluşturur(StatusCode status,vec<VehiclePropConfig> propConfigs);
Seçilen özelliklerin yapılandırmasını döndürün. -
set(VehiclePropValue propValue)
üretir(StatusCodestatus);
Özelliğe bir değer yazın. Yazma sonucu özellik başına tanımlanır. -
subscribe(IVehicleCallback callback, vec<SubscribeOptions> options)
oluşturur(StatusCode status);
Bir özellik değeri değişikliğini izlemeye başlayın. Zonlu özellik içinunsubscribe(IVehicleCallback callback, int32_t propId)
(StatusCode status);
VHAL, aşağıdaki geri arama arayüzlerini kullanır:
-
oneway onPropertyEvent(vec<VehiclePropValue>propValues);
Araç özelliğinin değer değişikliğini bildirir. Sadece abone olunan mülkler için yapılmalıdır. -
oneway onPropertySetError(StatusCode errorCode,int32_t propId,int32_tareaId);
Özellik başına genel VHAL düzeyi hatası veya hatası döndürür. Genel hata, HAL'ın yeniden başlatılmasına neden olur ve bu da diğer bileşenlerin (uygulamalar dahil) yeniden başlatılmasına yol açabilir.
Araç özellikleri
Özellikler salt okunur, salt yazılır (bilgileri VHAL düzeyine iletmek için kullanılır) veya okuyup yazabilir (çoğu özelliğin desteği isteğe bağlıdır). Her özellik, bir int32 anahtarı tarafından benzersiz bir şekilde tanımlanır ve önceden tanımlanmış bir türe ( value_type
) sahiptir:
-
BYTES
-
BOOLEAN
-
EPOCH_TIME
-
FLOAT
-
FLOAT[]
-
INT32
-
INT32[]
-
INT64
-
INT64[]
-
STRING
-
MIXED
Bölgelere ayrılmış bir özellik, özelliğin desteklediği bölgelerin sayısına bağlı olarak birden fazla değere sahip olabilir.
Alan türleri
VHAL, birden çok alan türünü tanımlar:
Alan Türü | Tanım |
---|---|
GLOBAL | Bu özellik bir tekildir ve birden çok alanı yoktur. |
WINDOW | Windows tabanlı alan, VehicleAreaWindow numaralandırmasını kullanır. |
MIRROR | Aynalara dayalı alan, VehicleAreaMirror numaralandırmasını kullanır. |
SEAT | Koltuklara dayalı alan, VehicleAreaSeat numaralandırmasını kullanır. |
DOOR | Kapılara dayalı alan, VehicleAreaDoor numaralandırmasını kullanır. |
WHEEL | Tekerleklere dayalı alan, VehicleAreaWheel numaralandırmasını kullanır. |
Bölgelere ayrılmış her mülk, önceden tanımlanmış bir alan tipi kullanmalıdır. Her alan tipi, alan tipi için bir numaralandırmada tanımlanan bir dizi bit bayrağına sahiptir. Örneğin, SEAT
alanı, VehicleAreaSeat
numaralarını tanımlar:
-
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
- ...
Alan kimlikleri
İmarlı mülkler, Alan Kimlikleri aracılığıyla adreslenir. Bölgelere ayrılmış her mülk, bir veya daha fazla Alan Kimliğini destekleyebilir. Bir Alan Kimliği, ilgili sıralamasından bir veya daha fazla bayraktan oluşur. Örneğin, VehicleAreaSeat
kullanan bir mülk aşağıdaki Alan Kimliklerini kullanabilir:
Öğe | Tanım |
---|---|
ROW_1_LEFT | ROW_1_RIGHT | Alan Kimliği her iki ön koltuk için de geçerlidir. |
ROW_2_LEFT | Yalnızca arka sol koltuk için geçerlidir. |
ROW_2_RIGHT | Yalnızca arka sağ koltuk için geçerlidir. |
mülkiyet durumu
Her özellik değeri, bir VehiclePropertyStatus
değeriyle birlikte gelir. Bu, mülkün mevcut durumunu gösterir:
Öğe | Tanım |
---|---|
AVAILABLE | Özellik mevcuttur ve değer geçerlidir. |
UNAVAILABLE | Özellik değeri şu anda kullanılamıyor. Desteklenen bir özellik için geçici olarak devre dışı bırakılan özellikler için kullanılır. |
ERROR | Bu özellikte bir sorun var. |
Bir özelliği yapılandırma
Her özellik için yapılandırma bilgisi sağlamak üzere VehiclePropConfig
kullanın. Bilgiler şunları içerir:
Değişken | Tanım |
---|---|
access | r , w , rw |
changeMode | Bir özelliğin değişime karşı sürekli olarak nasıl izlendiğini temsil eder. |
areaConfigs | areaId , min ve max değerleri. |
configArray | Ek yapılandırma parametreleri. |
configString | Ek bilgiler bir dize olarak iletildi. |
minSampleRate | maxSampleRate |
prop | Mülk kimliği, int |
İşleme bölgesi özellikleri
Bölgelere ayrılmış bir mülk, her bir alt mülke belirtilen Alan Kimliği değeriyle erişilebilen birden çok mülk koleksiyonuna eşdeğerdir.
-
get
call for zoned property, istekte her zaman Alan Kimliğini içerir. Bu nedenle, istenen Alan Kimliği için yalnızca geçerli değer döndürülür. Özellik genel ise Alan Kimliği 0'dır. -
set
call for zoned özelliği her zaman istekte Alan Kimliğini içerir. Bu nedenle, yalnızca istenen Alan Kimliği değiştirilir. -
subscribe
çağrısı, mülk için tüm Alan Kimlikleri için olaylar üretir.
çağrı al
Başlatma sırasında, eşleşen araç ağı mesajı henüz alınmadığından özellik değeri henüz mevcut olmayabilir. Bu gibi durumlarda, get
çağrısı -EAGAIN
döndürmelidir. Bazı özelliklerin (HVAC gibi) ayrı açma/kapama gücü özelliği vardır. Böyle bir özellik için get
çağrılması (güç kapalıyken), bir hata döndürmek yerine UNAVAILABLE
durumu döndürmelidir. Örneğin, HVAC Sıcaklığını alın
Şekil 1 . HVAC sıcaklığını alın (CS = CarService, VHAL = Araç HAL)
Aramaları ayarla
Tipik bir operasyonda, set
bir çağrı, araç ağı genelinde bir değişiklik talebinde bulunulmasına yol açar. set
çağrısı ideal olarak mümkün olan en kısa sürede geri dönen eşzamansız bir işlemdir, ancak eşzamanlı da olabilir. Bazı set
çağrılar, başlangıç verilerinin hazır olmasını gerektirebilir, ancak başlatma sırasında bu tür veriler henüz mevcut olmayabilir. Bu gibi durumlarda, set
çağrısı StatusCode#TRY_AGAIN
döndürmelidir. Ayrı açma ve kapatma özelliğine sahip bazı özellikler, özellik kapatıldığında ve set
yapılamadığında StatusCode#NOT_AVAILABLE
veya StatusCode#NOT_AVAILABLE_DISABLED
döndürmelidir. set
etkin hale getirilene kadar get
, set edilen değerle aynı değeri döndürmek zorunda değildir. Örneğin, set HVAC Temperature
.
Şekil 2 . HVAC sıcaklığını ayarlayın (CS = CarService, VHAL = Araç HAL)
Özel özellikleri işleme
Ortağa özel ihtiyaçları desteklemek için VHAL, sistem uygulamalarıyla sınırlı özel özelliklere izin verir. Özel özelliklerle çalışırken aşağıdaki yönergeleri kullanın:
- Mülk kimliği aşağıdaki alanlar kullanılarak oluşturulmalıdır:
-
VehiclePropertyGroup:VENDOR
VENDOR
grubu yalnızca özel mülkler için kullanılır. -
VehicleArea
Uygun bir Alan Türü seçin. -
VehiclePropertyType
Uygun veri türünü seçin.BYTES
türü, çoğu durumda yeterli olan ham verilerin iletilmesine izin verir. Özel özellikler aracılığıyla sık sık büyük veri göndermek, tüm araç ağı erişimini yavaşlatabilir — büyük bir yük eklerken dikkatli olun. -
Property ID
Özel özellik için dört yarım baytlık bir kimlik seçin.
-
- Ekosistem parçalanmasını önlemek için, ( VehiclePropertyIds SDK) içinde zaten var olan araç özelliklerini çoğaltmak için özel özellikler kullanılmamalıdır.
- Özel özelliğin kısa bir açıklamasını ile
VehiclePropConfig.configString
doldurun. Bu, sağlamlık denetimi araçlarının mevcut araç özelliklerinin yanlışlıkla çoğaltılmasını işaretlemesine olanak tanır. Örneğin, "tehlike ışığı durumu". -
CarPropertyManager
(Java bileşenleri için) veya Araç Ağı Hizmeti API'si (yerel için) aracılığıyla erişim. Gelecekte uyumluluk sorunlarına yol açabileceğinden, diğer araba API'lerini değiştirmeyin. - Satıcı özelliklerini uyguladıktan sonra, satıcı özellikleri için yalnızca
VehicleVendorPermission
listesindeki izinler listesini seçin. Satıcı izinlerinin sistem özelliklerine eşlenmesi, CTS ve VTS'yi bozacaktır.
HVAC özelliklerini kullanma
HVAC ile ilgili özellikleri ayarlayarak HVAC'ı kontrol etmek için VHAL'ı kullanabilirsiniz. Çoğu HVAC mülkü bölgelere ayrılmış mülklerdir, ancak birkaçı bölgelere ayrılmamış (genel) mülklerdir. Örnek tanımlı özellikler şunları içerir:
Mülk | Amaç |
---|---|
VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET | Bölge başına sıcaklığı ayarlayın. |
VEHICLE_PROPERTY_HVAC_RECIRC_ON | Bölge başına devridaimi kontrol edin. |
HVAC özelliklerinin tam listesini görmek için, types.hal
içinde VEHICLE_PROPERTY_HVAC_*
ifadesini arayın. HVAC özelliği, VehicleAreaSeat
öğesini kullandığında, bölgelere ayrılmış bir HVAC özelliğini Alan Kimliklerine eşlemek için ek kurallar uygulanır. Arabadaki her uygun koltuk, Alan Kimliği dizisindeki bir Alan Kimliğinin parçası olmalıdır.
Örnek Bir. 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. Araçta iki sıcaklık kontrol ünitesi vardır: sürücü tarafı ve yolcu tarafı.
-
HVAC_TEMPERATURE SET
için geçerli bir Alan Kimlikleri eşleme kümesi:-
ROW_1_LEFT | ROW_2_LEFT
-
ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
-
- Aynı donanım yapılandırması için alternatif bir eşleme şöyledir:
-
ROW_1_LEFT | ROW_2_LEFT | ROW_2_CENTER
-
ROW_1_RIGHT | ROW_2_RIGHT
-
Örnek İki. Bir arabanın ön sırada iki koltuk ( ROW_1_LEFT, ROW_1_RIGHT
), ikinci sırada üç koltuk ( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT
) ve üçüncü sırada üç koltuk ( ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT
) olmak üzere üç koltuk sırası vardır. Araçta üç sıcaklık kontrol ünitesi vardır: sürücü tarafı, yolcu tarafı ve arka. HVAC_TEMPERATURE_SET
Alan Kimliklerine eşlemenin 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
Sensör özelliklerini kullanma
VHAL sensör özellikleri, gerçek sensör verilerini veya sürüş durumu gibi ilke bilgilerini temsil eder. Güvenli bir araç uygulaması oluşturmak için veriler zorunlu olduğundan, bazı sensör bilgilerine (sürüş durumu ve gündüz/gece modu gibi) herhangi bir uygulama tarafından kısıtlama olmadan erişilebilir. Diğer sensör bilgileri (araç hızı gibi) daha hassastır ve kullanıcıların yönetebileceği özel izinler gerektirir.
Desteklenen sensör özelliklerine bakın ( types.hal
içinde).
Araç Haritası Hizmeti
Araç Harita Hizmeti (VMS) , Gelişmiş Sürücü Yardım Sistemleri (ADAS) gibi yaygın araç özelliklerini desteklemek için bir pub/sub arabirimi aracılığıyla istemciler arasında harita verileri alışverişi için bir mekanizma sağlar. İstemciler, VHAL veya ayrıcalıklı Android uygulamalarında VMS özelliği aracılığıyla arayüz oluşturan araç sistemlerini dahil edebilir. VMS'de paylaşılan verilerin, araç sistemleri ve destekleyici uygulamalar tarafından kullanılmak üzere harita verileriyle sınırlı olması amaçlanmaktadır.
VMS, yalnızca Android Otomotiv uygulamalarında kullanılmak üzere tasarlanmıştır; AOSP, VMS'ye yayın yapan veya abone olan varsayılan istemciler içermez. VHAL'deki VMS özelliği için, mesaj türleri ve veri yapıları, desteklenen VMS mesajlarının türlerini listeleyen VmsMessageType
numaralandırmasında VHAL 2.0'da açıklanmıştır. Bu sıralama, araç özelliği tamsayıları dizisindeki ilk tamsayı olarak kullanılır ve mesajın geri kalanının nasıl çözüleceğini belirler.