נכסי ספק
כדי לתמוך בצרכים ספציפיים לשותפים, ה-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
.
- ב-Android 13 ומעלה, השתמש
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
כמזהה הנכס. - ב-Android 12, השתמש בערך המקודד הקשיח של 0x11400F47 כמזהה נכס. נכס זה דורש את ההרשאה,
Car#PERMISSION_CAR_INFO
.