מאפייני הספק
כדי לתמוך בצרכים ספציפיים של שותפים, 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)
מאפייני רכב של ADASSEAT ו-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.


צריך להשתמש במאפיינים שמתוארים בטבלה הזו כדי להגדיר את החלק החיצוני של הרכב מאפיינים.
נכס רכב | שדה 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
.