מערכת ההפעלה 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}/
, השורש של פלט היעד הבנוי שלך.