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

נכסי ספק

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

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

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

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

  • configArray[3 * i] propId, מזהה המאפיין של מאפיין הספק.
  • configArray[3 * i + 1] רשומה ב- VehicleVendorPermission.aidl לציון הרשאה לקרוא את ערך המאפיין.
  • configArray[3 * i + 2] רשומה ב- 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 לא יכולות לגשת לנכס. בדוגמה, אפליקציות אנדרואיד לא יכולות לכתוב ערך עבור vendor_prop_2 . רק לקוחות VHAL מקומיים יכולים לכתוב לנכס זה.

מערכות מתקדמות לסיוע לנהג (ADAS)

ראה מאפייני רכב ADAS .

מושב והגה

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

HVAC

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

תכונה מַטָרָה
HVAC_TEMPERATURE_SET הגדר טמפרטורה לכל מזהה אזור.
HVAC_POWER_ON מצב הכוח של מערכת HVAC לכל מזהה אזור.

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

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

דוגמה 1

לרכב יש שני מושבים קדמיים (ROW_1_LEFT, ROW_1_RIGHT) ושלושה מושבים אחוריים (ROW_2_LEFT, ROW_2_CENTER, ROW_2_RIGHT). ישנן שתי יחידות בקרת טמפרטורה, אחת כל אחת לצד הנהג ולצד הנוסע. ערכת מיפוי חוקית של מזהי AreaID עבור 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 עבור שני המושבים הקדמיים בלבד. ערכת מיפוי חוקית של AreaIDs עבור 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 (באנדרואיד 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 .