سمات المورِّد
لتلبية احتياجات الشركاء المحدّدة، تتيح VHAL خصائص المورّدين التي لا يمكن الوصول إليها إلا من خلال واجهات برمجة التطبيقات الخاصة بالنظام. استخدِم الإرشادات التالية عند التعامل مع سمات المورّد:
- حاوِل دائمًا استخدام خصائص النظام أولاً، ويجب استخدام خصائص المورّدين كحلّ أخير عندما لا تستوفي أي من خصائص النظام متطلباتك.
- لمنع تقسيم النظام المتكامل، يجب عدم استخدام خصائص المورّد لتكرار خصائص المركبة المتوفّرة حاليًا في حزمة تطوير البرامج (SDK) VehiclePropertyIds. لمزيد من المعلومات، يُرجى الاطّلاع على الفقرة 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
، واطّلِع على سمات الأنظمة المتوافقة.
الخصائص
قواعد ربط خصائص نظام التدفئة والتهوية وتكييف الهواء من النوع غير GLOBAL بمعرّفات المناطق:
يجب تضمين كل "منطقة" من النوع 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
بمعرّفات AreaID هي استخدام مصفوفة من ثلاثة عناصر:
- 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، ولكنها متاحة في "خدمة السيارة" منذ إصدار Android 12. يتم تعريف هذه السمة على أنّها سمة عدد صحيح ثابتة وعامة للقراءة فقط، ويتم تحديد القيم المحتملة من خلال تعداد GsrComplianceRequirementType
:
الاسم | القيمة | الوصف |
---|---|---|
GSR_COMPLIANCE_NOT_REQUIRED |
0 | لا يُشترط الالتزام بمعايير GSR |
GSR_COMPLIANCE_REQUIRED_V1 |
1 | يجب الالتزام بلوائح السلامة العامّة، ويجب أن يكون إصدار حلّ المتطلبات هو 1. |
لإتاحة هذه السمة في HIDL VHAL (في Android 12)، على المورّدين ترميز معرّف السمة بشكل ثابت.
على سبيل المثال، يوضّح المقتطف التالي كيفية إتاحة ذلك في DefaultConfig.h
VHAL المرجعية HIDL:
{ .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
.