מאפייני הספק
כדי לתמוך בצרכים ספציפיים לשותפים, ה-VHAL מאפשר מאפייני ספק שניגשים אליהם רק באמצעות ממשקי API של המערכת. כשעובדים עם נכסים של ספקים, צריך לפעול לפי ההנחיות הבאות:
- תמיד צריך לנסות קודם להשתמש במאפייני המערכת, ואין להשתמש במאפייני הספק כשאין ברירה אלא להשתמש במאפייני המערכת כאשר אף אחד ממאפייני המערכת לא מעדכן את הדרישה שלכם.
- כדי למנוע פיצול של מערכת אקולוגית, אסור להשתמש במאפיינים של ספק לשכפול הרכב נכסים שכבר קיימים ב-SDK VehiclePropertyIds. מידע נוסף זמין בקטע 2.5, דרישות לגבי רכב ב-CDD.
- משתמשים בשדות הבאים כדי ליצור את מזהה הנכס:
VehiclePropertyGroup:VENDOR
קבוצת VENDOR משמשת רק לנכסי ספק.VehicleArea
לבחור את סוג האזור המתאים.VehiclePropertyType
לבחור את סוג הנתונים המתאים. סוג Salesforce מאפשר העברת נתונים גולמיים, והוא מספיק ברוב המקרים. שליחת 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
INFO_EXTERIOR_DimensionsS (מידע נוסף)
המידות החיצוניות של הרכב נמדדות במילימטרים, כפי שמוצג באיור 1.
צריך להשתמש במאפיינים שמתוארים בטבלה הזו כדי להגדיר את החלק החיצוני של הרכב מאפיינים.
נכס רכב | שדה 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 (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
.