Konfigurasi properti

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

Kolom Deskripsi
prop

ID properti. Ini harus berupa salah satu properti sistem yang ditentukan dari VehicleProperty.aidl atau properti vendor. ID properti dibuat menggunakan bit-or dari kolom berikut (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 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, ini harus berupa salah satu mode akses yang ditentukan dan didokumentasikan dalam VehicleProperty.aidl.
  • Untuk properti yang memiliki akses per area, ini adalah subset maksimum dari akses per area, misalnya, jika properti memiliki dua area yang aksesnya adalah READ dan READ_WRITE, ini harus ditetapkan ke READ.
changeMode
  • Mengubah mode untuk properti. Harus salah satu dari STATIC, ON_CHANGE, atau CONTINUOUS. STATIC berarti nilai properti tidak pernah berubah setelah sistem melakukan booting. ON_CHANGE berarti VHAL harus melaporkan saat nilai berubah. CONTINUOUS berarti nilai properti berubah secara terus-menerus dan VHAL harus melaporkan berdasarkan frekuensi sampel langganan.
  • Untuk properti sistem, nilai ini harus sama dengan mode perubahan yang didokumentasikan dalam VehicleProperty.aidl.
configArray Array opsional untuk berisi konfigurasi khusus properti. Dapat kosong. Untuk properti sistem tertentu, misalnya, GEAR_SELECTION, array konfigurasi memiliki arti khusus dan harus ditentukan.
configString String opsional untuk berisi konfigurasi khusus properti. Dapat kosong.
minSampleRate dan maxSampleRate Frekuensi sampel 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 di Nilai properti kendaraan. 0 berarti false, None 0 berarti true.
INT32 0x00400000 Properti Integer, menggunakan elemen pertama di kolom int32Values di Nilai properti kendaraan.
INT32_VEC 0x00410000 Properti Integer[], menggunakan elemen di kolom int32Values di Nilai properti kendaraan.
INT64 0x00500000 Properti panjang, menggunakan elemen pertama di kolom int64Values di Nilai properti kendaraan.
INT64_VEC 0x00510000 Properti Long[], menggunakan elemen di kolom int64Values di Nilai properti kendaraan.
FLOAT 0x00600000 Properti Float, menggunakan elemen pertama di kolom floatValues di Nilai properti kendaraan.
FLOAT_VEC 0x00610000 Properti Float[], menggunakan elemen di kolom floatValues di Nilai properti kendaraan.
BYTES 0x00700000 Properti byte[], menggunakan elemen di kolom byteValues di Nilai properti kendaraan.
MIXED 0x00e00000 Properti jenis campuran. Kombinasi jenis skalar atau vektor apa pun. Format yang tepat harus diberikan dalam array konfigurasi 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[] di properti
  • configArray[4], 1 menunjukkan bahwa properti memiliki nilai Long
  • configArray[5], angka menunjukkan ukuran Long[] di properti
  • configArray[6], 1 menunjukkan bahwa properti memiliki nilai Float
  • configArray[7], angka menunjukkan ukuran Float[] di properti
  • configArray[8], angka ini menunjukkan ukuran byte[] di 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 berzona (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 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.
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 pada waktu booting. Harus 0 untuk semua jenis lainnya. Diabaikan jika keduanya 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 pada waktu booting jika properti ditentukan sebagai properti jenis enum. Jika tidak ditentukan (kosong) atau sebelum Android 14, semua nilai enum diasumsikan didukung.
  • Untuk properti global, jika nilai enum yang didukung perlu ditentukan, satu 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 dinamis yang didukung.
  • Hal 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 frekuensi pembaruan variabel untuk langganan agar menerima peristiwa pembaruan properti hanya saat nilai properti berubah (yang memperlakukan properti berkelanjutan sebagai properti saat berubah).
  • Jika semua pelanggan untuk properti mengaktifkan frekuensi pembaruan variabel, permintaan langganan ke VHAL akan mengaktifkan frekuensi pembaruan variabel untuk properti dan VHAL harus mengirim peristiwa pembaruan properti hanya saat nilai properti berubah.
  • Jika ada pelanggan yang meminta frekuensi pembaruan tetap, permintaan langganan ke VHAL akan menonaktifkan frekuensi pembaruan variabel untuk properti dan AAOS akan memfilter peristiwa duplikat untuk klien yang meminta frekuensi pembaruan variabel.
  • SANGAT DISARANKAN untuk mendukung kecepatan pembaruan variabel untuk semua properti berkelanjutan non-heartbeat untuk performa yang lebih baik, kecuali jika data properti berukuran besar (misalnya, array byte berukuran 1k) dan mungkin menempati memori dalam jumlah besar untuk penyimpanan dalam cache.
(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 bukan null, VHAL harus menerapkan API ini untuk ID properti dan ID area ini.
  • Jika null atau di Android 15 atau yang lebih lama, nilai yang didukung secara 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 mirror, menggunakan enum VehicleAreaMirror.
SEAT 0x05000000 Area berdasarkan kursi, menggunakan enum VehicleAreaSeat.
PINTU 0x06000000 Area berdasarkan pintu, menggunakan enum VehicleAreaDoor.
BIANGLALA 0x07000000 Area berdasarkan roda, menggunakan enum VehicleAreaWheel.

Setiap properti yang dizonasi harus menggunakan jenis area yang telah ditentukan sebelumnya. Setiap jenis area memiliki kumpulan 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 dengan zona ditangani melalui ID Area. Setiap properti berzona dapat mendukung satu atau beberapa ID Area. ID Area terdiri dari satu atau beberapa flag dari enum 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.