Emülatördeki VHAL özellik açıklamalarını genişlet

Android Automotive OS (AAOS), aşağıdaki işlemleri gerçekleştirmek için kullanılan VHAL özelliklerini içerir: bir emülatörün VHAL penceresinde görüntülenebilir. Sonuç olarak, sitenizde yer alan birçok bilgiyi VHAL'ler hakkında bilgi (ör. adlar, açıklamalar ve değerlerin anlamı). Bilgiler, kodu, VHAL mülklerinin meta verilerinden ayıklanır ve QEMU emülatörü.

Cihazlarınızda özel kullanım için kendi VHAL mülklerinizi eklediğinizde VHAL meta verilerini görüntüleme kodunu değiştirmeniz ve özelleştirilmiş bir QEMU emülatörü oluşturmanız gerekir. Alıcı: Bu sorunu çözmek için kendi açıklamalarınızı JSON biçiminde, dilerseniz de kendi açıklamalarınızı görüntüsüdür.

Genel Bakış

Bu sayfada, AAOS emülatöründe VHAL özellikleri açıklamalarını nasıl genişletebileceğiniz açıklanmaktadır.

VHAL özelliklerini genişletmek için JSON meta verileri oluşturma

Emülatör, -types-meta.json ile biten tüm dosyalarda ek meta veri arar Android Sanal Cihaz (AVD) yolunda JSON dosyalarının bir dizi Enum nesne aşağıda gösterildiği gibidir.

Sıralama nesnesi

VehicleProperty adlı Enum nesnesi, That'teki özel bir durumdur. bunu bir kök olarak düşünebilirsiniz. İçerikleri, araç özellikleri haritasına eklenir. Diğer Enums (VehicleProperty dışında bir adla), adların haritalarını tanımlar seçmeniz gerekir.

Enum: {
  "name" : String,
  "values" : Array of { ValueObject }
}  

DeğerNesnesi

ValueObject: {
  "name" : String,
  "value" : Integer,
  "data_enum" : String, VehicleProperty only, optional,
}

VehicleProperty için Enum adı bunun nasıl olduğunu açıklar özelliği, emülatörün VHAL penceresinde görüntülenir. Değer ValueObject tarafından açıklanan özelliğin property_id. data_enum, ValueObject öğesini başka bir Enum ile ilişkilendirir. Bu ilişkilendirme, bir değeri okunabilir bir dizeyle eşlemek için kullanılır ve yalnızca VehicleProperty için Enum wicket'ta ValueObjects. Aşağıda bir VehicleProperty örneği verilmiştir:

[
  {
      "name": "VehicleProperty",
      "values": [
          {
              "name": "CURRENT_GEAR",
              "value": 289408001
          }
      ]
  }
]

Bu örnekte, value değerine sahip bir property_id 289408001, CURRENT_GEAR için name olarak sağlanır. Bu özellik emülatörde zaten Current Gear adıyla sabit kodlanmıştır. (Bu sayfa, sabit kodlu tüm dosyalar kaldırıldıktan sonra yazıldığı için bu senaryoyu yeniden oluşturamazsınız özel mülk olabilir.)

Şekil 1. VehicleProperty, ad ve değeriyle tanımlanır.

Emülatörün VHAL Özellikleri sekmesinde ad, okunacak şekilde yenilenir. Beklendiği gibi CURRENT_GEAR.

veri_sıralaması

Yukarıdaki örnekte, dişli çark olarak ayarlandığında görüntülenen değer 4'tür. P.

Şekil 2. Değer 4 olarak gösterilir.

Amaçlandığı gibi emülatördeki VHAL Özellikleri sekmesinde ad şu şekilde görünür: CURRENT_GEAR. Bu, 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,
}

Daha fazla bilgi edinmek için AIDL belirler.

AIDL'de tanımlandığı gibi, Park dişlisinin değeri 4'tür. 4 değerini P'ye çevirmeniz gerektiği anlamına gelir. Bu aşamada bu özellik değerini başka bir yerde okunabilir bir dizeyle eşleyen data_enum kullanın Enum. 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
            }
        ]
    }

]

Emülatörün Enum kullanması için "data_enum": "VehicleGear" ekleyin VehicleGear olarak adlandırıldı. Başka bir Enum ekle VehicleGear adlı bir ValueObject dizisidir. Burada özellik değeri (değerle birlikte) bir ad olarak görüntülenmelidir.

Şekil 3. Değer GEAR_PARK olarak gösteriliyor.

Emülatörün VHAL Özellikleri sekmesinde ad, okunmak üzere yenilenir. Beklendiği gibi CURRENT_GEAR. 4 özellik değeri şu şekilde görüntülenir: GEAR_PARK.

VHAL özelliklerini genişletmek için JSON meta verilerini kullanma

JSON meta verilerini kullanarak VHAL özelliklerinizi genişletmek için şu komutu çalıştırın: Python komut dosyası (Android kaynağında yer alır) AIDL.

Sonuçta ortaya çıkan JSON, change_mode gibi bazı gereksiz değerler içerir. access ve unit. Bu bilgiler VHAL mülkünün bir parçası olsa da bu JSON değerleri, emülatörün VHAL özellik penceresinde gösterilenleri etkilemez.

Sistem görüntüsüne JSON meta verilerini ekleyin

Dosya adının -types-meta.json ile bitmesi gerektiğini unutmayın. Değilse dosya yoksayıldı.

Derleme hedefi ekleme

-types-meta.json dosyasını PRODUCT_COPY_FILE klasörüne ekleyin. Örneğin, örnek:

PRODUCT_COPY_FILES += \
    device/generic/car/common/vehicle-types-meta.json:vehicle-types-meta.json

Bu kod, dosyayı kök olan out/target/product/{your_target_path}/ klasörüne kopyalar sayısını artırır.