נכסי רכב

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

ממשקי HAL

ה- VHAL משתמש בממשקים הבאים:

  • getAllPropConfigs() מייצר (vec<VehiclePropConfig>propConfigs)
    רשום את התצורה של כל המאפיינים הנתמכים על ידי ה- VHAL. CarService משתמש בנכסים נתמכים בלבד.
  • getPropConfigs(vec<int32_t> props) מייצר (StatusCode status,vec<VehiclePropConfig> propConfigs);
    החזר את תצורת הנכסים שנבחרו.
  • set(VehiclePropValue propValue) מייצר (StatusCodestatus);
    כתוב ערך לנכס. תוצאת הכתיבה מוגדרת לכל נכס.
  • subscribe(IVehicleCallback callback, vec<SubscribeOptions> options) מייצר (StatusCode status);
    התחל לעקוב אחר שינוי ערך הנכס. נכס מחולק לאזורים, unsubscribe(IVehicleCallback callback, int32_t propId) מייצרת (StatusCode status);

ה- VHAL משתמש בממשקי החזרה הבאים:

  • oneway onPropertyEvent(vec<VehiclePropValue>propValues);
    מודיע על שינוי ערך הנכס ברכב. צריך להיעשות רק עבור נכסים רשומים.
  • oneway onPropertySetError(StatusCode errorCode,int32_t propId,int32_tareaId);
    החזר שגיאה או שגיאה ברמת VHAL גלובלית לכל נכס. שגיאה גלובלית גורמת להפעלה מחדש של HAL, מה שעלול להוביל להפעלה מחדש של רכיבים אחרים (כולל יישומים).

תכונות הרכב

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

  • BYTES
  • BOOLEAN
  • EPOCH_TIME
  • FLOAT
  • FLOAT[]
  • INT32
  • INT32[]
  • INT64
  • INT64[]
  • STRING
  • MIXED

לנכס המיועד לאזור יש יותר מערך אחד, בהתבסס על מספר האזורים הנתמכים על ידי הנכס.

סוגי שטחים

ה- VHAL מגדיר סוגים מרובים של אזורים:

סוג אזור תיאור
GLOBAL נכס זה הוא יחידת אירוח ואין בו מספר אזורים.
WINDOW הפינה המבוססת על חלונות, משתמשת VehicleAreaWindow enum.
MIRROR הפינה המבוססת על מראות, משתמשת VehicleAreaMirror enum.
SEAT הפינה המבוססת על מושבים, משתמשת VehicleAreaSeat enum.
DOOR הפינה המבוססת על דלתות, משתמשת VehicleAreaDoor enum.
WHEEL הפינה המבוססת על גלגלים, משתמשת VehicleAreaWheel enum.

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

  • 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
  • ...

מזהי אזור

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

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

מצב הנכס

כל ערך הנכס מגיע עם VehiclePropertyStatus ערך. זה מציין את הסטטוס הנוכחי של הנכס:

פריט תיאור
AVAILABLE הנכס זמין והערך תקף.
UNAVAILABLE ערך הנכס אינו זמין כעת. משמש לתכונות שהושבתו באופן זמני עבור נכס נתמך.
ERROR משהו לא בסדר בנכס הזה.

הגדרת נכס

השתמשו VehiclePropConfig לספק מידע התצורה עבור כל נכס. המידע כולל:

מִשְׁתַנֶה תיאור
access r , w , rw
changeMode מייצג את אופן הניטור של נכס, בשינוי לעומת רציף.
areaConfigs areaId , min , ואת max ערכים.
configArray פרמטרי תצורה נוספים.
configString מידע נוסף הועבר כמחרוזת.
minSampleRate maxSampleRate
prop מזהה נכס, int

תכונות אזור טיפול

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

  • get שיחת נכס מחולק לאזורים תמיד כולל את מזהה שטח נשוא הבקשה. לכן, רק הערך הנוכחי של מזהה האזור המבוקש מוחזר. אם הנכס הוא עולמי, אז מזהה האזור הוא 0.
  • set שיחת נכס בייעוד תמיד כוללת את מזהה שטח נשוא הבקשה. לכן, רק מזהה האזור המבוקש משתנה.
  • subscribe שיחת מייצר אירועים לכל מזהי פינת עבור הנכס.

קבל שיחות

במהלך האתחול, ייתכן שהערך של הנכס עדיין לא יהיה זמין מכיוון שעדיין לא התקבלה הודעת הרשת התואמת לרכב. במקרים כאלה, get השיחה צריכה לחזור -EAGAIN . בחלק מהנכסים (כגון HVAC) יש נכס חשמל נפרד להפעלה/כיבוי. שיחות get עבור נכס כזה (כאשר היא כבויה) צריכה להחזיר UNAVAILABLE מעמד ולא מחזיר שגיאה. לדוגמה, קבל טמפרטורת HVAC

VHAL קבלו דוגמה ל- HVAC

איור 1. קבל טמפרטורת HVAC (CS = CarService, VHAL = רכב HAL)

קבע שיחות

set שיחה היא מבצע אסינכרוני מעורב מהודעת אירוע לאחר שינוי מבוקש הוא עשה. במבצע טיפוסי, set מוביל שיחת הגשת בקשה לשינוי פני רשת רכב. חלק set השיחות רשאיות לדרוש נתונים ראשוניים להיות מוכן אבל בעת אתחול, נתונים כאלה לא יהיו זמינים עדיין. במקרים כאלה, set השיחה צריכה לחזור -EAGAIN . כמה תכונות עם כוח נפרד on / off צריכות לחזור -ESHUTDOWN כאשר הנכס כבוי וסט לא יכול להיעשות. עד set נעשה יעיל, get איננו בהכרח להחזיר את אותו הערך כמו מה מוגדר. לדוגמה, set HVAC Temperature .

VHAL הציג דוגמה ל- HVAC

איור 2. הגדר טמפרטורת HVAC (CS = CarService, VHAL = רכב HAL)

טיפול בנכסים מותאמים אישית

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

  • יש ליצור מזהה נכס באמצעות השדות הבאים:
    • VehiclePropertyGroup:VENDOR
      VENDOR הקבוצה משמשת רק בנכסים מנהג.
    • VehicleArea
      בחר סוג אזור מתאים.
    • VehiclePropertyType
      בחר את סוג הנתונים המתאים. BYTES סוגים מאפשרים חלוף נתונים גולמיים אשר מספיק ברוב המקרים. שליחת נתונים גדולים לעתים קרובות באמצעות נכסים מותאמים אישית עלולה להאט את הגישה לרשת כלי הרכב כולה - היזהר בעת הוספת מטען גדול.
    • Property ID
      בחר מזהה ארבע נשמות לנכס המותאם אישית.
  • כדי למנוע פיצול אקולוגי, תכונות מותאמות אישית אסור לשמש מאפייני רכב לשכפל שכבר קיימים ( VehiclePropertyIds SDK).
  • מלאו VehiclePropConfig.configString עם תיאור קצר של נכס המנהג. זה מאפשר לכלים לבדיקת שפיות לסמן את השכפול המקרי של נכסי הרכב הקיימים. לדוגמה, "מצב נורת סכנה".
  • גישה דרך CarPropertyManager (עבור רכיבי Java) או באמצעות ה- API של שירות רשת לרכב (עבור ילידים). אל תשנה ממשקי API אחרים לרכב שכן פעולה זו עלולה להוביל לבעיות תאימות עתידיות.
  • לאחר יישום תכונות הספק, לבחירת רשימת ההרשאות רק VehicleVendorPermission enum עבור נכסי ספק. מיפוי הרשאות ספק למאפייני מערכת ישבור את CTS ו- VTS.

טיפול בנכסי HVAC

אתה יכול להשתמש ב- VHAL לשליטה ב- HVAC על ידי הגדרת מאפיינים הקשורים ל- HVAC. רוב נכסי HVAC הם נכסים אזוריים, אם כי מספר נכסים שאינם אזוריים (גלובליים). מאפיינים מוגדרים לדוגמה כוללים:

תכונה מַטָרָה
VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET הגדר טמפרטורה לכל אזור.
VEHICLE_PROPERTY_HVAC_RECIRC_ON בקרת מחזוריות לכל אזור.

כדי לראות רשימה מלאה של תכונות HVAC, לחפש VEHICLE_PROPERTY_HVAC_* ב types.hal . כאשר נכס HVAC משתמש VehicleAreaSeat , כללים נוספים למיפוי נכס HVAC בייעוד למזהי פינה להחיל. כל מושב זמין במכונית חייב להיות חלק ממזהה אזור במערך זיהוי האזור.

דוגמא אחת. יש מכונית שני מושבים קדמיים ( ROW_1_LEFT, ROW_1_RIGHT ) ושלושה מושבים אחוריים ( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT ). לרכב שתי יחידות בקרת טמפרטורה: צד הנהג וצד הנוסע.

  • מיפוי תקף המוגדר של מזהי פינה עבור HVAC_TEMPERATURE SET הוא:
    • ROW_1_LEFT | ROW_2_LEFT
    • ROW_1_RIGHT | ROW_2_CENTER | ROW_2_RIGHT
  • מיפוי חלופי לאותה תצורת חומרה הוא:
    • ROW_1_LEFT | ROW_2_LEFT | ROW_2_CENTER
    • ROW_1_RIGHT | ROW_2_RIGHT

דוגמה שנייה. יש מכונית שלוש שורות מושבים עם שני מושבים בשורה הראשונה ( ROW_1_LEFT, ROW_1_RIGHT ), שלושה מושבים השניים ( ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT ), ושלוש בשורות השלישיות ( ROW_3_LEFT, ROW_3_CENTER, ROW_3_RIGHT ). לרכב שלוש יחידות בקרת טמפרטורה: צד הנהג, צד הנוסעים והאחוריים. דרך סבירה למפות HVAC_TEMPERATURE_SET למזהי פינה היא כמערך אלמנט שלושה:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

טיפול במאפייני חיישן

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

ראה את מאפייני חיישן הנתמכים (ב types.hal ).

שירות מפת רכבים

שירות מפת הרכב (VMS) מספק מנגנון נתון מפת חליפין בין הלקוחות באמצעות ממשק פאב / תת כדי לתמוך בתכונות רכב נפוצות, כגון מערכות עזרו לנהג מתקדם (ADAS) . לקוחות יכולים לכלול מערכות רכב המתממשקות באמצעות נכס VMS ביישומי VHAL או ביישומי אנדרואיד. הנתונים המשותפים ב- VMS נועדו להיות מוגבלים לנתוני מפה לשימוש מערכות רכב ואפליקציות תומכות.

VMS מיועד לשימוש רק ביישומי Android Automotive; AOSP אינו מכיל לקוחות ברירת מחדל המפרסמים או נרשמים ל- VMS. עבור הנכס VMS של VHAL, סוגי ההודעות ומבני נתונים מתוארים VHAL 2.0 ב VmsMessageType enum, אשר מפרט את סוגי הודעות VMS נתמכים. סיכום זה משמש כמספר שלם ראשון במערך המספרים השלמים של נכס הרכב וקובע כיצד פענוח שאר ההודעה.