הגדרות נכס

כל נכס נתמך מצוין על ידי הגדרת נכס שמוגדרת באמצעות המבנה VehiclePropConfig, וכולל את השדות הבאים.

שדה תיאור
prop

מזהה הנכס. זה חייב להיות אחד ממאפייני המערכת שהוגדרו בקובץ VehicleProperty.aidl או מאפיין של ספק. מזהה הנכס נוצר באמצעות אופרטור 'או' ביטים של השדות הבאים (ימינה לשמאל):

  • (0x00000000) 16 ביט: מזהה ייחודי מטווח 0x0100 עד 0xffff.
  • (0x00000000) 8 ביט: סוגי נכסים שמגדירים את הסוג של הנכס.
  • (0x00000000) 4 ביט: סוגים של אזורים.
  • (0x00000000) 4 ביט: VehiclePropertyGroup הערך הוא SYSTEM (0x10000000) או VENDOR (0x20000000). במאמר מאפייני ספקים מפורטות תכונות שאפשר להתאים אישית.

לדוגמה,
INFO_VIN (0x11100100) = UniqueID (0x00000100) | VehiclePropertyType.STRING (0x00100000) | VehicleArea.GLOBAL (0x01000000) | VehiclePropertyGroup.SYSTEM (0x10000000)

access
  • מצב הגישה לנכס. הערך חייב להיות אחד מהערכים הבאים: READ, WRITE או READ_WRITE.
  • במאפייני מערכת, זה חייב להיות אחד ממצבי הגישה שהוגדרו במסמך VehicleProperty.aidl.
  • בנכסים שיש להם גישה לפי אזור, זהו קבוצת המשנה המקסימלית של הגישה לפי אזור. לדוגמה, אם לנכסים יש שני אזורים שהגישה שלהם היא READ ו-READ_WRITE, צריך להגדיר את הערך הזה כ-READ.
changeMode
  • שינוי המצב של הנכס. חייב להיות אחד מהערכים הבאים: STATIC,‏ ON_CHANGE או CONTINUOUS. הערך STATIC מציין שערך המאפיין לא משתנה אף פעם אחרי הפעלת המערכת. הערך ON_CHANGE מציין שה-VHAL חייב לדווח כשהערך משתנה. הערך CONTINUOUS מציין שערך הנכס משתנה באופן קבוע, ו-VHAL צריך לדווח על סמך קצב הדגימה של המינוי.
  • במאפייני מערכת, הערך הזה צריך להיות שווה למצב השינוי שמתואר ב-VehicleProperty.aidl.
configArray מערך אופציונלי שמכיל הגדרות ספציפיות לנכס. השדה יכול להיות ריק. למאפייני מערכת מסוימים, למשל GEAR_SELECTION, למערך ההגדרות יש משמעות מיוחדת וצריך לציין אותו.
configString מחרוזת אופציונלית שכוללת הגדרות ספציפיות למאפיין. השדה יכול להיות ריק.
minSampleRate וגם maxSampleRate קצב הדגימה המינימלי והמקסימלי שנתמך לנכס רציף (בהרץ). לא בשימוש אם הנכס לא רציף. ההטמעה של VHAL חייבת לאפשר את השלמת minSampleRate ו-maxSampleRate. לא חייבים לתמוך בכל שיעורי הדגימה שבין הערך המינימלי למקסימלי.

סוגי נכסים

מוגדרים כ-enums ב-VehiclePropertyType.aidl. סוגי הנכסים הנתמכים מפורטים בטבלה הבאה.

סוג הנכס ערך תיאור
STRING 0x00100000 מאפיין מחרוזת, נעשה בו שימוש בשדה stringValue בקטע ערך מאפיין הרכב.
BOOLEAN 0x00200000 נכס Boolean, משתמש ברכיב הראשון בשדה int32Values בקטע ערך נכס הרכב. 0 פירושו false, ו-None 0 פירושו true.
INT32 0x00400000 נכס Integer, משתמש ברכיב הראשון בשדה int32Values בקטע ערך נכס הרכב.
INT32_VEC 0x00410000 Integer[], משתמש ברכיבים בשדה int32Values בקטע ערך מאפיין הרכב.
INT64 0x00500000 מאפיין ארוך, שמשתמש ברכיב הראשון בשדה int64Values בקטע ערך מאפיין הרכב.
INT64_VEC 0x00510000 המאפיין Long[] משתמש ברכיבים בשדה int64Values בקטע ערך מאפיין הרכב.
FLOAT 0x00600000 נכס Float, משתמש ברכיב הראשון בשדה floatValues בקטע ערך נכס הרכב.
FLOAT_VEC 0x00610000 המאפיין Float[] משתמש ברכיבים בשדה floatValues בקטע ערך מאפיין הרכב.
BYTES 0x00700000 המאפיין byte[] משתמש ברכיבים בשדה byteValues בקטע ערך מאפיין הרכב.
MIXED 0x00e00000 נכס מסוג מעורב. כל שילוב של סוגי סקלר או וקטור. צריך לציין את הפורמט המדויק במערך ההגדרות בהגדרות הנכס.

בנכסים מסוג MIXED של ספקים, צריך להגדיר את הפורמט של configArray לפי המבנה הבא:

  • configArray[0], הערך 1 מציין שלנכס יש ערך String
  • configArray[1], הערך 1 מציין שלנכס יש ערך Boolean
  • configArray[2], הערך 1 מציין שלנכס יש ערך Integer
  • configArray[3], המספר מציין את הגודל של Integer[] בנכס
  • configArray[4], הערך 1 מציין שלנכס יש ערך Long
  • configArray[5], המספר מציין את הגודל של Long[] בנכס
  • configArray[6], הערך 1 מציין שלנכס יש ערך Float
  • configArray[7], המספר מציין את הגודל של Float[] בנכס
  • configArray[8], המספר מציין את הגודל של byte[] בנכס.

לדוגמה, הערך configArray = {1, 1, 1, 3, 0, 0, 0, 0, 0} מציין למאפיין יש ערך String, ערך Boolean, ערך Integer ומערך עם שלושה מספרים שלמים.

הגדרת מזהה אזור

כל הגדרת נכס יכולה להכיל גם רשימה של הגדרות של מזהי אזורים. הרשימה הזו היא אופציונלית לנכסים גלובליים, והיא חובה לנכסים מחולקים לאזורים (נכסים עם כמה אזורים נתמכים). לכל הגדרה של מזהה אזור יש את השדות הבאים.

שדה תיאור
areaId המזהה של האזור הזה. מזהי אזורים
minInt32Value וגם maxInt32Value
  • ערך מינימלי ומקסימלי אופציונלי למאפיינים מסוג INT32 בזמן האתחול. חייב להיות 0 בשאר הסוגים. המערכת תתעלם מהמאפיין אם שני הערכים הם 0.
  • בנכס גלובלי, אם צריך להגדיר ערך מינימלי ומקסימלי, צריך להשתמש בהגדרת אזור אחת עם מזהה האזור 0.
  • הערך הזה הוא סטטי ולא ישתנה גם אם הערך המינימלי או המקסימלי ישתנה במהלך זמן הריצה. מטמיעים את IVehicle#getMinMaxSupportedValue לערך דינמי מינימלי או מקסימלי.
minInt64Value וגם maxInt64Value
  • ערך מינימלי ומקסימלי אופציונלי לנכסים מסוג INT64 בזמן האתחול. חייב להיות 0 בשאר הסוגים. המערכת תתעלם מהמאפיין אם שני הערכים הם 0.
  • בנכס גלובלי, אם צריך להגדיר ערך מינימלי ומקסימלי, צריך להשתמש בהגדרת אזור אחת עם מזהה האזור 0.
  • הערך הזה הוא סטטי ולא ישתנה גם אם הערך המינימלי או המקסימלי ישתנה במהלך זמן הריצה. מטמיעים את IVehicle#getMinMaxSupportedValue לערך דינמי מינימלי או מקסימלי.
minFloatValue וגם maxFloatValue
  • ערך מינימלי ומקסימלי אופציונלי לנכסים מסוג Float בזמן האתחול. חייב להיות 0 בשאר הסוגים. המערכת תתעלם מהמאפיין אם שני הערכים הם 0.0.
  • בנכס גלובלי, אם צריך להגדיר ערך מינימלי ומקסימלי, צריך להשתמש בהגדרת אזור אחת עם מזהה האזור 0.
  • הערך הזה הוא סטטי ולא ישתנה גם אם הערך המינימלי או המקסימלי ישתנה במהלך זמן הריצה. מטמיעים את IVehicle#getMinMaxSupportedValue לערך דינמי מינימלי או מקסימלי.
(חדש ב-Android 14)
supportedEnumValues
  • רשימה אופציונלית של ערכים נתמכים בזמן האתחול, אם המאפיין מוגדר כמאפיין מסוג enum. אם לא צוין (ריק) או לפני Android 14, המערכת תתייחס לכל הערכים של enum בתור נתמכים.
  • בנכס גלובלי, אם צריך להגדיר ערכים נתמכים של enum, צריך להשתמש בהגדרה אחת של אזור עם מזהה האזור 0.
  • הערך הזה הוא סטטי ולא ישתנה גם אם הערכים הנתמכים ישתנו במהלך זמן הריצה. מטמיעים את IVehicle#getSupportedValuesLists לערכים דינמיים נתמכים.
  • ההגבלה הזו חלה רק על נכסים מסוג enum. בשאר הסוגים, השדה הזה צריך להיות ריק. כדי לחשוף ערכים נתמכים של סוגי נתונים אחרים שאינם enum, משתמשים ב-IVehicle#getSupportedValuesLists.
(חדש ב-Android 15)
supportVariableUpdateRate
  • האם יש תמיכה בשיעור עדכון של משתנים. ההנחיה הזו רלוונטית רק לנכסים רציפים.
  • אם הערך הוא true, האפליקציה יכולה להפעיל שיעור עדכון משתנה למינוי כדי לקבל אירועי עדכון של נכסים רק כשערך הנכס משתנה (כלומר, המערכת מתייחסת למאפיינים רציפים כמאפיינים שמתעדכנים בזמן שינוי).
  • אם כל המנויים לנכס מפעילים קצב עדכון משתנה, בקשת המינוי ל-VHAL מפעילה קצב עדכון משתנה לנכס, ו-VHAL חייב לשלוח אירועי עדכון נכס רק כשערך הנכס משתנה.
  • אם מישהו מהמנויים מבקש קצב עדכון קבוע, בקשת המינוי ל-VHAL משביתה את קצב העדכון המשתנה בנכס, ו-AAOS מסנן את האירועים הכפולים של הלקוחות שמבקשים קצב עדכון משתנה.
  • מומלץ מאוד לתמוך בשיעור עדכון משתנה לכל הנכסים המתמשכים שאינם פעימות לב, כדי לשפר את הביצועים. עם זאת, אם נתוני הנכס גדולים (לדוגמה, מערך בייטים בגודל 1,000) ויכולים לתפוס כמות גדולה של זיכרון לשמירת נתונים במטמון, מומלץ להשתמש בשיעור עדכון קבוע.
(חדש ב-Android 16)
hasSupportedValueInfo
  • אם הערך הוא לא null, המערכת מציגה אם המאפיין הזה מציין ערכים מינימלי או מקסימלי נתמכים, או רשימה של ערכים נתמכים.
  • השדה הזה קובע אם ממשקי ה-API של הערכים הנתמכים הדינמיים: getMinMaxSupportedValue, getSupportedValuesLists, subscribeSupportedValueChange, unsubscribeSupportedValueChange נתמכים במזהה המאפיין הזה ובמזהה האזור הזה.
  • אם הערך הוא לא null, ה-VHAL צריך להטמיע את ממשקי ה-API האלה עבור מזהה הנכס ומזהה האזור האלה.
  • אם null או ב-Android מגרסה 15 ומטה, אין תמיכה בערכים דינמיים נתמכים של מזהה הנכס הזה ומזהה האזור. הלקוח צריך להשתמש במידע על הערכים הנתמכים הסטטיים שצוין בהגדרות של מאפיין הרכב.

סוגי אזורים

מוגדרים כ-enums ב-VehicleArea.aidl. סוגי האזורים הנתמכים מפורטים בהמשך.

סוג האזור ערך תיאור
GLOBAL 0x01000000 הנכס הזה הוא נכס גלובלי ואין לו כמה אזורים.
WINDOW 0x03000000 אזור שמבוסס על חלונות, נעשה בו שימוש ב-VehicleAreaWindow enum.
MIRROR 0x04000000 אזור שמבוסס על מראות, נעשה בו שימוש ב-VehicleAreaMirror enum.
סיאט 0x05000000 אזור שמבוסס על מושבים, נעשה בו שימוש ב-enum של VehicleAreaSeat.
DOOR 0x06000000 אזור שמבוסס על דלתות, באמצעות VehicleAreaDoor enum.
WHEEL 0x07000000 שטח שמבוסס על גלגלים, באמצעות VehicleAreaWheel enum.

בכל נכס מוגדר מראש צריך להשתמש בסוג שטח מוגדר מראש. לכל סוג אזור יש קבוצה של דגלים של ביטים שמוגדרים ב-enum של סוג האזור. לדוגמה, האזור SEAT מגדיר את המאפיינים הבאים מסוג enum:VehicleAreaSeat

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

מזהי אזורים

נכסים שמחולקים לאזורים מקבלים כתובת באמצעות מזהי אזורים. כל נכס ממוקד יכול לתמוך במזהה אזור אחד או יותר. מזהה אזור מורכב מסימון אחד או יותר מה-enum התואם. לדוגמה, נכס שמשתמש ב-VehicleAreaSeat עשוי להשתמש במזהי האזורים הבאים:

פריט תיאור
ROW_1_LEFT | ROW_1_RIGHT מזהה האזור חל על שני המושבים הקדמיים.
ROW_2_LEFT ההגדרה חלה רק על המושב האחורי הימני.
ROW_2_RIGHT ההגדרה חלה רק על המושב הימני האחורי.

מידע נוסף זמין במאמר בקרת אקלים (HVAC).