Araç Özellikleri

Araç Donanım Soyutlama Katmanı (VHAL) arayüzü, OEM'lerin uygulayabileceği özellikleri tanımlar ve mülk meta verilerini (ör. mülkün int olup olmadığı ve hangi değişiklik modlarına izin verildiği) içerir. VHAL arayüzü, belirli bir işlev için soyutlama olan bir mülke erişmeye (okuma, yazma, abone olma) dayanır.

HAL arayüzleri

VHAL, aşağıdaki arayüzleri kullanır:

  • getAllPropConfigs(), (vec<VehiclePropConfig>propConfigs) değerini döndürür
    VHAL tarafından desteklenen tüm mülklerin yapılandırmasını listeleyin. CarService yalnızca desteklenen özellikleri kullanır.
  • getPropConfigs(vec<int32_t> props), (StatusCode status,vec<VehiclePropConfig> propConfigs); değerini döndürür
    Seçilen mülklerin yapılandırmasını döndürür.
  • set(VehiclePropValue propValue), (StatusCodestatus); değerini döndürür
    Mülke bir değer yazın. Yazma sonucu mülk başına tanımlanır.
  • subscribe(IVehicleCallback callback, vec<SubscribeOptions> options), (StatusCode status); oluşturur
    Mülk değeri değişikliğini izlemeye başlayın. Bölgelendirilmiş mülk için unsubscribe(IVehicleCallback callback, int32_t propId) (StatusCode status); değerini döndürür

VHAL, aşağıdaki geri çağırma arayüzlerini kullanır:

  • oneway onPropertyEvent(vec<VehiclePropValue>propValues);
    Araç özelliğinin değer değişikliğini bildirir. Yalnızca abone olunan tesisler için yapılmalıdır.
  • oneway onPropertySetError(StatusCode errorCode,int32_t propId,int32_tareaId);
    Genel VHAL düzeyinde hata veya mülk başına hata döndürür. Genel hata, HAL'in yeniden başlatılmasına neden olur. Bu da diğer bileşenlerin (uygulamalar dahil) yeniden başlatılmasına yol açabilir.

Araç özellikleri

Özellikler salt okunur, salt yazılabilir (bilgileri VHAL düzeyine iletmek için kullanılır) veya okuma ve yazma olabilir (çoğu özelliğin desteği isteğe bağlıdır). Her özellik, int32 anahtarıyla benzersiz ş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 mülkün, mülk tarafından desteklenen bölgelerin sayısına bağlı olarak birden fazla değeri olabilir.

Alan türleri

VHAL birden fazla alan türünü tanımlar:

Alan Türü Açıklama
GLOBAL Bu tesis bir tekilliktir ve birden fazla alana sahip değildir.
WINDOW Pencereye göre alan, VehicleAreaWindow numaralandırmasını kullanır.
MIRROR Aynalar temelli alan, VehicleAreaMirror enum kullanır.
SEAT Koltuğa dayalı alan, VehicleAreaSeat enum kullanır.
DOOR Kapılara dayalı alan, VehicleAreaDoor enum kullanır.
WHEEL Alan, tekerleklere göre, VehicleAreaWheel numaralandırmasını kullanıyor.

Bölgelere ayrılmış her mülk, önceden tanımlanmış bir alan türü kullanmalıdır. Her alan türünün, alan türü için bir enum'da tanımlanan bir dizi bit işareti vardır. Örneğin, SEAT alanı VehicleAreaSeat enum'ları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ölgelendirilmiş mülkler, alan kimlikleri aracılığıyla adreslenir. Alt bölgelere ayrılmış her mülk, bir veya daha fazla Alan Kimliğini destekleyebilir. Alan kimliği, ilgili enum'daki bir veya daha fazla işaretten oluşur. Örneğin, VehicleAreaSeat kullanan bir mülk aşağıdaki alan kimliklerini kullanabilir:

Öğe 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 sağ arka koltuk için geçerlidir.

Tesis durumu

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

Öğe Açıklama
AVAILABLE Özellik kullanılabilir ve değer geçerli.
UNAVAILABLE Tesis değeri şu anda kullanılamıyor. Desteklenen bir mülkte geçici olarak devre dışı bırakılan özellikler için kullanılır.
ERROR Bu tesisle ilgili bir sorun var.

Mülk yapılandırma

Her mülk için yapılandırma bilgileri sağlamak üzere VehiclePropConfig öğesini kullanın. Bilgiler şunları içerir:

Değişken Açıklama
access r, w, rw
changeMode Bir mülkün nasıl izlendiğini (değişiklik veya sürekli) gösterir.
areaConfigs areaId, min ve max değerleri.
configArray Ek yapılandırma parametreleri.
configString Dize olarak iletilen ek bilgiler.
minSampleRate maxSampleRate
prop Mülk kimliği, int

Alt bölge özelliklerini işleme

Bölgelere ayrılmış mülk, her alt mülke belirtilen Alan Kimliği değeriyle erişilebilen birden fazla mülkten oluşan bir koleksiyona eşdeğerdir.

  • get çağrısı, bölgelendirilmiş mülk için her zaman istekteki Alan Kimliği'ni içerir. Bu nedenle, yalnızca istenen alan kimliğinin mevcut değeri döndürülür. Tesis küreselse alan kimliği 0 olur.
  • set çağrısı, bölgelendirilmiş mülk için her zaman istekteki Alan Kimliği'ni 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 etkinlik oluşturur.

Arama alın

Eşleşen araç ağı mesajı henüz alınmadığından, başlatma sırasında mülkün değeri henüz mevcut olmayabilir. Bu tür durumlarda, get çağrısı -EAGAIN döndürmelidir. Bazı tesislerin (HVAC gibi) açma/kapatma güç özellikleri ayrıdır. Bu tür bir özellik için get çağrıldığında (kapalıyken), hata döndürmek yerine UNAVAILABLE durumu döndürülür. Örneğin, Isıtma, Havalandırma ve Soğutma sıcaklığını alın.

VHAL get HVAC örneği

1. Şekil. HVAC sıcaklığını alma (CS = CarService, VHAL = Araç HAL'i)

Aramaları ayarlama

Tipik bir işlemde, set çağrısı araç ağında bir değişiklik isteği yapılmasına neden olur. set çağrısı ideal olarak en kısa sürede döndüren eşzamansız bir işlemdir ancak eşzamanlı da olabilir. Bazı set çağrıları için başlangıç verilerinin hazır olması gerekebilir ancak başlatma sırasında bu tür veriler henüz kullanılamayabilir. Bu tür durumlarda, set çağrısı StatusCode#TRY_AGAIN döndürmelidir. Açma ve kapama düğmeleri ayrı olan bazı tesisler, set yapılamadığında ve tesis kapalıyken StatusCode#NOT_AVAILABLE veya StatusCode#NOT_AVAILABLE_DISABLED döndürmelidir. set etkinleştirilene kadar get, ayarlanan değerle aynı değeri döndürmez. Örneğin, set HVAC Temperature.

VHAL set HVAC örneği

Şekil 2. HVAC sıcaklığını ayarlama (CS = CarService, VHAL = Vehicle HAL)

Özel özellikleri işleme

VHAL, iş ortaklarına özgü ihtiyaçları desteklemek için sistem uygulamalarıyla sınırlı olan özel mülklere izin verir. Özel mülklerle ç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 iletilmesini sağlar. Özel mülkler aracılığıyla sık sık büyük veri göndermek, araç ağının erişimini tamamen yavaşlatabilir. Büyük bir yük eklerken dikkatli olun.
    • Property ID
      Özel mülk için dört nibble kimliği seçin.
  • Ekosistemin parçalanmasını önlemek amacıyla, (VehiclePropertyIds SDK'sında) zaten bulunan araç özelliklerini kopyalamak için özel mülkler kullanılmamalıdır.
  • VehiclePropConfig.configString alanına, özel özelliğin kısa bir açıklamasını girin. Bu sayede, mevcut araç özelliklerinin yanlışlıkla kopyalandığını doğrulama araçları tarafından işaretlenebilir. Örneğin, "araç ikaz ışığı durumu".
  • CarPropertyManager (Java bileşenleri için) veya Vehicle Network Service API (yerel reklamlar için) üzerinden erişim. Diğer araç API'lerinde değişiklik yapmak gelecekte uyumluluk sorunlarına yol açabilir.
  • Tedarikçi firma özelliklerini uyguladıktan sonra, tedarikçi firma özellikleri için yalnızca VehicleVendorPermission sıralamasındaki izin listesini seçin. Tedarikçi firma izinlerini sistem özellikleriyle eşlemek CTS ve VTS'yi bozar.

Isıtma, havalandırma ve soğutma sistemi özelliklerini işleme

HVAC ile ilgili özellikleri ayarlayarak HVAC'yi kontrol etmek için VHAL'yi kullanabilirsiniz. HVAC özelliklerinin çoğu alt bölgeli mülklerdir, ancak bazıları alt bölgeli olmayan (genel) mülklerdir. Tanımlanan özellikler örnekleri arasında şunlar bulunur:

Özellik Amaç
VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET Sıcaklığı bölgeye göre ayarlayın.
VEHICLE_PROPERTY_HVAC_RECIRC_ON Bölge başına yeniden dolaşımı kontrol edin.

Isıtma, havalandırma ve soğutma mülklerinin tam listesini görmek için types.hal'da VEHICLE_PROPERTY_HVAC_*'yi arayın. HVAC mülkü VehicleAreaSeat kullanırken, bölgelendirilmiş bir HVAC mülkünü alan kimlikleriyle eşlemeyle ilgili ek kurallar geçerli olur. Araçtaki her müsait koltuk, Alan Kimliği dizisindeki bir Alan Kimliği'nin 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 birimi bulunur: sürücü tarafı ve yolcu tarafı.

  • HVAC_TEMPERATURE SET için geçerli bir alan kodu eşleme grubu:
    • 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

İkinci Örnek. Bir araçta ö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) bulunur. Araçta üç sıcaklık kontrol birimi vardır: sürücü tarafı, yolcu tarafı ve arka. HVAC_TEMPERATURE_SET değerini alan kimlikleriyle eşlemenin makul bir yolu, üç öğeli bir dizi kullanmaktır:

  • 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 zorunlu olan bazı sensör bilgilerine (ör. sürüş durumu ve gündüz/gece modu) tüm uygulamalar kısıtlama olmadan erişebilir. Diğer sensör bilgileri (araç hızı gibi) daha hassastır ve kullanıcıların yönetebileceği belirli izinler gerektirir.

Desteklenen sensör özelliklerine bakın (types.hal olarak).

Araç Harita Hizmeti

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

VMS, yalnızca Android Automotive uygulamalarında kullanım amaçlıdır. AOSP, sanal makineler yayınlayan veya sanal makinelere abone olan varsayılan istemcileri içermez. VHAL'daki VMS mülkü için mesaj türleri ve veri yapıları, desteklenen VMS mesajlarının türlerini listeleyen VmsMessageType enum'unda VHAL 2.0'da açıklanmaktadır. Bu sıralama, araç özelliği tamsayılar dizisinde ilk tam sayı olarak kullanılır ve mesajın geri kalanının nasıl çözüldüğünü belirler.