Araç Özellikleri

Araç Donanım Özet Katmanı (VHAL) arabirimi OEM uygulayabilir özelliklerini tanımlar ve (özelliği bir int olan ve değişiklik modları izin verilip verilmediğini, örneğin) özelliği meta verileri içerir. 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) üretir (StatusCode status);
    Bir özellik değeri değişikliğini izlemeye başlayın. Zonlu bir özellik için, unsubscribe(IVehicleCallback callback, int32_t propId) oluşturur (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ün. Genel hata, HAL'nin 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 benzersiz bir int32 anahtar bilgisini ve önceden tanımlanmış bir tipi (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 bir tektir ve birden fazla alanı yoktur.
WINDOW Pencerelerde dayalı Alan, kullanan VehicleAreaWindow enum.
MIRROR Aynaların dayalı Alan, kullanan VehicleAreaMirror enum.
SEAT Koltuk dayalı Alan, kullanan VehicleAreaSeat enum.
DOOR Kapıların dayalı Alan, kullanan VehicleAreaDoor enum.
WHEEL Tekerlekler dayalı Alan, kullanan VehicleAreaWheel enum.

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ı tanımlar VehicleAreaSeat Çeteleler:

  • 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, kullanarak bir özellik VehicleAreaSeat aşağıdaki Alan kimlikleri kullanabilirsiniz:

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 özellik değeri bir ile gelir VehiclePropertyStatus değeri. 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

Kullanım VehiclePropConfig her özellik için yapılandırma bilgilerini sağlamak. 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.

  • get hep istekte Alan kimliğini içeren zonlu özellik için çağrı. 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.
  • set zonlu özellik için çağrı hep istekte Alan kimlik içerir. Bu nedenle, yalnızca istenen Alan Kimliği değiştirilir.
  • subscribe çağrı özelliği için tüm Alan kimlikleri için olay 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ı dönmelidir -EAGAIN . Bazı özelliklerin (HVAC gibi) ayrı açma/kapama özelliği vardır. Arayan get (kapalı) bu tür bir özellik için bir dönmelidir UNAVAILABLE bir hata dönmeden yerine statü. Ö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 görüşme İstediğiniz değişiklik yapıldıktan sonra olay bildirimini içeren bir asenkron bir işlemdir. Tipik bir operasyonda, bir set araç ağ üzerinden bir değişiklik talebinde bulunmadan çağrı yol açar. Bazı set aramaları hazır, fakat başlatma işlemi sırasında, bu veriler henüz mevcut olmayabilir için ilk veri gerektirebilir. Bu gibi durumlarda, set çağrı dönmelidir -EAGAIN . Açma / kapama ayrı güçle bazı özellikleri dönmelidir -ESHUTDOWN mülkiyet kapatıldığı ve seti yapılamaz zaman. Kadar set etkili yapılır, get mutlaka set ne kadar 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 ö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 ham veri alış veriş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, özel özellikleri zaten (mevcut çoğaltma araç özelliklerine kullanılmamalıdır VehiclePropertyIds SDK).
  • Doldurun VehiclePropConfig.configString özel mülkiyet kısa bir açıklama ile. 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."
  • Üzerinden erişim CarPropertyManager (Java bileşenleri için) ya da Araç Ağ Servis API yoluyla (yerli için). Gelecekte uyumluluk sorunlarına yol açabileceğinden, diğer araç API'lerini değiştirmeyin.
  • Satıcı özelliklerini gerçekleştirdikten sonra, sadece izinler liste seçmek VehicleVendorPermission satıcı özellikleri için enum. 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 aramak için VEHICLE_PROPERTY_HVAC_* in types.hal . HVAC özelliği kullandığında VehicleAreaSeat , Alan kimliklerine bir zonlu HVAC özelliği haritalama için ek kurallar geçerlidir. Arabadaki mevcut her koltuk, Alan Kimliği dizisindeki bir Alan Kimliğinin parçası olmalıdır.

Örnek Bir. Bir araba, iki ön koltuk (vardır ROW_1_LEFT, ROW_1_RIGHT ) ve üç arka koltuk ( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT ). Araçta iki sıcaklık kontrol ünitesi bulunur: sürücü tarafı ve yolcu tarafı.

  • İçin Alan kimlikleri belirlenen geçerli bir haritalama HVAC_TEMPERATURE SET geçerli:
    • 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 araba ön sırada iki koltuk (üç koltuk sırası vardır ROW_1_LEFT, ROW_1_RIGHT ), saniye (üç koltuk ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT ) ve üçüncü sıralar halinde üç ( 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. Eşlemek için makul bir yol HVAC_TEMPERATURE_SET Alan kimlikleri için üç unsur dizisi gibidir:

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

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

Araç Harita Hizmeti

Araç Harita Servisi (VMS) gibi yaygın araç özelliklerini destekleyecek bir pub / sub arayüzü üzerinden müşterilerine arasındaki değişim harita verilerini bir mekanizma sağlar İleri Sürücü Destek Sistemi (ADAS) . İ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 VMS'ye abone olan varsayılan istemcileri içermez. VHAL içinde VMS özelliği, mesaj türleri ve veri yapıları, VHAL 2.0 anlatılmıştır VmsMessageType listelenmektedir VMS mesaj türlerini enum. Bu numaralandırma, araç özelliği tamsayıları dizisindeki ilk tam sayı olarak kullanılır ve mesajın geri kalanının nasıl çözüleceğini belirler.