Konfigurasi properti

Setiap properti yang didukung ditentukan oleh konfigurasi properti yang ditentukan melalui struktur VehiclePropConfig dan memiliki kolom berikut.

Kolom Deskripsi
prop

ID properti. Nilai ini harus berupa salah satu properti sistem yang ditentukan dari VehicleProperty.aidl atau properti vendor. ID properti dibuat menggunakan bit-or dari kolom berikut (dari kanan ke kiri):

  • (0x00000000) 16 bit: ID unik dari rentang 0x0100 - 0xffff.
  • (0x00000000) 8 bit: Jenis properti yang menentukan jenis untuk properti.
  • (0x00000000) 4 bit: Jenis area.
  • (0x00000000) 4 bit: VehiclePropertyGroup Ini adalah SYSTEM (0x10000000) atau VENDOR (0x20000000). Lihat Properti Vendor untuk mengetahui properti yang dapat Anda sesuaikan.

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

access
  • Mode akses untuk properti. Harus salah satu dari READ, WRITE, atau READ_WRITE.
  • Untuk properti sistem, nilai ini harus berupa salah satu mode akses yang ditentukan dan didokumentasikan dalam VehicleProperty.aidl.
  • Untuk properti yang memiliki akses per area, ini adalah subset maksimal dari akses per area, misalnya, jika properti memiliki dua area yang aksesnya adalah READ dan READ_WRITE, ini harus ditetapkan ke READ.
changeMode
  • Ubah mode untuk properti. Harus salah satu dari STATIC, ON_CHANGE, atau CONTINUOUS. STATIC berarti nilai properti tidak pernah berubah setelah sistem di-boot. ON_CHANGE berarti VHAL harus melaporkan saat nilai berubah. CONTINUOUS berarti nilai properti berubah terus-menerus dan VHAL harus melaporkan berdasarkan frekuensi pengambilan sampel langganan.
  • Untuk properti sistem, nilai ini harus sama dengan mode perubahan yang didokumentasikan di VehicleProperty.aidl.
configArray Array opsional yang berisi konfigurasi khusus properti. Boleh kosong. Untuk properti sistem tertentu, misalnya, GEAR_SELECTION, array config memiliki arti khusus dan harus ditentukan.
configString String opsional untuk berisi konfigurasi khusus properti. Boleh kosong.
minSampleRate dan maxSampleRate Frekuensi sampling minimum dan maksimum yang didukung untuk properti berkelanjutan (dalam Hertz). Tidak digunakan jika properti tidak berkelanjutan. minSampleRate dan maxSampleRate harus dapat dicapai oleh implementasi VHAL. Tidak semua frekuensi sampel antara minimum dan maksimum harus didukung.

Jenis properti

Ditentukan sebagai enum di VehiclePropertyType.aidl. Jenis properti yang didukung tercantum dalam tabel berikut.

Jenis properti Nilai Deskripsi
STRING 0x00100000 Properti string, menggunakan kolom stringValue di Nilai properti kendaraan.
BOOLEAN 0x00200000 properti Boolean, menggunakan elemen pertama di kolom int32Values dalam Nilai properti kendaraan. 0 berarti false, None 0 berarti true.
INT32 0x00400000 properti Integer, menggunakan elemen pertama di kolom int32Values dalam Nilai properti kendaraan.
INT32_VEC 0x00410000 properti Integer[], menggunakan elemen di kolom int32Values dalam Nilai properti kendaraan.
INT64 0x00500000 Properti panjang, menggunakan elemen pertama di kolom int64Values dalam Nilai properti kendaraan.
INT64_VEC 0x00510000 properti Long[], menggunakan elemen di kolom int64Values dalam Nilai properti kendaraan.
FLOAT 0x00600000 properti Float, menggunakan elemen pertama di kolom floatValues dalam Nilai properti kendaraan.
FLOAT_VEC 0x00610000 properti Float[], menggunakan elemen di kolom floatValues dalam Nilai properti kendaraan.
BYTES 0x00700000 properti byte[], menggunakan elemen di kolom byteValues dalam Nilai properti kendaraan.
MIXED 0x00e00000 Properti jenis campuran. Kombinasi jenis skalar atau vektor apa pun. Format persisnya harus disediakan dalam array config di konfigurasi properti.

Untuk properti jenis MIXED vendor, configArray harus diformat dalam struktur ini:

  • configArray[0], 1 menunjukkan bahwa properti memiliki nilai String
  • configArray[1], 1 menunjukkan bahwa properti memiliki nilai Boolean
  • configArray[2], 1 menunjukkan bahwa properti memiliki nilai Integer
  • configArray[3], angka menunjukkan ukuran Integer[] dalam properti
  • configArray[4], 1 menunjukkan bahwa properti memiliki nilai Long
  • configArray[5], angka menunjukkan ukuran Long[] dalam properti
  • configArray[6], 1 menunjukkan bahwa properti memiliki nilai Float
  • configArray[7], angka menunjukkan ukuran Float[] dalam properti
  • configArray[8], angka menunjukkan ukuran byte[] dalam properti.

Misalnya, configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} menunjukkan bahwa properti memiliki nilai String, nilai Boolean, nilai Integer, dan array dengan tiga bilangan bulat.

Konfigurasi ID area

Setiap konfigurasi properti juga dapat berisi daftar konfigurasi ID area. Daftar ini bersifat opsional untuk properti global dan wajib untuk properti yang dikelompokkan menurut zona (properti dengan beberapa area yang didukung). Setiap konfigurasi ID area memiliki kolom berikut.

Kolom Deskripsi
areaId ID untuk area ini. Lihat ID Area.
minInt32Value dan maxInt32Value
  • Nilai minimum dan maksimum opsional untuk properti jenis INT32 saat waktu booting. Harus 0 untuk semua jenis lainnya. Diabaikan jika keduanya 0.
  • Untuk properti global, jika nilai minimum dan maksimum perlu ditentukan, satu konfigurasi area dengan ID area 0 harus digunakan.
  • Nilai ini bersifat statis dan tidak akan berubah meskipun nilai minimum atau maksimum berubah saat runtime. Terapkan IVehicle#getMinMaxSupportedValue untuk nilai minimum atau maksimum dinamis.
minInt64Value dan maxInt64Value
  • Nilai minimum dan maksimum opsional untuk properti jenis INT64 pada waktu booting. Harus 0 untuk semua jenis lainnya. Diabaikan jika keduanya 0.
  • Untuk properti global, jika nilai minimum dan maksimum perlu ditentukan, satu konfigurasi area dengan ID area 0 harus digunakan.
  • Nilai ini bersifat statis dan tidak akan berubah meskipun nilai minimum atau maksimum berubah saat runtime. Terapkan IVehicle#getMinMaxSupportedValue untuk nilai minimum atau maksimum dinamis.
minFloatValue dan maxFloatValue
  • Nilai minimum dan maksimum opsional untuk properti jenis Float saat waktu booting. Harus 0 untuk semua jenis lainnya. Diabaikan jika keduanya adalah 0,0.
  • Untuk properti global, jika nilai minimum dan maksimum perlu ditentukan, satu konfigurasi area dengan ID area 0 harus digunakan.
  • Nilai ini bersifat statis dan tidak akan berubah meskipun nilai minimum atau maksimum berubah saat runtime. Terapkan IVehicle#getMinMaxSupportedValue untuk nilai minimum atau maksimum dinamis.
(Baru di Android 14)
supportedEnumValues
  • Daftar opsional nilai yang didukung saat waktu booting jika properti ditentukan sebagai properti jenis enum. Jika tidak ditentukan (kosong) atau sebelum Android 14, semua nilai enum dianggap didukung.
  • Untuk properti global, jika nilai enum yang didukung perlu ditentukan, konfigurasi area dengan ID area 0 harus digunakan.
  • Nilai ini bersifat statis dan tidak akan berubah meskipun nilai yang didukung berubah saat runtime. Terapkan IVehicle#getSupportedValuesLists untuk nilai yang didukung secara dinamis.
  • Ini hanya berlaku untuk properti jenis enum. Untuk jenis lainnya, kolom ini harus kosong. Untuk mengekspos nilai yang didukung untuk jenis non-enum lainnya, gunakan IVehicle#getSupportedValuesLists.
(Baru di Android 15)
supportVariableUpdateRate
  • Apakah kecepatan update variabel didukung. Hal ini hanya berlaku untuk properti berkelanjutan.
  • Jika true, aplikasi dapat mengaktifkan kecepatan update variabel untuk langganan guna menerima peristiwa update properti hanya saat nilai properti berubah (yang memperlakukan properti berkelanjutan sebagai properti saat berubah).
  • Jika semua pelanggan untuk properti mengaktifkan frekuensi update variabel, permintaan langganan ke VHAL akan mengaktifkan frekuensi update variabel untuk properti dan VHAL harus mengirim peristiwa update properti hanya saat nilai properti berubah.
  • Jika ada pelanggan yang meminta kecepatan update tetap, permintaan langganan ke VHAL akan menonaktifkan kecepatan update variabel untuk properti dan AAOS akan memfilter peristiwa duplikat untuk klien yang meminta kecepatan update variabel.
  • SANGAT DISARANKAN untuk mendukung kecepatan update variabel untuk semua properti berkelanjutan non-detak jantung untuk performa yang lebih baik, kecuali jika data properti berukuran besar (misalnya, array byte berukuran 1k) dan dapat menempati sejumlah besar memori untuk caching.
(Baru di Android 16)
hasSupportedValueInfo
  • Jika bukan null, menunjukkan apakah properti ini menentukan nilai minimum atau maksimum yang didukung atau daftar nilai yang didukung.
  • Kolom ini mengontrol apakah API nilai yang didukung dinamis: getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange, unsubscribeSupportedValueChange didukung untuk ID properti dan ID area ini.
  • Jika tidak null, VHAL harus menerapkan API ini untuk ID properti dan ID area ini.
  • Jika null atau di Android 15 atau yang lebih rendah, nilai yang didukung dinamis untuk ID properti dan ID area ini tidak didukung. Klien harus menggunakan informasi nilai statis yang didukung yang diberikan dalam konfigurasi properti kendaraan.

Jenis area

Ditentukan sebagai enum di VehicleArea.aidl. Jenis area yang didukung tercantum di bawah.

Jenis area Nilai Deskripsi
GLOBAL 0x01000000 Properti ini adalah properti global dan tidak memiliki beberapa area.
WINDOW 0x03000000 Area berdasarkan jendela, menggunakan enum VehicleAreaWindow.
CERMIN 0x04000000 Area berdasarkan cermin, menggunakan enum VehicleAreaMirror.
SEAT 0x05000000 Area berdasarkan tempat duduk, menggunakan enum VehicleAreaSeat.
DOOR 0x06000000 Area berdasarkan pintu, menggunakan enum VehicleAreaDoor.
RODA 0x07000000 Area berdasarkan roda, menggunakan enum VehicleAreaWheel.

Setiap properti yang dikelompokkan dalam zona harus menggunakan jenis area yang telah ditentukan sebelumnya. Setiap jenis area memiliki serangkaian flag bit yang ditentukan dalam enum untuk jenis area. Misalnya, area SEAT menentukan enum VehicleAreaSeat:

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

ID Area

Properti yang dikelompokkan menurut zona diatasi melalui ID Area. Setiap properti yang dikelompokkan dalam zona dapat mendukung satu atau beberapa ID Area. ID Area terdiri dari satu atau beberapa tanda dari enumnya masing-masing. Misalnya, properti yang menggunakan VehicleAreaSeat dapat menggunakan ID Area berikut:

Item Deskripsi
ROW_1_LEFT | ROW_1_RIGHT ID Area berlaku untuk kedua kursi depan.
ROW_2_LEFT Hanya berlaku untuk kursi kiri belakang.
ROW_2_RIGHT Hanya berlaku untuk kursi kanan belakang.

Untuk mempelajari lebih lanjut, lihat HVAC.