Android Automotive OS (AAOS) berisi properti VHAL umum yang dapat dilihat di jendela VHAL emulator. Hasilnya, Anda dapat melihat banyak informasi tentang VHAL termasuk nama, deskripsi, dan arti nilai-nilainya. Informasinya diekstrak dari {i>metadata<i} properti VHAL, yang dikodekan khusus ke dalam Emulator QEMU.
Saat menambahkan properti VHAL Anda sendiri untuk penggunaan eksklusif di perangkat, melihat metadata VHAL di jendela VHAL mengharuskan Anda mengubah kode dan membangun emulator QEMU yang disesuaikan. Kepada mengatasi ini, Anda dapat menulis deskripsi Anda sendiri dalam format JSON dan ke sistem Anda gambar.
Ringkasan
Halaman ini menjelaskan cara memperluas deskripsi properti VHAL di emulator AAOS.
Membuat metadata JSON untuk memperluas properti VHAL
Emulator mencari metadata tambahan di semua file yang berakhiran -types-meta.json
di jalur Android Virtual Device (AVD). File JSON diharapkan terdiri dari array
Enum
seperti yang ditunjukkan di bawah ini.
Objek enum
Objek Enum
dengan nama VehicleProperty
adalah kasus khusus untuk
Anda dapat menganggapnya
sebagai {i>root<i}. Isinya ditambahkan ke peta properti kendaraan. Yang lain
Enums
(dengan nama selain VehicleProperty
) menentukan peta nama
nilai kustom.
Enum: { "name" : String, "values" : Array of { ValueObject } }
ObjekNilai
ValueObject: { "name" : String, "value" : Integer, "data_enum" : String, VehicleProperty only, optional, }
Untuk VehicleProperty
, nama Enum
mendeskripsikan cara
ditampilkan di jendela VHAL emulator. Nilainya adalah
property_id
properti yang dijelaskan oleh ValueObject
.
data_enum
mengaitkan ValueObject
dengan Enum
lainnya.
Pengaitan ini digunakan untuk memetakan nilai menjadi string yang dapat dibaca manusia dan hanya ada untuk
ValueObjects
dalam Enum
untuk VehicleProperty
.
Contoh VehicleProperty
ditampilkan di bawah ini:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001 } ] } ]
Dalam contoh ini, property_id
dengan value
289408001 disediakan sebagai name
untuk CURRENT_GEAR
.
Di emulator, properti ini sudah di-hard code sebagai nama, Current Gear.
(Anda tidak dapat mereproduksi skenario ini karena halaman ini ditulis setelah menghapus semua kode hard code
properti untuk tujuan demonstrasi.)
Gambar 1. VehicleProperty yang ditentukan dengan nama dan nilai.
Di tab VHAL Properties pada emulator, nama akan dimuat ulang agar dapat dibaca
CURRENT_GEAR
seperti yang diharapkan.
enum_data
Pada contoh di atas, nilai yang ditampilkan adalah 4 jika roda gigi disetel ke P.
Gambar 2. Nilai ditampilkan sebagai 4.
Sebagaimana diinginkan, pada tab VHAL Properties di emulator, nama akan muncul sebagai
CURRENT_GEAR
. Hal ini berbeda dengan emulator yang ada, yang ditampilkan sebagai
P.
enum VehicleGear { GEAR_UNKNOWN = 0x0000, GEAR_NEUTRAL = 0x0001, GEAR_REVERSE = 0x0002, GEAR_PARK = 0x0004, GEAR_DRIVE = 0x0008, GEAR_1 = 0x0010, GEAR_2 = 0x0020, GEAR_3 = 0x0040, GEAR_4 = 0x0080, GEAR_5 = 0x0100, GEAR_6 = 0x0200, GEAR_7 = 0x0400, GEAR_8 = 0x0800, GEAR_9 = 0x1000, }
Untuk mempelajari lebih lanjut, lihat AIDL definisi.
Seperti yang ditentukan dalam AIDL, nilai roda gigi Park adalah 4, yang
berarti Anda perlu menerjemahkan nilai 4 ke P. Ini adalah saat Anda
gunakan data_enum
, yang memetakan nilai properti ini ke string yang dapat dibaca manusia
Enum
. Emulator menggunakan peta ini untuk menerjemahkan nilai properti. Contoh:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001, "data_enum": "VehicleGear" } ] }, { "name": "VehicleGear", "values": [ { "name": "GEAR_UNKNOWN", "value": 0 }, { "name": "GEAR_PARK", "value": 4 } ] } ]
Menambahkan "data_enum": "VehicleGear"
sehingga emulator menggunakan Enum
bernama VehicleGear
untuk menerjemahkan nilai properti. Tambahkan Enum
lain
bernama VehicleGear
dengan nilai berupa array ValueObject
, dengan
nilai properti (dengan nilai) harus ditampilkan sebagai nama.
Gambar 3. Nilai ditampilkan sebagai GEAR_PARK.
Pada tab VHAL Properties untuk emulator, nama akan dimuat ulang agar dapat dibaca
CURRENT_GEAR
, seperti yang diharapkan. Nilai properti 4
ditampilkan sebagai
GEAR_PARK
.
Menggunakan metadata JSON untuk memperluas properti VHAL
Untuk menggunakan metadata JSON guna memperluas properti VHAL Anda, jalankan perintah ini Skrip Python (ada dalam sumber Android) untuk membuat JSON properti yang diperluas dari informasi di AIDL.
JSON yang dihasilkan mencakup beberapa nilai redundan, seperti change_mode
,
access
, dan unit
. Meskipun informasi ini
adalah bagian dari properti VHAL,
nilai JSON ini tidak memengaruhi apa yang ditampilkan di jendela properti VHAL emulator.
Menambahkan metadata JSON ke image sistem
Perlu diingat bahwa nama file harus diakhiri dengan -types-meta.json
. Jika tidak, file tersebut
diabaikan.
Menambahkan target build
Tambahkan file -types-meta.json
ke PRODUCT_COPY_FILE
. Contoh:
PRODUCT_COPY_FILES += \ device/generic/car/common/vehicle-types-meta.json:vehicle-types-meta.json
Kode ini menyalin file ke out/target/product/{your_target_path}/
, root
output target yang dibuat.