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); değerini oluşturur
    Bir 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ç mülkünün 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 uygulamalar da dahil olmak üzere diğer bileşenlerin 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ölge 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 mülk tekildir ve birden fazla alanı yoktur.
WINDOW Pencerelere dayalı alan, VehicleAreaWindow enum 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 Tekerleklere dayalı alan, VehicleAreaWheel enum kullanır.

Her imar planı bölgesi, ö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ölgeye ayrılmış mülkler, alan kimlikleri aracılığıyla adreslenir. Her bölgeye ayrılmış 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 Mülk müsait 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ülkleri 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. Mülk küreselse alan kimliği 0 olur.
  • Bölgelendirilmiş mülk için set çağrısı, istekte her zaman 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 alma

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

VHAL get HVAC örneği

Şekil 1. 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 mümkün olan en kısa sürede döndürülen eşzamansız bir işlemdir ancak eşzamanlı da olabilir. Bazı set çağrıları için ilk verilerin hazır olması gerekebilir ancak bu veriler, başlatma sırasında henüz hazır olmayabilir. 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 iletilmesine olanak tanır. Ö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 için, (VehiclePropertyIds SDK'sında) mevcut olan araç özelliklerini kopyalamak amacıyla özel özellikler kullanılmamalıdır.
  • Özel mülkün kısa bir açıklamasını VehiclePropConfig.configString içine girin. Bu sayede, mantık kontrolü araçları mevcut araç özelliklerinin yanlışlıkla kopyalanmasını işaretleyebilir. Örneğin, "araç ikaz ışığı durumu".
  • CarPropertyManager (Java bileşenleri için) veya Vehicle Network Service API (yerel için) üzerinden erişin. Diğer araç API'lerini değiştirmeyin. Aksi takdirde gelecekte uyumluluk sorunlarıyla karşılaşabilirsiniz.
  • Tedarikçi firma özelliklerini uyguladıktan sonra, tedarikçi firma özellikleri için VehicleVendorPermission enum'undayalnızca 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

Isıtma, havalandırma ve soğutma ile ilgili özellikleri ayarlayarak VHAL'ı kullanarak Isıtma, havalandırma ve soğutma'yı kontrol edebilirsiniz. Çoğu Isıtma, Havalandırma ve Soğutma mülkü bölgelendirilmiş mülk olsa da birkaçı bölgelendirilmemiş (global) mülktür. Tanımlanmış örnek özellikler 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 içinde VEHICLE_PROPERTY_HVAC_*'ü 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 aracı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 vardır: 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 (types.hal içinde) bakın.

Araç Harita Hizmeti

Araç Harita Hizmeti (VMS), İleri Seviye Sürücü Yardım Sistemleri (ADAS) gibi yaygın araç özelliklerini desteklemek için istemciler arasında harita verilerini bir pub/sub arayüzü üzerinden alışveriş yapma mekanizması 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ılmak üzere tasarlanmıştır. AOSP, VMS yayınlayan veya VMS'ye abone olan varsayılan istemciler 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 enum, araç mülkü tam sayı dizisindeki ilk tam sayı olarak kullanılır ve mesajın geri kalanının nasıl kodu çözüleceğini belirler.