سمات المورّد
لتلبية الاحتياجات الخاصة بالشركاء، يسمح VHAL بمواقع المورّدين التي لا يمكن الوصول إليها إلا من خلال واجهات برمجة تطبيقات النظام. اتّبِع الإرشادات التالية عند العمل مع سمات المورّدين:
- حاوِل دائمًا استخدام خصائص النظام أولاً، ويجب استخدام خصائص المورّدين كملاذ أخير عندما لا تلبّي أيّ من خصائص النظام متطلباتك.
- لمنع تجزئة المنظومة المتكاملة، يجب عدم استخدام خصائص المورّدين لتكرار خصائص المركبات التي سبق أن تمّ إنشاؤها في VehiclePropertyIds في حزمة SDK. لمزيد من المعلومات، يُرجى الاطّلاع على القسم 2.5، متطلبات Automotive في CDD.
- استخدِم الحقول التالية لإنشاء رقم تعريف الموقع:
VehiclePropertyGroup:VENDOR
لا تُستخدَم مجموعة VENDOR إلا لمواقع المورّدين.VehicleArea
اختَر نوع منطقة مناسبًا.VehiclePropertyType
اختَر نوع البيانات المناسب. يسمح نوع BYTES بتمرير البيانات الأولية، وهو كافٍ في معظم الحالات. إنّ إرسال البيانات الكبيرة بشكل متكرّر من خلال مواقع المورّدين يمكن أن يؤدي إلى إبطاء الوصول إلى شبكة المركبات بالكامل. يُرجى توخّي الحذر عند إضافة حمولة كبيرة.Property ID
اختَر معرّفًا فريدًا مكوّنًا من بايتين لملكية المورّد. على سبيل المثال، 0x1234.
- املأ الحقل
VehiclePropConfig.configString
بوصف موجز لممتلكات المورّد. ويسمح ذلك لأدوات التحقّق من الصحة برصد تكرار بيانات المركبات الحالية عن طريق الخطأ. على سبيل المثال، "خصائصي المخصّصة لشركة XYZ". - يمكنك الوصول من خلال
CarPropertyManager
(لمكونات Java) أو من خلال
libvhalclient
(للتطبيقات الأصلية). لا تعدِّل واجهات برمجة التطبيقات الأخرى للسيارات لأنّ ذلك قد يؤدي إلى حدوث مشاكل في التوافق في المستقبل.
إذن مواقع المورّدين
الإذن التلقائي لأيّ مواقع مورّدين محدّدة هو
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 الوصول إلى الموقع.
في المثال، لا يمكن لتطبيقات Android كتابة قيمة لسمة vendor_prop_2
. يمكن فقط لعملاء VHAL الأصليين
الكتابة في هذا الحقل.
أنظمة مساعدة السائق المتقدّمة (ADAS)
راجِع خصائص المركبات في نظام مساعدة السائق المتقدّم (ADAS).المقعد وتوجيه السيارة
اطّلِع على خصائص المقاعد وعجلة القيادة.
التدفئة والتهوية وتكييف الهواء
يمكنك استخدام VHAL للتحكّم في التدفئة والتهوية وتكييف الهواء من خلال ضبط السمات ذات الصلة بالتدفئة والتهوية وتكييف الهواء. ترتبط معظم سمات التدفئة والتهوية وتكييف الهواء بمناطق معيّنة في المركبة، على الرغم من أنّ العديد منها سمات عامة. تشمل أمثلة السمات المحدّدة ما يلي:
الخاصية | الغرض |
---|---|
HVAC_TEMPERATURE_SET |
ضبط درجة الحرارة لكل رقم تعريف منطقة |
HVAC_POWER_ON |
حالة الطاقة في نظام التدفئة والتهوية وتكييف الهواء لكل معرّف منطقة |
بالنسبة إلى سمات التدفئة والتهوية وتكييف الهواء التي تعتمد على حالة الطاقة في نظام التدفئة والتهوية وتكييف الهواء، يجب
إدراجها في صفيف الإعدادات HVAC_POWER_ON
. للاطّلاع على قائمة كاملة بسمات التدفئة والتهوية وتكييف الهواء،
ابحث عن HVAC_*
في VehicleProperty.aidl
، اطّلِع على
سمات النظام المتوافقة.
المواقع.
قواعد ربط سمات HVAC من النوع VehicleArea غير الشاملة بأرقام تعريف المناطق:
يجب أن يتم تضمين كل "منطقة" لنوع VehicleArea
معيّن يتأثّر بالموقع في
رقم تعريف منطقة لذلك الموقع. يتم تعيين أدوات التحكّم في درجة الحرارة إلى
المقاعد التي "تؤثر فيها بشكلٍ أكبر"، ولكن يجب تضمين كل مقعد متأثر مرة واحدة بالضبط.
قد يبدو تحديد موضع المقعد الخلفي الأوسط في AreaID الأيمن أو الأيسر عشوائيًا،
ولكنّ تضمين كل مقعد متأثر في رقم تعريف منطقة واحد بالضبط يضمن تمثيل المقاعد
في السيارة بالكامل وتوفير طريقة معقولة للتأثير في كل مقعد.
مثال 1
تحتوي السيارة على مقعدَين أماميَّين (ROW_1_LEFT وROW_1_RIGHT) وثلاثة مقاعد خلفية
(ROW_2_LEFT وROW_2_CENTER وROW_2_RIGHT). تتوفّر وحدتَا تحكّم في درجة الحرارة، واحدة لكل من
جانبَي السائق والراكب. ستكون مجموعة الربط الصالحة لرموز AreaID الخاصة بـ
HVAC_TEMPERATURE_SET
مصفوفة من عنصرَين:
- الصف_1_اليمين | الصف_2_اليمين
- 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
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
متوافقًا. على سبيل المثال، تشمل حالات الاستخدام ميزة "المساعدة السريعة الذكية" (ISA) وفقًا لـ "لوائح السلامة العامّة" (GSR) كما هو محدّد في لائحة الاتحاد الأوروبي
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)، على المورّدين تضمين معرّف السمة في الرمز البرمجي.
على سبيل المثال، يوضّح المقتطف التالي كيفية توفّر هذه الميزة في مرجع 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
وقائمة القيم من GsrComplianceRequirementType.h
. على سبيل المثال، كما هو موضّح في مرجع AIDL VHAL
DefaultProperties.json
:
{ "property": "VehicleProperty::GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT", "defaultValue": { "int32Values": [ "GsrComplianceRequirementType::GSR_COMPLIANCE_REQUIRED_V1" ] } }
لقراءة هذه السمة من تطبيق Android، استخدِم
CarPropertyManager.getIntProperty
.
- في الإصدار 13 من نظام التشغيل Android والإصدارات الأحدث، استخدِم
VehiclePropertyIds.GENERAL_SAFETY_REGULATION_COMPLIANCE
كمعرّف للموقع. - في Android 12، استخدِم القيمة الثابتة 0x11400F47 كمعرّف للموقع. تتطلّب هذه السمة
الحصول على الإذن
Car#PERMISSION_CAR_INFO
.