Mülk yapılandırmaları

Desteklenen her mülk, VehiclePropConfig yapısı aracılığıyla tanımlanan bir mülk yapılandırmasıyla belirtilir ve aşağıdaki alanlara sahiptir.

Alan Açıklama
prop

Mülk kimliği. Bu, VehicleProperty.aidl içindeki tanımlı sistem özelliklerinden biri veya bir satıcı özelliği olmalıdır. Mülk kimliği, aşağıdaki alanların bit düzeyinde OR işlemi kullanılarak oluşturulur (sağdan sola):

  • (0x00000000) 16 bit: 0x0100 - 0xffff aralığında benzersiz bir kimlik.
  • (0x00000000) 8 bit: Mülkün türünü tanımlayan mülk türleri.
  • (0x00000000) 4 bit: Alan türleri.
  • (0x00000000) 4 bit: VehiclePropertyGroup Bu, SYSTEM (0x10000000) veya VENDOR (0x20000000) olur. Özelleştirebileceğiniz özellikler için Tedarikçi Özellikleri'ne bakın.

Örneğin,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access
  • Mülk için erişim modu. READ, WRITE veya READ_WRITE olmalıdır.
  • Sistem özellikleri için bu, VehicleProperty.aidl dokümanında açıklanan tanımlı erişim modlarından biri olmalıdır.
  • Alan bazında erişimi olan mülkler için bu, alan bazında erişimin maksimum alt kümesidir. Örneğin, mülklerin erişimi READ ve READ_WRITE olan iki alanı varsa bu değer READ olarak ayarlanmalıdır.
changeMode
  • Mülk için modu değiştirin. STATIC, ON_CHANGE veya CONTINUOUS olmalıdır. STATIC, özellik değerinin sistem başlatıldıktan sonra asla değişmediği anlamına gelir. ON_CHANGE, değer değiştiğinde VHAL'nin rapor vermesi gerektiği anlamına gelir. CONTINUOUS, mülk değerinin sürekli değiştiği ve VHAL'nin abonelik örnekleme hızına göre raporlama yapması gerektiği anlamına gelir.
  • Sistem özellikleri için bu değer, VehicleProperty.aidl içinde belgelenen değişiklik moduyla eşit olmalıdır.
configArray Mülke özgü yapılandırmayı içeren isteğe bağlı bir dizi. Boş olabilir. Belirli sistem özellikleri (ör. GEAR_SELECTION) için yapılandırma dizisinin özel bir anlamı vardır ve belirtilmesi gerekir.
configString Mülke özgü yapılandırmayı içeren isteğe bağlı bir dize. Boş olabilir.
minSampleRate ve maxSampleRate Sürekli özellik için desteklenen minimum ve maksimum örnekleme hızı (Hertz cinsinden). Mülk sürekli değilse kullanılmaz. minSampleRate ve maxSampleRate, VHAL uygulamasında elde edilebilir olmalıdır. Minimum ve maksimum arasındaki tüm örnekleme hızlarının desteklenmesi gerekmez.

Tesis türleri

VehiclePropertyType.aidl içinde enum olarak tanımlanır. Desteklenen mülk türleri aşağıdaki tabloda listelenmiştir.

Tesis türü Değer Açıklama
STRING 0x00100000 Dize özelliği, Araç özelliği değeri içindeki stringValue alanını kullanır.
BOOLEAN 0x00200000 Boolean özelliği, Araç özelliği değeri'ndeki int32Values alanında yer alan ilk öğeyi kullanır. 0, false anlamına gelir. None 0, true anlamına gelir.
INT32 0x00400000 Integer özelliği, Araç özelliği değeri'ndeki int32Values alanında yer alan ilk öğeyi kullanır.
INT32_VEC 0x00410000 Integer[] özelliği, Araç özelliği değeri alanındaki int32Values alanındaki öğeleri kullanır.
INT64 0x00500000 Uzun özellik, Araç özelliği değeri alanındaki int64Values alanında ilk öğeyi kullanır.
INT64_VEC 0x00510000 Long[] özelliği, Araç özelliği değeri'ndeki int64Values alanındaki öğeleri kullanır.
FLOAT 0x00600000 Float özelliği, Araç özelliği değeri'ndeki floatValues alanında yer alan ilk öğeyi kullanır.
FLOAT_VEC 0x00610000 Float[] özelliği, Araç özelliği değeri'ndeki floatValues alanındaki öğeleri kullanır.
BYTES 0x00700000 byte[] özelliği, Araç özelliği değeri'ndeki byteValues alanındaki öğeleri kullanır.
MIXED 0x00e00000 Karma türde mülk. Skaler veya vektör türlerinin herhangi bir kombinasyonu. Tam biçim, mülk yapılandırmasındaki yapılandırma dizisinde sağlanmalıdır.

MIXED türündeki satıcı mülkleri için configArray şu yapıda biçimlendirilmelidir:

  • configArray[0], 1 değeri mülkün String değerine sahip olduğunu gösterir
  • configArray[1], 1 değeri mülkün Boolean değerine sahip olduğunu gösterir
  • configArray[2], 1 değeri mülkün Integer değerine sahip olduğunu gösterir.
  • configArray[3]: Sayı, mülkteki Integer[] boyutunu gösterir.
  • configArray[4], 1 değeri mülkün Long değerine sahip olduğunu gösterir
  • configArray[5]: Sayı, mülkteki Long[] boyutunu gösterir.
  • configArray[6], 1 değeri mülkün Float değerine sahip olduğunu gösterir
  • configArray[7]: Sayı, mülkteki Float[] boyutunu gösterir.
  • configArray[8], sayı mülkteki byte[] boyutunu gösterir.

Örneğin, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0}, özelliğin String değeri, Boolean değeri, Integer değeri ve üç tam sayı içeren bir diziye sahip olduğunu gösterir.

Alan kimliği yapılandırması

Her mülk yapılandırması, alan kimliği yapılandırmalarının bir listesini de içerebilir. Bu liste, global mülkler için isteğe bağlıdır ve bölgelere ayrılmış mülkler (birden fazla desteklenen alana sahip mülkler) için zorunludur. Her alan kimliği yapılandırmasında aşağıdaki alanlar bulunur.

Alan Açıklama
areaId Bu alanın kimliği. Alan kimlikleri konusuna bakın.
minInt32Value ve maxInt32Value
  • Başlatma sırasında INT32 türü özellikler için isteğe bağlı minimum ve maksimum değer. Diğer tüm türler için 0 olmalıdır. İkisi de 0 ise yoksayılır.
  • Global mülk için minimum ve maksimum değerin tanımlanması gerekiyorsa alan kimliği 0 olan bir alan yapılandırması kullanılmalıdır.
  • Bu değer statiktir ve çalışma zamanında minimum veya maksimum değer değişse bile değişmez. Dinamik minimum veya maksimum değer için IVehicle#getMinMaxSupportedValue özelliğini uygulayın.
minInt64Value ve maxInt64Value
  • Başlatma sırasında INT64 türü özellikler için isteğe bağlı minimum ve maksimum değer. Diğer tüm türler için 0 olmalıdır. İkisi de 0 ise yoksayılır.
  • Global mülk için minimum ve maksimum değerin tanımlanması gerekiyorsa alan kimliği 0 olan bir alan yapılandırması kullanılmalıdır.
  • Bu değer statiktir ve çalışma zamanında minimum veya maksimum değer değişse bile değişmez. Dinamik minimum veya maksimum değer için IVehicle#getMinMaxSupportedValue özelliğini uygulayın.
minFloatValue ve maxFloatValue
  • Başlatma sırasında Float türü özellikler için isteğe bağlı minimum ve maksimum değer. Diğer tüm türler için 0 olmalıdır. İkisi de 0,0 ise yoksayılır.
  • Global mülk için minimum ve maksimum değerin tanımlanması gerekiyorsa alan kimliği 0 olan bir alan yapılandırması kullanılmalıdır.
  • Bu değer statiktir ve çalışma zamanında minimum veya maksimum değer değişse bile değişmez. Dinamik minimum veya maksimum değer için IVehicle#getMinMaxSupportedValue özelliğini uygulayın.
(Android 14'teki yenilik)
supportedEnumValues
  • Özellik, enum türü özelliği olarak tanımlanmışsa başlatma sırasında desteklenen değerlerin isteğe bağlı listesi. Belirtilmemişse (boş) veya Android 14'ten önceyse tüm enum değerlerinin desteklendiği varsayılır.
  • Genel mülk için, desteklenen enum değerlerinin tanımlanması gerekiyorsa alan kimliği 0 olan bir alan yapılandırması kullanılmalıdır.
  • Bu değer statiktir ve desteklenen değerler çalışma zamanında değişse bile değişmez. Dinamik olarak desteklenen değerler için IVehicle#getSupportedValuesLists uygulayın.
  • Bu yalnızca enum türü özellikler için geçerlidir. Diğer türler için bu alan boş olmalıdır. Numaralandırılmamış diğer türler için desteklenen değerleri göstermek üzere IVehicle#getSupportedValuesLists kullanın.
(Android 15'teki yenilik)
supportVariableUpdateRate
  • Değişken güncelleme hızının desteklenip desteklenmediği. Bu yalnızca sürekli özellikler için geçerlidir.
  • Bu true ise uygulama, yalnızca özellik değeri değiştiğinde özellik güncelleme etkinliklerini almak için abonelikte değişken güncelleme hızını etkinleştirebilir (bu durumda sürekli özellikler, değişiklik üzerine özellikler olarak ele alınır).
  • Bir tesisin tüm aboneleri değişken güncelleme hızını etkinleştiriyorsa VHAL'ye gönderilen abonelik isteği, tesis için değişken güncelleme hızını etkinleştirir ve VHAL, tesis güncelleme etkinliklerini yalnızca tesis değeri değiştiğinde göndermelidir.
  • Abonelerden biri sabit güncelleme hızı istiyorsa VHAL'ye yapılan abonelik isteği, özellik için değişken güncelleme hızını devre dışı bırakır ve AAOS, değişken güncelleme hızı isteyen istemciler için yinelenen etkinlikleri filtreler.
  • Özellik verileri büyük olmadığı (örneğin, 1k boyutunda bir bayt dizisi) ve önbelleğe alma için büyük miktarda bellek kaplayabileceği durumlar dışında, daha iyi performans için tüm kalp atışı dışı sürekli özelliklerde değişken güncelleme hızının desteklenmesi ŞİDDETLE TAVSİYE EDİLİR.
(Android 16'daki yenilikler)
hasSupportedValueInfo
  • null değilse bu özelliğin, desteklenen minimum veya maksimum değerleri ya da desteklenen değerler listesini belirtip belirtmediğini gösterir.
  • Bu alan, dinamik desteklenen değer API'lerinin: getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange, unsubscribeSupportedValueChange bu mülk kimliği ve alan kimliği için desteklenip desteklenmediğini kontrol eder.
  • Aksi takdirde null, VHAL bu mülk kimliği ve alan kimliği için bu API'leri uygulamalıdır.
  • null veya Android 15 ya da daha eski bir sürümde bu mülk kimliği ve alan kimliği için dinamik olarak desteklenen değerler desteklenmez. Müşteri, araç mülkü yapılandırmasında sağlanan statik desteklenen değer bilgilerini kullanmalıdır.

Alan türleri

VehicleArea.aidl içinde enum olarak tanımlanır. Desteklenen alan türleri aşağıda listelenmiştir.

Alan türü Değer Açıklama
GLOBAL 0x01000000 Bu mülk, global bir mülktür ve birden fazla alanı yoktur.
WINDOW 0x03000000 Pencerelere göre alan, VehicleAreaWindow enum'unu kullanır.
MIRROR 0x04000000 Aynalara dayalı alan, VehicleAreaMirror enum'ını kullanır.
SEAT 0x05000000 Lisanslara göre alan, VehicleAreaSeat enum'ını kullanır.
DOOR 0x06000000 Kapılara göre alan, VehicleAreaDoor enum'unu kullanır.
WHEEL 0x07000000 Tekerleklere göre alan, VehicleAreaWheel enum'u kullanır.

Her bölgelendirilmiş mülk, önceden tanımlanmış bir alan türü kullanmalıdır. Her alan türü, alan türü için bir enum'da tanımlanan bir dizi bit işaretine sahiptir. Örneğin, SEAT alanı VehicleAreaSeat enum'u 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ölgelere ayrılmış mülkler, Alan Kimlikleri aracılığıyla ele alınır. Her bölgeli 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.

Daha fazla bilgi edinmek için HVAC başlıklı makaleyi inceleyin.