מאפיינים מיוחדים

מאפייני הספק

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

  • תמיד צריך לנסות קודם להשתמש במאפייני המערכת, ואין להשתמש במאפייני הספק כשאין ברירה אלא להשתמש במאפייני המערכת כאשר אף אחד ממאפייני המערכת לא מעדכן את הדרישה שלכם.
  • כדי למנוע פיצול של מערכת אקולוגית, אסור להשתמש במאפיינים של ספק לשכפול הרכב נכסים שכבר קיימים ב-SDK VehiclePropertyIds. מידע נוסף זמין בקטע 2.5, דרישות לגבי רכב ב-CDD.
  • משתמשים בשדות הבאים כדי ליצור את מזהה הנכס:
    • VehiclePropertyGroup:VENDOR קבוצת VENDOR משמשת רק לנכסי ספק.
    • VehicleArea לבחור את סוג האזור המתאים.
    • VehiclePropertyType לבחור את סוג הנתונים המתאים. סוג שקע מאפשר להעביר נתונים גולמיים, והוא מספיק ברוב המקרים. שליחת Big Data בתדירות גבוהה דרך נכסים של ספק עלול להאט את הגישה לכל הרשת של הרכב. חשוב להיזהר כשמוסיפים מטען ייעודי (payload) גדול.
    • Property ID צריך לבחור מזהה ייחודי בן שני בייטים לנכס הספק. לדוגמה, 0x1234.
  • יש למלא את VehiclePropConfig.configString בתיאור קצר של הספק לנכס. כך מתאפשרת לכלים לבדיקת תוקף לסמן רפליקציה מקרית של מאפייני הרכב. לדוגמה, 'My custom properties for XYZ' (המאפיין המותאם אישית שלי ל-XYZ).
  • גישה דרך CarPropertyManager (מנהל הנכס) (לרכיבי Java) או דרך libvhalclient (למודעות מותאמות). מומלץ לא לשנות ממשקי API אחרים ברכב, מכיוון שהדבר עלול להוביל לבעיות תאימות עתידיות.

הרשאת גישה לנכסי הספק

הרשאת ברירת המחדל לכל נכסי ספק מוגדרים היא android.car.Car.PERMISSION_VENDOR_EXTENSION לרמת פירוט מדויקת יותר של הרשאה בקרה, תמיכה במאפיין SUPPORT_CUSTOMIZE_VENDOR_PERMISSION. הנתונים הסטטיים האלה הנכס הוא לקריאה בלבד, ומערך ה-config שלו מציין את ההרשאות למאפייני הספק. הערך configArray מוגדר כך (i הוא מספר שלם שמתחיל מ-0):

  • configArray[3 * i] PROId, מזהה הנכס של נכס הספק.
  • configArray[3 * i + 1] הוא 'טיפוסים בני מנייה (enum)' ב-VehicleVendorPermission.aidl עד לציין הרשאה לקרוא את ערך המאפיין.
  • configArray[3 * i + 2] הוא 'טיפוסים בני מנייה (enum)' ב-VehicleVendorPermission.aidl עד לציין הרשאה לכתוב את ערך הנכס.

לדוגמה, מערך התצורה הבא מגדיר שני מאפייני ספק: vendor_prop_1 ו-vendor_prop_2, כדי לקבל את ההרשאות:

  • נדרש עבור vendor_prop_1 android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_SEAT לקריאה, android.car.hardware.property.VehicleVendorPermission.PERMISSION_SET_CAR_VENDOR_CATEGORY_SEAT ולכתוב.
  • נדרש עבור vendor_prop-2 android.car.hardware.property.VehicleVendorPermission.PERMISSION_GET_CAR_VENDOR_CATEGORY_INFO לקריאה, ולא ניתן לכתיבה באפליקציות ל-Android.
configArray = {
  PERMISSION_SET_VENDOR_CATEGORY_SEAT
    vendor_prop_2, PERMISSION_GET_VENDOR_CATEGORY_INFO, PERMISSION_NOT_ACCESSIBLE
}

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

מערכות עזרה לנהג (ADAS)

ראו מאפייני רכב של ADAS.

מושב והגה

ראו מאפייני מושב והגה.

בקרת אקלים

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

נכס המטרה
HVAC_TEMPERATURE_SET הגדרת הטמפרטורה לכל מזהה אזור.
HVAC_POWER_ON מצב החשמל של מערכת בקרת האקלים לפי מזהה אזור.

אם מאפייני בקרת האקלים תלויים במצב החשמל של מערכת בקרת האקלים, הם צריכים להיות מפורט במערך התצורה HVAC_POWER_ON. כדי לראות רשימה מלאה של נכסי בקרת אקלים: חפש את HVAC_* ב-VehicleProperty.aidl, ראה מאפייני מערכת נתמכים. נכסים.

כללים למיפוי מאפייני בקרת אקלים מסוג HVAC שאינם גלובליים של כלי רכב למזהי AreaID: כל "אזור" מסוג VehicleArea ספציפי שמושפע מהנכס צריך להיות נכללות במזהה אזור של אותו נכס. בקרי הטמפרטורה מוקצים המושבים שהם "הכי משפיעים עליהם", אבל צריך לכלול כל מושב שהושפע בדיוק פעם אחת. הקצאת המושב האחורי המרכזי ל-AreID השמאלי או הימני עשויה להיראות שרירותית, אבל אם תכלול את כל המושבים המושפעים ב-AreID אחד בלבד, תבטיח שהמושבים במכונית יש לציין את כולם ויש דרך הגיונית להשפיע על כל מושב.

דוגמה 1

במכונית יש שני מושבים קדמיים (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_CENTER | ROW_2_LEFT
  • ROW_1_RIGHT | ROW_2_RIGHT

דוגמה 2

במכונית יש שלושה מושבים בשורה הראשונה (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 ל-RegionIDs הוא מערך שלושה רכיבים:

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

דוגמה 3

במכונית יש שני מושבים קדמיים (ROW_1_LEFT, ROW_1_RIGHT) ושלושה מושבים אחוריים (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). נניח שהמכונית תומכת ב-HVAC_auto_ON רק בין שני המושבים הקדמיים. קבוצת מיפוי חוקית של מזהי AreaID עבור HVAC_auto_ON תהיה מערך רכיבים:

  • ROW_1_LEFT | ROW_1_RIGHT

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

  • ROW_1_LEFT
  • ROW_1_RIGHT

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

אם הרכב חייב לעמוד בדרישות של תקנות הבטיחות הכלליות באיחוד האירופי (GSR) דרך Android, המאפיין GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT חייב נתמכים. תרחיש לדוגמה לדוגמה הוא GSR-ISA (Intelligent Speed Assist) כפי שמוגדר באיחוד האירופי תקנה 2019/2144. הנכס הזה נוסף ב-AIDL VHAL מ-Android 13, אבל הוא שיש תמיכה ב-Car Service מאז ההשקה של Android 12. המאפיין הזה מוגדר לקריאה בלבד מאפיין של מספר שלם גלובלי סטטי, עם ערכים אפשריים שמוגדרים לפי GsrComplianceRequirementType enum:

שם ערך תיאור
GSR_COMPLIANCE_NOT_REQUIRED 0 לא נדרשת תאימות ל-GSR
GSR_COMPLIANCE_REQUIRED_V1 1 נדרשת תאימות GSR וגרסת הפתרון הנדרשת היא 1.

כדי לתמוך במאפיין הזה ב-HIDL VHAL (ב-Android 12), הספקים צריכים לכתוב בתוך הקוד את מזהה הנכס. לדוגמה, קטע הקוד הבא מראה איך הוא נתמך בקובץ העזר HIDL VHAL DefaultConfig.h:

{
  .config =
      {
          // GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
          .prop = 0x11400F47,
          .access = VehiclePropertyAccess::READ,
          .changeMode = VehiclePropertyChangeMode::STATIC,
      },
  // GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1
  .initialValue = {.int32Values = {1}},
}

כדי לתמוך בנכס הזה ב-AIDL VHAL (מ-Android 13), ספקים יכולים להשתמש במזהה הנכס של VehicleProperty.h ו-enum מ-GsrComplianceRequirementType.h. עבור כמו ההתייחסות ל-AIDL VHAL DefaultProperties.json:

{
  "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT",
  "defaultValue": {
    "int32Values": [
      "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1"
    ]
  }
}

כדי לקרוא את המאפיין הזה באפליקציה ל-Android, צריך להשתמש בכתובת CarPropertyManager.getIntProperty

  • ב-Android מגרסה 13 ואילך, משתמשים VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE כמזהה הנכס.
  • ב-Android 12, משתמשים בערך שהוזן בתוך הקוד כ-0x11400F47 כמזהה הנכס. הזה נדרשת ההרשאה Car#PERMISSION_CAR_INFO.