Mülk yapılandırmaları

Desteklenen her mülk, VehiclePropConfig yapısı üzerinden 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 bölümündeki tanımlanmış sistem özelliklerinden biri veya bir tedarikçi özelliği olmalıdır. Mülk kimliği, aşağıdaki alanların bit-veya işlemi kullanılarak oluşturulur (sağdan sola):

  • (0x00000000) 16 bit: 0x0100 - 0xffff aralığındaki 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) değerini alır. Özelleştirebileceğiniz özellikler için Tedarikçi Özellikleri bölümüne bakın.

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

access
  • Tesisin erişim modu. READ, WRITE veya READ_WRITE olmalıdır.
  • Sistem özellikleri için bu, VehicleProperty.aidl dokümanlarında belirtilen tanımlanmış erişim modlarından biri olmalıdır.
  • Alan başına erişimi olan mülkler için bu, alan başına 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ün modunu değiştirin. STATIC, ON_CHANGE veya CONTINUOUS olmalıdır. STATIC, sistem açıldığında özellik değerinin hiçbir zaman değişmediği anlamına gelir. ON_CHANGE, VHAL'ın değer değiştiğinde bildirmesi gerektiği anlamına gelir. CONTINUOUS, mülk değerinin sürekli olarak değiştiği ve VHAL'in abonelik örnek oranına göre raporlaması gerektiği anlamına gelir.
  • Sistem özellikleri için bu, VehicleProperty.aidl dokümanında belirtilen değişiklik moduna eşit olmalıdır.
configArray Mülke özgü yapılandırmayı içeren isteğe bağlı bir dizi. Boş bırakılabilir. GEAR_SELECTION gibi belirli sistem özellikleri için config dizisi özel bir anlama sahiptir ve belirtilmelidir.
configString Mülke özgü yapılandırmayı içeren isteğe bağlı bir dize. Boş bırakılabilir.
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ı tarafından 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.

Mülk türü Değer Açıklama
STRING 0x00100000 Dize mülkü, Araç mülkü değeri alanındaki stringValue alanını kullanır.
BOOLEAN 0x00200000 Boolean mülkü, Araç mülkü değeri alanındaki int32Values alanındaki ilk öğeyi kullanır. 0, false anlamına gelir. None 0 ise true anlamına gelir.
INT32 0x00400000 Integer mülkü, Araç mülkü değeri alanındaki int32Values alanındaki ilk öğeyi kullanır.
INT32_VEC 0x00410000 Integer[] özelliği, Araç mülkü değeri'nde int32Values alanındaki öğeleri kullanır.
INT64 0x00500000 Uzun mülk, Araç mülkü değeri alanındaki int64Values alanındaki ilk öğeyi kullanır.
INT64_VEC 0x00510000 Long[] mülkü, Araç mülkü değeri'nde int64Values alanındaki öğeleri kullanır.
FLOAT 0x00600000 Float mülkü, Araç mülkü değeri alanındaki floatValues alanındaki ilk öğeyi kullanır.
FLOAT_VEC 0x00610000 Float[] mülkü, Araç mülkü değeri'nde floatValues alanındaki öğeleri kullanır.
BYTES 0x00700000 byte[] mülkü, Araç mülkü değeri'nde 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ında config dizisinde sağlanmalıdır.

Tedarikçi firma MIXED türü mülkleri için configArray'ün şu yapıda biçimlendirilmesi gerekir:

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

Örneğin, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0}, mülkte String değeri, Boolean değeri, Integer değeri ve üç tam sayı içeren bir dizi 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ölgelendirilmiş mülkler (birden fazla desteklenen bölgeye 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 bölümüne bakın.
minInt32Value ve maxInt32Value
  • Açılış 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. Her ikisi de 0 ise yoksayılır.
  • Genel mülk için minimum ve maksimum değerin tanımlanması gerekiyorsa bölge kimliği 0 olan bir bölge yapılandırması kullanılmalıdır.
  • Bu değer statiktir ve minimum veya maksimum değer çalışma zamanında değişse bile değişmez. Dinamik minimum veya maksimum değer için IVehicle#getMinMaxSupportedValue'ü uygulayın.
minInt64Value ve maxInt64Value
  • Açılış sırasında INT64 türündeki özellikler için isteğe bağlı minimum ve maksimum değer. Diğer tüm türler için 0 olmalıdır. Her ikisi de 0 ise yoksayılır.
  • Genel mülk için minimum ve maksimum değerin tanımlanması gerekiyorsa bölge kimliği 0 olan bir bölge yapılandırması kullanılmalıdır.
  • Bu değer statiktir ve minimum veya maksimum değer çalışma zamanında değişse bile değişmez. Dinamik minimum veya maksimum değer için IVehicle#getMinMaxSupportedValue'ü uygulayın.
minFloatValue ve maxFloatValue
  • Başlatma sırasında kayan nokta türündeki ö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.
  • Genel mülk için minimum ve maksimum değerin tanımlanması gerekiyorsa bölge kimliği 0 olan bir bölge yapılandırması kullanılmalıdır.
  • Bu değer statiktir ve minimum veya maksimum değer çalışma zamanında değişse bile değişmez. Dinamik minimum veya maksimum değer için IVehicle#getMinMaxSupportedValue'ü uygulayın.
(Android 14'te yeni)
supportedEnumValues
  • Mülk, enum türü mülk olarak tanımlanmışsa önyükleme 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 bölge kimliği 0 olan bir bölge 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 durum yalnızca enum türü mülkler için geçerlidir. Diğer türlerde bu alan boş olmalıdır. Enum olmayan diğer türler için desteklenen değerleri göstermek isterseniz IVehicle#getSupportedValuesLists değerini kullanın.
(Android 15'te yeni)
supportVariableUpdateRate
  • Değişken güncelleme hızının desteklenip desteklenmediği. Bu durum yalnızca sürekli mülkler için geçerlidir.
  • Bu değer true ise uygulama, yalnızca özellik değeri değiştiğinde özellik güncelleme etkinlikleri almak için abonelik için değişken güncelleme hızını etkinleştirebilir (sürekli özellikler, değişiklikte etkinleştirilen özellikler olarak değerlendirilir).
  • Bir mülkün tüm aboneleri değişken güncelleme hızını etkinleştiriyorsa VHAL'e gönderilen abonelik isteği, mülk için değişken güncelleme hızını etkinleştirir ve VHAL yalnızca mülk değeri değiştiğinde mülk güncelleme etkinlikleri göndermelidir.
  • Sabit güncelleme hızı isteyen aboneler varsa VHAL'a gönderilen abonelik isteği, mülk 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.
  • Mülk verileri büyük olmadığı (ör. 1 KB boyutunda bir bayt dizisi) ve önbelleğe alma için büyük miktarda bellek kaplamadığı sürece, daha iyi performans için kalp atışı olmayan tüm sürekli mülkler için değişken güncelleme hızının desteklenmesi önemle ÖNERİLİR.
(Android 16'da yeni)
hasSupportedValueInfo
  • null değilse bu mülkün minimum veya maksimum desteklenen değerleri ya da desteklenen değerler listesini belirtip belirtmediğini gösterir.
  • Bu alan, aşağıdaki dinamik desteklenen değer API'lerinin bu mülk kimliği ve alan kimliği için desteklenip desteklenmediğini kontrol eder: getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange, unsubscribeSupportedValueChange
  • null değilse VHAL bu mülk kimliği ve alan kimliği için bu API'leri uygulamalıdır.
  • null veya Android 15 veya daha eski bir sürüm kullanılıyorsa bu mülk kimliği ve alan kimliği için dinamik 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
KÜRESEL 0x01000000 Bu mülk küresel bir mülktür ve birden fazla alanı yoktur.
WINDOW 0x03000000 Pencerelere dayalı alan, VehicleAreaWindow enum kullanır.
MIRROR 0x04000000 Aynalar temelli alan, VehicleAreaMirror enum kullanır.
SEAT 0x05000000 Koltuğa dayalı alan, VehicleAreaSeat enum kullanır.
KAPI 0x06000000 Kapılara dayalı alan, VehicleAreaDoor enum kullanır.
WHEEL 0x07000000 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 içinde tanımlanmış 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.

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