خصائص البائع
لدعم الاحتياجات الخاصة بالشريك، يسمح VHAL بخصائص البائع التي يمكن الوصول إليها فقط من خلال واجهات برمجة تطبيقات النظام. استخدم الإرشادات التالية عند العمل مع خصائص البائع:
- حاول دائمًا استخدام خصائص النظام أولاً، ويجب استخدام خصائص البائع كحل أخير عندما لا تغذي أي من خصائص النظام متطلباتك.
- لمنع تجزئة النظام البيئي، يجب عدم استخدام خصائص البائع لنسخ خصائص المركبة الموجودة بالفعل في SDK VehiclePropertyIds . لمعرفة المزيد، راجع القسم 2.5، متطلبات السيارات في العناية الواجبة.
- استخدم الحقول التالية لإنشاء معرف الخاصية:
-
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) عن طريق ضبط الخصائص المتعلقة بنظام التدفئة والتهوية وتكييف الهواء (HVAC). ترتبط معظم خصائص التدفئة والتهوية وتكييف الهواء (HVAC) بمناطق معينة في السيارة، على الرغم من أن العديد منها هي خصائص عالمية. تتضمن الخصائص المحددة للعينة ما يلي:
ملكية | غاية |
---|---|
HVAC_TEMPERATURE_SET | ضبط درجة الحرارة لكل معرف المنطقة. |
HVAC_POWER_ON | حالة الطاقة لنظام التدفئة والتهوية وتكييف الهواء (HVAC) لكل معرف منطقة. |
بالنسبة لخصائص التدفئة والتهوية وتكييف الهواء (HVAC) التي تعتمد على حالة الطاقة لنظام التدفئة والتهوية وتكييف الهواء (HVAC)، يجب أن يتم إدراجها في صفيف التكوين HVAC_POWER_ON
. للاطلاع على قائمة كاملة بخصائص HVAC، ابحث عن HVAC_*
في VehicleProperty.aidl
، راجع خصائص النظام المدعومة . ملكيات.
قواعد لتعيين خصائص HVAC من النوع غير العالمي لـ VehicleArea إلى معرفات المنطقة: يجب تضمين كل "منطقة" لنوع VehicleArea
محدد يتأثر بالخاصية، في معرف المنطقة الخاص بتلك الخاصية. يتم تخصيص أجهزة التحكم في درجة الحرارة للمقاعد التي "تؤثر بشكل أكبر"، ولكن يجب تضمين كل مقعد متأثر مرة واحدة بالضبط. قد يبدو تعيين المقعد الخلفي الأوسط إلى AreaID الأيسر أو الأيمن أمرًا اعتباطيًا، ولكن تضمين كل مقعد متأثر في AreaID واحد بالضبط يضمن التعبير عن جميع المقاعد في السيارة وتوافر طريقة معقولة للتأثير على كل مقعد.
مثال 1
تحتوي السيارة على مقعدين أماميين (ROW_1_LEFT، ROW_1_RIGHT) وثلاثة مقاعد خلفية (ROW_2_LEFT، ROW_2_CENTER، ROW_2_RIGHT). هناك وحدتان للتحكم في درجة الحرارة، واحدة لكل من جانب السائق وجانب الراكب. ستكون مجموعة التعيينات الصالحة لـ AreaIDs لـ 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 للمقعدين الأماميين فقط. ستكون مجموعة التعيينات الصالحة لـ AreaIDs لـ HVAC_AUTO_ON عبارة عن صفيف عنصر واحد:
- ROW_1_LEFT | ROW_1_RIGHT
إذا كان HVAC_AUTO_ON
يحتوي على وحدتي تحكم منفصلتين لجانب السائق وجانب الراكب، فسيكون التعيين البديل عبارة عن مصفوفة مكونة من عنصرين:
- ROW_1_LEFT
- ROW_1_RIGHT
الامتثال للوائح السلامة العامة للاتحاد الأوروبي
إذا كان يجب أن تتوافق السيارة مع متطلبات لائحة السلامة العامة للاتحاد الأوروبي (GSR) من خلال Android، فيجب دعم الخاصية GENERAL_SAFETY_REGULATION_COMPLIANCE_REQUIREMENT
. مثال على حالة الاستخدام هو GSR-ISA (مساعد السرعة الذكي) كما هو محدد في لائحة الاتحاد الأوروبي 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
والتعداد من 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
.