خصائص خاصة

خصائص البائع

لدعم الاحتياجات الخاصة بالشريك، يسمح 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 .