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 soyutlama olan bir özelliğe erişmeye (okuma, yazma, abone olma) dayanır.

HAL arayüzleri

VHAL aşağıdaki arabirimleri kullanır:

  • getAllPropConfigs() oluşturur (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çili özelliklerin yapılandırmasını döndür.
  • set(VehiclePropValue propValue) oluşturur (StatusCodestatus);
    Özelliğe bir değer yazın. Yazma sonucu özellik başına tanımlanır.
  • subscribe(IVehicleCallback callback, vec<SubscribeOptions> options) (StatusCode status);
    Bir özellik değeri değişikliğini izlemeye başlayın. Bölgeli mülk için, unsubscribe(IVehicleCallback callback, int32_t propId) (StatusCode status);

VHAL, aşağıdaki geri arama arabirimlerini kullanır:

  • oneway onPropertyEvent(vec<VehiclePropValue>propValues);
    Araç özelliğinin değer değişikliğini bildirir. Yalnızca 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üzeyinde hata veya hata döndürür. Genel hata, HAL'ın yeniden başlatılmasına neden olur ve bu, diğer bileşenlerin (uygulamalar dahil) yeniden başlatılmasına neden olabilir.

Araç özellikleri

Özellikler salt okunur, salt yazılır (bilgiyi VHAL düzeyine iletmek için kullanılır) veya okuma ve yazma (çoğu özelliğin desteklenmesi isteğe bağlıdır) olabilir. Her özellik, bir int32 anahtarıyla benzersiz bir şekilde tanımlanır ve önceden tanımlanmış bir türe sahiptir ( value_type ):

  • BYTES
  • BOOLEAN
  • EPOCH_TIME
  • FLOAT
  • FLOAT[]
  • INT32
  • INT32[]
  • INT64
  • INT64[]
  • STRING
  • MIXED

Bölgeye ayrılmış bir mülk, mülk tarafından desteklenen bölge 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ü Açıklama
GLOBAL Bu özellik tektir ve birden fazla alanı yoktur.
WINDOW Pencerelere dayalı alan, VehicleAreaWindow kullanır.
MIRROR Aynalara dayalı alan, VehicleAreaMirror kullanır.
SEAT Koltuklara dayalı alan, VehicleAreaSeat kullanır.
DOOR Kapılara dayalı alan, VehicleAreaDoor kullanır.
WHEEL Tekerleklere dayalı alan, VehicleAreaWheel kullanır.

Bölgeye ayrılmış her mülk, önceden tanımlanmış bir alan türü kullanmalıdır. Her alan türü, alan türü için bir numaralandırmada tanımlanmış bir dizi bit bayrağına sahiptir. Örneğin, SEAT alanı VehicleAreaSeat numaralandırmaları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

Bölgeli mülkler, Alan Kimlikleri aracılığıyla adreslenir. Her bölgeli mülk, bir veya daha fazla Alan Kimliğini destekleyebilir. Bir Alan Kimliği, ilgili numaralandırmasından bir veya daha fazla bayraktan oluşur. Örneğin, VehicleAreaSeat kullanan bir mülk aşağıdaki Alan Kimliklerini kullanabilir:

Kalem Açıklama
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ülk durumu

Her mülk değeri bir VehiclePropertyStatus değeriyle birlikte gelir. Bu, mülkün mevcut durumunu gösterir:

Kalem Açıklama
AVAILABLE Mülk mevcut ve değer geçerli.
UNAVAILABLE Mülk 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 mülkte bir sorun var.

Bir özelliği yapılandırma

Her bir özellik için yapılandırma bilgilerini sağlamak için VehiclePropConfig kullanın. Bilgi şunları içerir:

Değişken Açıklama
access r , w , rw
changeMode Değişime karşı sürekli olarak bir özelliğin 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ölgeli bir mülk, her bir alt mülke belirtilen Alan Kimliği değeriyle erişilebildiği birden çok mülk koleksiyonuna eşdeğerdir.

  • bölgeli mülk get çağrı al, istekte her zaman Alan Kimliğini içerir. Bu nedenle, yalnızca istenen Alan Kimliği için geçerli değer döndürülür. Özellik global ise, Alan Kimliği 0'dır.
  • bölgeli mülk için set çağrısı, istekte her zaman Alan Kimliğini içerir. Bu nedenle, yalnızca istenen Alan Kimliği değiştirilir.
  • subscribe çağrısı, mülkün tüm Alan Kimlikleri için etkinlikler oluşturur.

aramaları al

Başlatma sırasında, eşleşen araç ağı mesajı henüz alınmadığından özelliğin 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 özelliği vardır. Böyle bir özellik için get çağrısı (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

Bir set çağrısı, istenen bir değişiklik yapıldıktan sonra olay bildirimini içeren eşzamansız bir işlemdir. Tipik bir işlemde, bir set arama, araç ağı üzerinden bir değişiklik talebi yapılmasına yol açar. Bazı set aramalar, 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ı -EAGAIN döndürmelidir. Ayrı güç açma/kapama özelliğine sahip bazı özellikler, özellik kapatıldığında ve ayar yapılamadığında -ESHUTDOWN döndürmelidir. set etkin hale getirilene kadar get , set edilenle aynı değeri döndürmez. Örneğin, set HVAC Temperature .

VHAL HVAC seti örneği

Şekil 2 . HVAC sıcaklığını ayarlayın (CS = CarService, VHAL = Araç HAL)

Özel özellikleri işleme

İş ortağına ö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 özellikler 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 geçişine 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 kepçe kimliği seçin.
  • Ekosistem parçalanmasını önlemek için, ( VehiclePropertyIds SDK 'da zaten var olan araç özelliklerini çoğaltmak için özel özellikler kullanılmamalıdır).
  • Özel özelliğin kısa bir açıklamasıyla VehiclePropConfig.configString doldurun. Bu, akıl sağlığı kontrol araçlarının mevcut araç özelliklerinin yanlışlıkla çoğaltılmasını işaretlemesine olanak tanır. Örneğin, "tehlikeli ışık 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 araç API'lerini değiştirmeyin.
  • Satıcı özelliklerini uyguladıktan sonra, yalnızca VehicleVendorPermission numaralandırmasında satıcı özellikleri için izinler listesini seçin. Satıcı izinlerinin sistem özelliklerine eşlenmesi CTS ve VTS'yi bozar.

HVAC özelliklerini işleme

HVAC ile ilgili özellikleri ayarlayarak HVAC'ı kontrol etmek için VHAL'ı kullanabilirsiniz. Çoğu HVAC mülkü, bölgelere ayrılmış mülklerdir, ancak birçoğu bölgesiz (küresel) 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, type.hal içinde types.hal VEHICLE_PROPERTY_HVAC_* için arama yapın. HVAC özelliği VehicleAreaSeat kullandığında, bölgelere ayrılmış bir HVAC mülkünü Alan Kimliklerine eşlemek için ek kurallar uygulanır. Arabadaki mevcut her 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 bulunur: sürücü tarafı ve yolcu tarafı.

  • HVAC_TEMPERATURE SET için geçerli bir Alan Kimlikleri eşleme seti:
    • 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:
    • ROW_1_LEFT | ROW_2_LEFT | ROW_2_CENTER
    • ROW_1_RIGHT | ROW_2_RIGHT

Örnek İki. Bir arabada, ö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ı ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT . Araçta üç sıcaklık kontrol ünitesi bulunur: sürücü tarafı, yolcu tarafı ve arka. HVAC_TEMPERATURE_SET Alan Kimlikleriyle 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 işleme

VHAL sensör özellikleri, gerçek sensör verilerini veya sürüş durumu gibi politika 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 kısıtlama olmaksızın 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ç Harita Hizmeti

Araç Harita Hizmeti (VMS), Gelişmiş Sürücü Yardım Sistemleri (ADAS) gibi yaygın araç özelliklerini desteklemek için bir yayın/alt arabirim aracılığıyla istemciler arasında harita verisi alışverişi yapmak için bir mekanizma sağlar. İstemciler, VHAL veya ayrıcalıklı Android uygulamalarında VMS özelliği aracılığıyla arabirim oluşturan araç sistemlerini içerebilir. VMS'de paylaşılan verilerin, araç sistemleri ve destekleyici uygulamalar tarafından kullanılmak üzere harita verileriyle sınırlı olması amaçlanmıştır.

VMS, yalnızca Android Otomotiv uygulamalarında kullanılmak üzere tasarlanmıştır; AOSP, VMS'ye yayınlayan veya abone olan varsayılan istemcileri içermez. VHAL'daki VMS özelliği için, ileti türleri ve veri yapıları, desteklenen VMS iletilerinin türlerini listeleyen VmsMessageType numaralandırmasında VHAL 2.0'da açıklanmıştır. Bu numaralandırma, 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.