Android Automotive OS (AAOS), bir emülatör VHAL penceresinde görüntülenebilen yaygın VHAL özelliklerini içerir. Sonuç olarak, adlar, açıklamalar ve değerlerin anlamı da dahil olmak üzere VHAL'ler hakkında çok sayıda bilgi görüntüleyebilirsiniz. Bilgiler, QEMU emülatörüne yerleştirilmiş olan VHAL mülklerinin meta verilerinden alınır.
Cihazlarınızda özel olarak kullanmak üzere kendi VHAL mülklerinizi eklediğinizde, VHAL meta verilerini VHAL penceresinde görüntülemek için kodu değiştirmeniz ve özelleştirilmiş bir QEMU emülatör oluşturmanız gerekir. Bu sorunu gidermek için kendi açıklamalarınızı JSON biçiminde yazıp sistem resminize ekleyebilirsiniz.
Genel Bakış
Bu sayfada, AAOS emülatöründe VHAL mülk açıklamalarını nasıl genişletebileceğiniz ayrıntılı olarak açıklanmaktadır.
VHAL özelliklerini genişletmek için JSON meta verileri oluşturma
Emülatör, Android sanal cihaz (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 Enum
nesnesi dizisinden oluşması beklenir.
Enum nesnesi
VehicleProperty
adlı Enum
nesnesi, özel bir durumdur. Bu nesneyi kök olarak düşünebilirsiniz. İçeriği, araç özellikleri haritasına eklenir. Diğer Enums
(VehicleProperty
dışında bir ada sahip), özel değerlerin adlarının haritalarını tanımlar.
Enum: { "name" : String, "values" : Array of { ValueObject } }
ValueObject
ValueObject: { "name" : String, "value" : Integer, "data_enum" : String, VehicleProperty only, optional, }
VehicleProperty
için Enum
adı, bu mülkün emülatörün VHAL penceresinde nasıl görüntülendiğini açıklar. Değer, ValueObject
tarafından tanımlanan mülkün property_id
özelliğidir.
data_enum
, ValueObject
'u başka bir Enum
ile ilişkilendirir.
Bu ilişkilendirme, bir değeri insan tarafından okunabilir bir dizeye eşlemek için kullanılır ve yalnızca VehicleProperty
için Enum
alanındaki ValueObjects
için mevcuttur.
Aşağıda VehicleProperty
örneği gösterilmektedir:
[ { "name": "VehicleProperty", "values": [ { "name": "CURRENT_GEAR", "value": 289408001 } ] } ]
Bu örnekte, CURRENT_GEAR
için name
olarak 289408001 value
değerine sahip bir property_id
sağlanmıştır.
Bu mülk, emülatörde Mevcut Vites adı olarak zaten sabit kodlanmıştır.
(Bu sayfa, açıklama amacıyla tüm sabit kodlu mülkler kaldırıldıktan sonra oluşturulduğu için bu senaryoyu yeniden oluşturamazsınız.)
Şekil 1. Adı ve değeriyle tanımlanan VehicleProperty.
Emülatör'ün VHAL Özellikleri sekmesinde ad, beklenen şekilde CURRENT_GEAR
olarak yenilenir.
data_enum
Yukarıdaki örnekte, vites P olarak ayarlandığında gösterilen değer 4'tür.
Şekil 2. Değer 4 olarak gösterilir.
Amaçlandığı gibi, emülatördeki VHAL Özellikleri sekmesinde ad CURRENT_GEAR
olarak görünür. Bu, mevcut emülatörde P olarak gösterilen duruma kıyasla farklıdır.
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 için AIDL tanımına bakın.
AIDL'de tanımlandığı gibi, Park vitesinin değeri 4'tür. Bu, 4 değerini P olarak çevirmeniz gerektiği anlamına gelir. Bu durumda, bu özellik değerini başka bir Enum
içindeki kullanıcı tarafından okunabilir bir diziyle eşleyen data_enum
işlevini kullanırsınız. Emülatör, mülk değerlerini çevirmek için bu haritayı kullanır. Örnek:
[ { "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 emülatör, mülk değerini çevirmek için VehicleGear
adlı bir Enum
kullanır. VehicleGear
adlı başka bir Enum
ekleyin. Bu Enum
'nin değeri ValueObject
dizisi olmalıdır. Bu durumda, özellik değeri (değerle birlikte) ad olarak gösterilir.
Şekil 3. GEAR_PARK olarak görüntülenen değer.
Emülatör için VHAL Özellikleri sekmesinde ad, beklendiği gibi CURRENT_GEAR
olarak yenilenir. 4
mülk değeri GEAR_PARK
olarak gösterilir.
VHAL özelliklerini genişletmek için JSON meta verilerini kullanma
VHAL mülklerinizi genişletmek için JSON meta verilerini kullanmak istiyorsanız bu Python komut dosyasını (Android kaynağında bulunur) çalıştırarak AIDL'deki bilgilerden genişletilmiş mülk JSON'unu oluşturun.
Elde edilen JSON, change_mode
,
access
ve unit
gibi bazı gereksiz değerler içerir. Bu bilgiler VHAL mülkünün bir parçası olsa da bu JSON değerleri, emülatörün VHAL mülk penceresinde gösterilenleri etkilemez.
Sistem görüntüsüne JSON meta verileri ekleme
Dosya adının -types-meta.json
ile bitmesi gerektiğini unutmayın. Aksi takdirde dosya yoksayılır.
Derleme hedefi ekleme
-types-meta.json
dosyasını PRODUCT_COPY_FILE
'a ekleyin. Örneğin:
PRODUCT_COPY_FILES += \ device/generic/car/common/vehicle-types-meta.json:vehicle-types-meta.json
Bu kod, dosyayı derlenmiş hedef çıkışınızın kökü olan out/target/product/{your_target_path}/
içine kopyalar.