System operacyjny Android Automotive (AAOS) zawiera popularne właściwości VHAL, które mogą w oknie VHAL emulatora. Dzięki temu masz dostęp do mnóstwa informacji, o kodach VHAL, w tym o nazwach, opisach i znaczeniu wartości. Informacja jest wyodrębnionych z metadanych właściwości VHAL, które są zakodowane na stałe w Emulator QEMU.
Gdy dodasz własne właściwości VHAL do wyłącznego użytku na urządzeniach, wyświetlanie metadanych VHAL w oknie VHAL wymaga zmodyfikowania kodu i stworzenia niestandardowego emulatora QEMU. Do możesz obejść ten problem, możesz utworzyć własne opisy w formacie JSON i przesłać je do systemu .
Omówienie
Na tej stronie dowiesz się, jak rozszerzyć opisy właściwości VHAL w emulatorze AAOS.
Utwórz metadane JSON w celu rozszerzenia właściwości VHAL
Emulator szuka dodatkowych metadanych we wszystkich plikach z rozszerzeniem -types-meta.json
.
w ścieżce urządzenia wirtualnego z Androidem (AVD). Pliki JSON powinny zawierać tablicę
Enum
obiektów jak pokazano poniżej.
Obiekt typu enum
Obiekt Enum
o nazwie VehicleProperty
jest specjalnym przypadkiem, który
można traktować go jako pierwiastek. Jego zawartość jest dodawana do mapy właściwości pojazdu. Inny powód
Enums
(o nazwie innej niż VehicleProperty
) – zdefiniuj mapy nazw
niestandardowych.
Enum: { "name" : String, "values" : Array of { ValueObject } }
Obiekt wartości
ValueObject: { "name" : String, "value" : Integer, "data_enum" : String, VehicleProperty only, optional, }
W przypadku VehicleProperty
nazwa Enum
opisuje, jak
jest wyświetlana w oknie VHAL emulatora. Wartość to
property_id
właściwości opisanej w dokumencie ValueObject
.
data_enum
wiąże element ValueObject
z innym elementem Enum
.
To powiązanie służy do mapowania wartości na zrozumiały dla człowieka ciąg znaków i istnieje tylko w przypadku
ValueObjects
w: Enum
dla: VehicleProperty
.
Przykładowy element VehicleProperty
jest widoczny poniżej:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001 } ] } ]
W tym przykładzie: property_id
z wartością value
wynoszącą
289408001 jest podawany jako name
dla CURRENT_GEAR
.
W emulatorze ta właściwość jest już na stałe zakodowana jako nazwa Current Gear.
(Nie da się odtworzyć tego scenariusza, ponieważ ta strona została utworzona po usunięciu wszystkich
w celach demonstracyjnych).
Rysunek 1. Parametr Vehicleproperty zdefiniowany za pomocą nazwy i wartości.
Na karcie Właściwości VHAL emulatora nazwa jest odświeżana, aby można było odczytać dane.
CURRENT_GEAR
zgodnie z oczekiwaniami.
wyliczenie_danych
W tym przykładzie wyświetlana wartość to 4, gdy koło zębate jest ustawione na P.
Rysunek 2. Wartość wyświetlana jako 4.
Zgodnie z oczekiwaniami na karcie VHAL Właściwości w emulatorze nazwa będzie wyglądać tak:
CURRENT_GEAR
W przeciwieństwie do istniejącego emulatora, w którym jest wyświetlany jako
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, }
Aby dowiedzieć się więcej, przeczytaj AIDL, definicji.
Zgodnie z definicją w AIDL wartością sprzętu Park jest 4, co oznacza
oznacza, że trzeba przetłumaczyć wartość 4 na P. W tym momencie
użyj dyrektywy data_enum
, która mapuje wartość właściwości na zrozumiały dla człowieka ciąg znaków w innym
Enum
Emulator używa tej mapy do tłumaczenia wartości usług. Na przykład:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001, "data_enum": "VehicleGear" } ] }, { "name": "VehicleGear", "values": [ { "name": "GEAR_UNKNOWN", "value": 0 }, { "name": "GEAR_PARK", "value": 4 } ] } ]
Dodaj "data_enum": "VehicleGear"
, aby emulator używał parametru Enum
VehicleGear
, by przetłumaczyć wartość właściwości. Dodaj kolejny Enum
o nazwie VehicleGear
, a wartością jest tablica ValueObject
, gdzie
wartość właściwości (z wartością) powinna być wyświetlana jako nazwa.
Rysunek 3. Wartość wyświetlana jako GEAR_PARK.
Na karcie Właściwości VHAL emulatora nazwa jest odświeżana, aby można było odczytać nazwę.
CURRENT_GEAR
zgodnie z oczekiwaniami. Wartość właściwości 4
jest wyświetlana jako
GEAR_PARK
Używanie metadanych JSON do rozszerzania właściwości VHAL
Aby użyć metadanych JSON do rozszerzenia właściwości VHAL, uruchom Skrypt w Pythonie (zawarte w źródle Androida) w celu wygenerowania rozszerzonego kodu JSON właściwości na podstawie informacji w AIDL.
Powstały kod JSON zawiera nadmiarowe wartości, takie jak change_mode
,
access
i unit
. Chociaż informacje te należą do usługi VHAL,
te wartości JSON nie mają wpływu na zawartość wyświetlaną w oknie właściwości VHAL emulatora.
Dodaj metadane JSON do obrazu systemu
Pamiętaj, że nazwa pliku musi kończyć się na -types-meta.json
. Jeśli nie,
zignorowano.
Dodaj cel kompilacji
Dodaj plik -types-meta.json
do PRODUCT_COPY_FILE
. Dla:
przykład:
PRODUCT_COPY_FILES += \ device/generic/car/common/vehicle-types-meta.json:vehicle-types-meta.json
Ten kod powoduje skopiowanie pliku do katalogu głównego out/target/product/{your_target_path}/
,
gotowego docelowego wyniku.