מאפייני ספק
כדי לתמוך בצרכים ספציפיים של שותפים, ה-VHAL מאפשר מאפייני ספק שאפשר לגשת אליהם רק דרך ממשקי API של המערכת. כשעובדים עם מאפייני ספקים, חשוב לפעול לפי ההנחיות הבאות:
- תמיד כדאי לנסות להשתמש קודם במאפייני מערכת, ובמאפייני ספק רק כמוצא אחרון אם אף אחד ממאפייני המערכת לא עונה על הדרישה.
- כדי למנוע פיצול של המערכת האקולוגית, אסור להשתמש במאפייני ספקים כדי לשכפל מאפייני רכב שכבר קיימים ב-SDK VehiclePropertyIds. מידע נוסף זמין בקטע 2.5, דרישות לרכב ב-CDD.
- משתמשים בשדות הבאים כדי ליצור את מזהה הנכס:
VehiclePropertyGroup:VENDOR
קבוצת VENDOR משמשת רק לנכסי ספקים.VehicleArea
בוחרים את סוג האזור המתאים.VehiclePropertyType
בוחרים את סוג הנתונים המתאים. הסוג BYTES מאפשר להעביר נתונים גולמיים, שזה מספיק ברוב המקרים. שליחה של ביג דאטה לעיתים קרובות דרך מאפייני ספקים עלולה להאט את הגישה לכל רשת הרכב. צריך להיזהר כשמוסיפים מטען ייעודי גדול.Property ID
בוחרים מזהה ייחודי של שני בייטים בשביל מאפיין הספק. לדוגמה, 0x1234.
- מחליפים את
VehiclePropConfig.configString
בתיאור קצר של מאפיין הספק. כך כלי בדיקת התוקף יכולים לסמן שכפול לא מכוון של מאפייני רכב קיימים. לדוגמה, 'My custom property for XYZ'. - גישה דרך CarPropertyManager (לרכיבי Java) או דרך
libvhalclient
(לרכיבים מקוריים). אל תשנו ממשקי API אחרים של מכוניות, כי זה עלול לגרום לבעיות תאימות בעתיד.
הרשאה לגישה למאפייני ספק
הרשאת ברירת המחדל לכל מאפייני הספקים המוגדרים היא
android.car.Car.PERMISSION_VENDOR_EXTENSION
. כדי לקבל רמת פירוט גבוהה יותר של בקרת הרשאות, תומכים במאפיין SUPPORT_CUSTOMIZE_VENDOR_PERMISSION
. המאפיין STATIC הזה הוא לקריאה בלבד, ומערך ההגדרות שלו מציין את ההרשאות למאפייני הספק.
הערך של configArray
מוגדר באופן הבא (i הוא מספר שלם שמתחיל מ-0):
-
configArray[3 * i]
propId, מזהה הנכס של הנכס של הספק. 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 על ידי הגדרת מאפיינים שקשורים ל-HVAC. רוב המאפיינים של מערכת HVAC משויכים לאזורים מסוימים ברכב, אבל כמה מהם הם מאפיינים גלובליים. דוגמאות למאפיינים מוגדרים:
נכס | מטרה |
---|---|
HVAC_TEMPERATURE_SET |
הגדרת טמפרטורה לפי מזהה אזור. |
HVAC_POWER_ON |
מצב ההפעלה של מערכת בקרת האקלים לפי מזהה אזור. |
מאפיינים של מערכות בקרת אקלים שתלויים במצב ההפעלה של המערכת צריכים להופיע במערך ההגדרות HVAC_POWER_ON
. כדי לראות רשימה מלאה של מאפייני HVAC, מחפשים את HVAC_*
ב-VehicleProperty.aidl
, ראו מאפייני מערכת נתמכים.
מאפיינים.
כללים למיפוי נכסי מיזוג אוויר מסוג VehicleArea שאינם GLOBAL אל AreaID:
כל 'אזור' מסוג 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 רק בשני המושבים הקדמיים. מערך מיפוי תקין של מזהי אזורים עבור 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. המאפיין הזה מוגדר כמאפיין גלובלי סטטי של מספר שלם לקריאה בלבד, עם ערכים אפשריים שמוגדרים על ידי enum 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
ובספירה מ-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 ומעלה, משתמשים ב-<0x0A>
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
<0x0A> בתור מזהה הנכס. - ב-Android 12, משתמשים בערך המקודד הקשיח 0x11400F47 כמזהה המאפיין. בנכס הזה נדרשת ההרשאה
Car#PERMISSION_CAR_INFO
.