المواقع الخاصة

خصائص المورّدين

لتلبية الاحتياجات الخاصة بالشركاء، تسمح VHAL بخصائص المورِّدين التي يتم الوصول إليها من خلال واجهات برمجة تطبيقات النظام فقط. اتّبِع الإرشادات التالية عند التعامل مع خصائص المورّدين:

  • حاول دائمًا استخدام خصائص النظام أولاً، ويجب استخدام خصائص الموردين كحلٍ أخير عندما لا يفي أي من خصائص النظام بطلبك.
  • لمنع تقسيم المنظومة المتكاملة، يجب عدم استخدام سمات المورّدين لتكرار المركبة مواقع حالية في حزمة تطوير البرامج (SDK) VehiclePropertyIds: لمعرفة المزيد من المعلومات، يمكنك الاطّلاع على القسم 2.5، متطلبات السيارات في CDD:
  • استخدِم الحقول التالية لإنشاء رقم تعريف الموقع:
    • يتم استخدام مجموعة VENDOR VehiclePropertyGroup:VENDOR لخصائص المورّدين فقط.
    • VehicleArea اختَر نوع منطقة مناسبًا.
    • VehiclePropertyType اختَر نوع البيانات المناسب. النوع BYTES يسمح بتمرير البيانات الأولية، وهو ما يكفي في معظم الحالات. إرسال البيانات الضخمة بشكل متكرر من خلال خصائص الموردين إلى إبطاء الوصول إلى شبكة المركبات بالكامل. يُرجى توخي الحذر عند إضافة حمولة كبيرة.
    • Property ID اختَر معرّفًا فريدًا ثنائي البايت لخاصية المورِّد. على سبيل المثال، 0×1234.
  • ملء VehiclePropConfig.configString مع وصف موجز عن المورّد الموقع. يسمح هذا لأدوات التحقق من الصلاحية بوضع علامة على النسخ المماثل العرضي وخصائص المركبة. على سبيل المثال، "خاصي المخصص لـ XYZ".
  • إذن الوصول من خلال CarPropertyManager (لمكونات Java) أو من خلال libvhalclient (للإعلان المدمج مع المحتوى) الإجراءات المستحسنة عدم تعديل واجهات برمجة تطبيقات السيارة الأخرى، لأنّ ذلك قد يؤدي إلى مشاكل في التوافق في المستقبل.

إذن خصائص المورّدين

الإذن الافتراضي لأي خصائص بائع محددة هو android.car.Car.PERMISSION_VENDOR_EXTENSION للحصول على إذن أكثر دقة التحكم، تدعم السمة SUPPORT_CUSTOMIZE_VENDOR_PERMISSION. هذه النتيجة الثابتة القيمة للقراءة فقط، حيث يحدد صفيف التكوين الخاص بها أذونات لخصائص المورد. يتم ضبط configArray على النحو التالي (i هو عدد صحيح يبدأ من 0):

  • configArray[3 * i] PROId، وهو معرّف السمة لخاصية المورّد.
  • 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) من نوع "منطقة المركبات العالمية" غير العالمية بمعرّفات ZoneID: يجب أن تكون كل "منطقة" من نوع VehicleArea محدّد متأثر بالموقع الإلكتروني في معرّف المنطقة للموقع. يتم تعيين وحدات التحكم في درجة الحرارة المقاعد التي "هم الأكثر تأثيرًا" فيها، ولكن يجب تضمين كل مقعد متأثر مرة واحدة فقط. قد يبدو تخصيص المقعد الخلفي المركزي لرقم تعريف المنطقة اليسرى أو الأيمن أمرًا عشوائيًا، غير أنّ إدراج كل مقعد متأثر بهذا التغيير في حقل LocationID واحد فقط يضمن تطابق هذه المقاعد في السيارة، وأن ذلك يتضمن طريقة معقولة للتأثير في كل مقعد.

مثال 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 فقط. المقعدين الأماميين. ستكون مجموعة التعيين الصحيحة لـ ZoneIDs لنظام 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، ومع ذلك، فهو في خدمة السيارة منذ إطلاق نظام التشغيل Android 12. هذه السمة معرَّفة للقراءة فقط. خاصية عدد صحيح عمومي ثابتة، بالقيم المحتملة المحددة بواسطة تعداد GsrComplianceRequirementType:

الاسم القيمة الوصف
GSR_COMPLIANCE_NOT_REQUIRED 0 الامتثال لـ GSR ليس مطلوبًا
GSR_COMPLIANCE_REQUIRED_V1 1 يجب الامتثال لـ GSR والإصدار 1 من حل المتطلبات هو 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.