Android Automotive OS (AAOS), bir öykünücünün VHAL penceresinde görüntülenebilen ortak VHAL özelliklerini içerir. Sonuç olarak VHAL'ler hakkında adlar, açıklamalar ve değerlerin anlamları dahil çok sayıda bilgiyi görüntüleyebilirsiniz. Bilgiler, QEMU öykünücüsüne sabit kodlanmış olan VHAL özelliklerinin meta verilerinden çıkarılır.
Cihazlarınızda özel kullanım için kendi VHAL özelliklerinizi eklediğinizde, VHAL penceresinde VHAL meta verilerini görüntülemek, kodu değiştirmenizi ve özelleştirilmiş bir QEMU öykünücüsü oluşturmanızı gerektirir. Bu sorunu çözmek için kendi açıklamalarınızı JSON formatında ve sistem görüntünüze yazabilirsiniz.
Genel Bakış
Bu sayfada, bir AAOS öykünücüsünde VHAL özellikleri açıklamalarını nasıl genişletebileceğiniz ayrıntılarıyla anlatılmaktadır.
VHAL özelliklerini genişletmek için JSON meta verileri oluşturun
Emülatör, Android Sanal Aygıt (AVD) yolunda -types-meta.json
ile biten tüm dosyalarda ek meta veriler arar. JSON dosyalarının aşağıda gösterildiği gibi bir dizi Enum
nesnesinden oluşması beklenir.
Nesneyi numaralandır
VehicleProperty
isimli Enum
nesnesi kök olarak düşünebileceğiniz özel bir durumdur. İçeriği araç özellikleri haritasına eklenir. Diğer Enums
( VehicleProperty
dışında bir adla) özel değerlerin adlarının eşlemelerini tanımlar.
Enum: { "name" : String, "values" : Array of { ValueObject } }
DeğerObjesi
ValueObject: { "name" : String, "value" : Integer, "data_enum" : String, VehicleProperty only, optional, }
VehicleProperty
için Enum
adı, bu özelliğin öykünücünün VHAL penceresinde nasıl görüntülendiğini açıklar. Değer, ValueObject
tarafından tanımlanan özelliğin property_id
. data_enum
ValueObject
başka bir Enum
ile ilişkilendirir. Bu ilişkilendirme, bir değeri insan tarafından okunabilen bir dizeye eşlemek için kullanılır ve yalnızca Enum
VehicleProperty
ValueObjects
için mevcuttur. VehicleProperty
örneği aşağıda gösterilmektedir:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001 } ] } ]
Bu örnekte CURRENT_GEAR
için name
olarak 289408001 value
sahip bir property_id
sağlanmıştır. Öykünücüde bu özellik zaten Current Gear adı olarak sabit kodlanmıştır. (Bu sayfa, gösterim amacıyla tüm sabit kodlu özellikler kaldırıldıktan sonra yazıldığı için bu senaryoyu yeniden oluşturamazsınız.)
Şekil 1. Adı ve değeri ile tanımlanan Araç Özelliği.
Emülatörün VHAL Özellikleri sekmesinde, ad beklendiği gibi CURRENT_GEAR
okuyacak şekilde yenilenir.
veri_enum
Yukarıdaki örnekte vites P olarak ayarlandığında görüntülenen değer 4'tür .
Şekil 2. Değer 4 olarak görüntülenir.
Amaçlandığı gibi öykünücünün VHAL Özellikleri sekmesinde ad CURRENT_GEAR
olarak görünür. Bu, P olarak görüntülendiği mevcut öykünücünün tersidir.
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, }
Daha fazla bilgi edinmek için AIDL tanımına bakın.
AIDL'de tanımlandığı gibi Park dişlisinin değeri 4'tür , yani 4 değerini P'ye çevirmeniz gerekir. Bu, bu özellik değerini başka bir Enum
insanlar tarafından okunabilen bir dizeyle eşleyen data_enum
kullandığınız zamandır. Emülatör bu haritayı özellik değerlerini çevirmek için kullanır. Örneğin:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001, "data_enum": "VehicleGear" } ] }, { "name": "VehicleGear", "values": [ { "name": "GEAR_UNKNOWN", "value": 0 }, { "name": "GEAR_PARK", "value": 4 } ] } ]
"data_enum": "VehicleGear"
ekleyin, böylece öykünücü, özellik değerini çevirmek için VehicleGear
adlı bir Enum
kullanır. Değeri ValueObject
dizisi olan ve özellik değerinin (değerle birlikte) bir ad olarak görüntülenmesi gereken VehicleGear
adında başka bir Enum
ekleyin.
Şekil 3. GEAR_PARK olarak gösterilen değer.
Emülatörün VHAL Özellikleri sekmesinde beklendiği gibi ad CURRENT_GEAR
okuyacak şekilde yenilenir. 4
özellik değeri GEAR_PARK
olarak görüntülenir.
VHAL özelliklerini genişletmek için JSON meta verilerini kullanın
VHAL özelliklerinizi genişletmek amacıyla JSON meta verilerini kullanmak için, AIDL'deki bilgilerden genişletilmiş JSON özelliğini oluşturmak üzere bu Python betiğini (Android kaynağında bulunur) çalıştırın.
Ortaya çıkan JSON, change_mode
, access
ve unit
gibi bazı gereksiz değerleri içerir. Bu bilgiler VHAL özelliğinin bir parçası olsa da bu JSON değerleri öykünücünün VHAL özellik penceresinde görüntülenenleri etkilemez.
JSON meta verilerini sistem görüntüsüne ekleme
Bir dosya adının -types-meta.json
ile bitmesi gerektiğine dikkat edin. Aksi takdirde dosya dikkate alınmaz.
Yapı hedefi ekleme
-types-meta.json
dosyasını PRODUCT_COPY_FILE
dosyasına ekleyin. Örneğin:
PRODUCT_COPY_FILES += \ device/generic/car/common/vehicle-types-meta.json:vehicle-types-meta.json
Bu kod, dosyayı yerleşik hedef çıktınızın kökü olan out/target/product/{your_target_path}/
dizinine kopyalar.