הרחבת תיאורי מאפייני VHAL באמולטור

מערכת ההפעלה Android Automotive (AAOS) מכילה מאפייני VHAL נפוצים שניתן לצפות בהם בחלון VHAL של אמולטור. כתוצאה מכך, אתה יכול לראות שפע של מידע על VHALs כולל שמות, תיאורים ומשמעות הערכים. המידע מופק מהמטא-נתונים של מאפייני VHAL, המקודדים בצורה קשיחה לאמולטור QEMU .

כאשר אתה מוסיף מאפייני VHAL משלך לשימוש בלעדי במכשירים שלך, הצגת מטא נתונים של VHAL בחלון VHAL מחייבת אותך לשנות את הקוד ולבנות אמולטור QEMU מותאם אישית. כדי לעקוף את זה, אתה יכול לכתוב תיאורים משלך בפורמט JSON ואותם לתמונת המערכת שלך.

סקירה כללית

דף זה מפרט כיצד ניתן להרחיב את תיאורי מאפייני VHAL באמולטור AAOS.

צור מטא נתונים של JSON כדי להרחיב את מאפייני VHAL

האמולטור מחפש מטא נתונים נוספים בכל הקבצים המסתיימים ב- -types-meta.json בנתיב Android Virtual Device (AVD). קובצי JSON צפויים להיות מורכבים ממערך של אובייקטי Enum כפי שמוצג להלן.

אובייקט Enum

האובייקט Enum עם השם VehicleProperty הוא מקרה מיוחד בכך שאתה יכול לראות אותו כשורש. התוכן שלו מתווסף למפת מאפייני הרכב. Enums אחרים (עם שם אחר מאשר VehicleProperty ) מגדירים מפות של שמות הערכים המותאמים אישית.

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

ValueObject

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

עבור VehicleProperty , השם Enum מתאר כיצד מאפיין זה מוצג בחלון VHAL של האמולטור. הערך הוא ה- property_id של המאפיין המתואר על ידי ה- ValueObject . data_enum משייך ValueObject ל- Enum אחר. שיוך זה משמש למיפוי ערך למחרוזת קריא אנושית וקיים רק עבור ValueObjects ב- Enum for the VehicleProperty . דוגמה של VehicleProperty מוצגת להלן:

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

בדוגמה זו, property_id עם value של 289408001 מסופק name עבור CURRENT_GEAR . באמולטור, מאפיין זה כבר מקודד כשם, Current Gear . (לא ניתן לשחזר תרחיש זה מכיוון שדף זה נכתב לאחר הסרת כל המאפיינים המקודדים בקשיחה למטרות הדגמה.)

איור 1. נכס רכב מוגדר עם שם וערך.

בלשונית VHAL Properties של האמולטור, השם מתרענן לקריאת CURRENT_GEAR כצפוי.

data_enum

בדוגמה שלמעלה, הערך המוצג הוא 4 כאשר ההילוך מוגדר ל- P .

איור 2. הערך מוצג כ-4.

כמתוכנן, בכרטיסייה מאפייני VHAL באמולטור, השם מופיע בתור CURRENT_GEAR . זאת בניגוד לאמולטור הקיים, שבו הוא מוצג כ- 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,
}

למידע נוסף, עיין בהגדרת AIDL .

כפי שהוגדר ב-AIDL, הערך של ציוד הפארק הוא 4 , מה שאומר שאתה צריך לתרגם את הערך 4 ל- P. זה כאשר אתה משתמש ב- data_enum , אשר ממפה את ערך המאפיין הזה למחרוזת קריא אנושית ב- Enum אחר. האמולטור משתמש במפה זו כדי לתרגם ערכי מאפיינים. לדוגמה:

[
    {
        "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" , כך שהאמולטור ישתמש ב- Enum בשם VehicleGear כדי לתרגם את ערך המאפיין. הוסף עוד Enum בשם VehicleGear כשהערך הוא מערך של ValueObject , כאשר ערך המאפיין (עם הערך) אמור להיות מוצג כשם.

איור 3. הערך מוצג כ-GEAR_PARK.

בכרטיסייה מאפייני VHAL של האמולטור, השם מתרענן לקריאת CURRENT_GEAR , כצפוי. ערך המאפיין של 4 מוצג בתור GEAR_PARK .

השתמש במטא נתונים של JSON כדי להרחיב את מאפייני VHAL

כדי להשתמש במטא נתונים של JSON כדי להרחיב את מאפייני ה-VHAL שלך, הפעל את הסקריפט הזה של Python (שכלול במקור האנדרואיד) כדי ליצור את המאפיין המורחב JSON ממידע ב-AIDL.

ה-JSON המתקבל כולל כמה ערכים מיותרים, כגון change_mode , access ו- unit . למרות שמידע זה הוא חלק מהמאפיין VHAL, ערכי JSON אלה אינם משפיעים על מה שמוצג בחלון מאפיין VHAL של האמולטור.

הוסף מטא נתונים של JSON לתמונת המערכת

שים לב ששם קובץ חייב להסתיים ב- -types-meta.json . אם לא, הקובץ מתעלם.

הוסף יעד בנייה

הוסף את הקובץ -types-meta.json ל- PRODUCT_COPY_FILE . לדוגמה:

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

קוד זה מעתיק את הקובץ אל out/target/product/{your_target_path}/ , השורש של פלט היעד הבנוי שלך.