Android Automotive OS (AAOS) berisi properti VHAL umum yang dapat dilihat di jendela VHAL emulator. Akibatnya, Anda dapat melihat banyak informasi tentang VHAL, termasuk nama, deskripsi, dan makna nilai. Informasi ini diekstrak dari metadata properti VHAL, yang di-hardcode ke dalam emulator QEMU.
Saat menambahkan properti VHAL Anda sendiri untuk penggunaan eksklusif di perangkat, Anda harus mengubah kode dan mem-build emulator QEMU yang disesuaikan untuk melihat metadata VHAL di jendela VHAL. Untuk mengatasi hal ini, Anda dapat menulis deskripsi Anda sendiri dalam format JSON dan menempelkannya ke image sistem.
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 diakhiri dengan -types-meta.json
di jalur Perangkat Virtual Android (AVD). File JSON diharapkan terdiri dari array objek
Enum
seperti yang ditunjukkan di bawah.
Objek enum
Objek Enum
dengan nama VehicleProperty
adalah kasus khusus dalam Yang
Anda dapat menganggapnya sebagai root. Kontennya ditambahkan ke peta properti kendaraan. Enums
lainnya (dengan nama selain VehicleProperty
) menentukan peta nama
nilai kustom.
Enum: { "name" : String, "values" : Array of { ValueObject } }
ValueObject
ValueObject: { "name" : String, "value" : Integer, "data_enum" : String, VehicleProperty only, optional, }
Untuk VehicleProperty
, nama Enum
menjelaskan cara properti
ini ditampilkan di jendela VHAL emulator. Nilainya adalah
property_id
properti yang dijelaskan oleh ValueObject
.
data_enum
mengaitkan ValueObject
dengan Enum
lain.
Atribusi ini digunakan untuk memetakan nilai ke string yang dapat dibaca manusia dan hanya ada untuk
ValueObjects
di 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-hardcode sebagai nama, Current Gear.
(Anda tidak dapat mereproduksi skenario ini karena halaman ini dibuat setelah menghapus semua properti hard code
untuk tujuan demonstrasi.)
Gambar 1. VehicleProperty ditentukan dengan nama dan nilai.
Di tab Properti VHAL emulator, nama akan dimuat ulang untuk membaca
CURRENT_GEAR
seperti yang diharapkan.
data_enum
Pada contoh di atas, nilai yang ditampilkan adalah 4 saat gigi disetel ke P.
Gambar 2. Nilai ditampilkan sebagai 4.
Seperti yang diinginkan, pada tab VHAL Properties di emulator, namanya 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 definisi AIDL.
Seperti yang ditentukan dalam AIDL, nilai roda gigi Park adalah 4, yang
berarti Anda perlu menerjemahkan nilai 4 menjadi P. Hal ini terjadi saat Anda
menggunakan data_enum
, yang memetakan nilai properti ini ke string yang dapat dibaca manusia di
Enum
lain. 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 } ] } ]
Tambahkan "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.
Di tab VHAL Properties untuk emulator, nama akan dimuat ulang untuk membaca
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, jalankan skrip Python ini (terdapat dalam sumber Android) untuk membuat JSON properti yang diperluas dari informasi di AIDL.
JSON yang dihasilkan menyertakan beberapa nilai yang berlebihan, 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
Perhatikan bahwa nama file harus diakhiri dengan -types-meta.json
. Jika tidak, file akan
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 di-build.