נכסים מיוחדים

מאפייני הספק

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

  • תמיד כדאי לנסות להשתמש קודם במאפייני המערכת, ומומלץ להשתמש במאפייני הספק רק כחלופה אחרונה, במקרים שבהם אף אחד ממאפייני המערכת לא מספק את הדרישה.
  • כדי למנוע פיצול של הסביבה העסקית, אסור להשתמש במאפייני הספק כדי לשכפל מאפייני רכב שכבר קיימים ב-SDK‏ VehiclePropertyIds. מידע נוסף זמין בקטע 2.5, דרישות לכלי רכב במסמך ה-CDD.
  • משתמשים בשדות הבאים כדי ליצור את מזהה הנכס:
    • הקבוצה VehiclePropertyGroup:VENDOR VENDOR משמשת רק לנכסי ספקים.
    • VehicleArea בוחרים את סוג האזור המתאים.
    • VehiclePropertyType בוחרים את סוג הנתונים המתאים. סוג שקע מאפשר להעביר נתונים גולמיים, והוא מספיק ברוב המקרים. שליחת Big Data בתדירות גבוהה דרך נכסים של ספק עלול להאט את הגישה לכל הרשת של הרכב. חשוב להיזהר כשמוסיפים עומס נתונים גדול.
    • Property ID בוחרים מזהה ייחודי בן שני בייטים לנכס הספק. לדוגמה, 0x1234.
  • יש למלא את VehiclePropConfig.configString בתיאור קצר של הספק לנכס. כך מתאפשרת לכלים לבדיקת תוקף לסמן רפליקציה מקרית של מאפייני הרכב. לדוגמה, 'My custom property 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

SEAT ו-STEERING

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

בקרת אקלים

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

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

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

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

דוגמה 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 ל-AreaIDs היא מערך של שלושה רכיבים:

  • 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

INFO_EXTERIOR_DIMENSIONS

המימדים החיצוניים של הרכב נמדדים במילימטרים, כפי שמוצג באיור 1.

איור 1. מידות חיצוניות של הרכב, תצוגה קדמית.
איור 2. מידות החיצוניות של הרכב, מבט צד.

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

נכס רכב שדה VHAL תיאור
גובה int32Values[0] המרחק האנכי בין הקרקע לנקודה הגבוהה ביותר ברכב. ההנחה היא שגלגלי המפעל נאטמו בלחץ אוויר תקין.
אורך int32Values[1] מרחק אופקי בין הנקודות החיצוניות ביותר של הקדמי והאחורי של הרכב.
רוחב, לא כולל מראות int32Values[2] מרחק אופקי בין שתי הנקודות החיצוניות ביותר בכל צד של הרכב, לא כולל את המראות הצדדית.
רוחב, כולל מראות int32Values[3] מרחק אופקי בין שתי הנקודות החיצוניות ביותר בכל צד של הרכב, כולל מראות הצד.
בסיס גלגלים int32Values[4] המרחק בין מרכז הגלגלים הקדמיים לבין הגלגל האחורי של הרכב.
רוחב הטראק, קדמי int32Values[5] המרחק בין הגלגל הקדמי, שנמדד מהקו המרכזי של חתך אחד של הצמיג לקו המרכזי של חתך הצמיג השני.
רוחב המסילה, אחורי int32Values[6] המרחק בין הגלגל האחורי, שנמדד מהקו המרכזי של חתך אחד של הצמיג לקו המרכזי של חתך הצמיג השני.
קוטר פנייה מקצה לקצה int32Values[7] קוטר העיגול שנוצר על ידי הגלגלים החיצוניים של הרכב כשמבצעים פנייה מלאה עם הגה נעול לגמרי.

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

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

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

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