Araç Özellikleri

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çin unsubscribe(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

VHAL, HVAC örneğini alır

Ş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 .

VHAL HVAC örneğini ayarlayın

Ş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.