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

سمات المورّد

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

الشكل 1. السمات الخارجية للمركبة، منظر أمامي
الشكل 2. أبعاد المركبة الخارجية، منظر جانبي

استخدِم السمات الموضّحة في هذا الجدول لتحديد سمات المركبة الخارجية.

سمة المركبة حقل 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.