خصائص المركبات

تحدِّد واجهة Vehicle Hardware Abstraction Layer (VHAL) السمات التي يمكن لمصنّعي السيارات الأصليين تنفيذها، كما تحتوي على البيانات الوصفية للسمة (على سبيل المثال، ما إذا كانت السمة عددًا صحيحًا أو أوضاع التغيير المسموح بها). تستند واجهة VHAL إلى الوصول إلى موقع (القراءة والكتابة والاشتراك)، وهو تمثيل تجريدي لدالة معيّنة.

واجهات HAL

يستخدم VHAL الواجهات التالية:

  • getAllPropConfigs() ينشئ (vec<VehiclePropConfig>propConfigs)
    قائمة بإعدادات جميع السمات المتوافقة مع VHAL. لا يستخدم CarService سوى السمات المتوافقة.
  • من خلال getPropConfigs(vec<int32_t> props)، يتم إنشاء (StatusCode status,vec<VehiclePropConfig> propConfigs);
    يمكنك عرض إعدادات المواقع المحددة.
  • تؤدي set(VehiclePropValue propValue) إلى إنشاء (StatusCodestatus);
    اكتب قيمة إلى السمة. يتم تحديد نتيجة الكتابة لكلّ موقع.
  • يُنشئ subscribe(IVehicleCallback callback, vec<SubscribeOptions> options) (StatusCode status);
    ابدأ بمراقبة تغيير قيمة خاصية. بالنسبة إلى السمة المقسَّمة، يتم إنشاء (StatusCode status); من خلال unsubscribe(IVehicleCallback callback, int32_t propId).

يستخدم VHAL واجهات طلب إعادة الاتصال التالية:

  • oneway onPropertyEvent(vec<VehiclePropValue>propValues);
    يُرسِل إشعارًا بتغيير قيمة خاصية المركبة. يجب تنفيذ هذا الإجراء للمواقع المشتركة فقط.
  • oneway onPropertySetError(StatusCode errorCode,int32_t propId,int32_tareaId);
    عرض خطأ على مستوى VHAL العام أو خطأ لكلّ خاصية يؤدي الخطأ العام إلى إعادة تشغيل HAL، ما قد يؤدي إلى إعادة تشغيل المكوّنات الأخرى (بما في ذلك التطبيقات).

سمات المركبات

يمكن أن تكون السمات للقراءة فقط أو للكتابة فقط (تُستخدَم لتمرير المعلومات إلى مستوى VHAL ) أو للقراءة والكتابة (إنّ إتاحة معظم السمات اختيارية). يتم التعرّف على كلّ سمة بشكل فريد باستخدام مفتاح int32، ويكون لها نوع محدَّد مسبقًا (value_type):

  • BYTES
  • BOOLEAN
  • EPOCH_TIME
  • FLOAT
  • FLOAT[]
  • INT32
  • INT32[]
  • INT64
  • INT64[]
  • STRING
  • MIXED

قد يحتوي الموقع المُقسَّم إلى مناطق على أكثر من قيمة واحدة، استنادًا إلى عدد المناطق التي يتيح الموقع استخدامها.

أنواع المناطق

يحدِّد معيار VHAL أنواعًا متعدّدة من المناطق:

نوع المنطقة الوصف
GLOBAL هذا الموقع هو موقع فردي ولا يتضمّن مناطق متعدّدة.
WINDOW المنطقة المستندة إلى النوافذ، تستخدِم VehicleAreaWindow enum.
MIRROR المنطقة المستندة إلى المرايا، تستخدِم VehicleAreaMirror enum.
SEAT المنطقة استنادًا إلى المقاعد، تستخدم VehicleAreaSeat enum.
DOOR تستند المنطقة إلى الأبواب، وتستخدم تعداد VehicleAreaDoor.
WHEEL المنطقة المستندة إلى العجلات، تستخدِم VehicleAreaWheel enum.

يجب أن يستخدم كل موقع مصنّف حسب المنطقة نوع منطقة محدّدًا مسبقًا. يحتوي كل نوع منطقة على مجموعة من أعلام الوحدات المحدّدة في قائمة أرقام صحيحة لنوع المنطقة. على سبيل المثال، تحدِّد منطقة SEAT قائمة VehicleAreaSeat بقيم ثابتة:

  • ROW_1_LEFT = 0x0001
  • ROW_1_CENTER = 0x0002
  • ROW_1_RIGHT = 0x0004
  • ROW_2_LEFT = 0x0010
  • ROW_2_CENTER = 0x0020
  • ROW_2_RIGHT = 0x0040
  • ROW_3_LEFT = 0x0100
  • ...

أرقام تعريف المناطق

يتمّ تحديد المواقع الجغرافية المحدّدة بمناطق معيّنة من خلال أرقام تعريف المناطق. قد يتضمّن كل موقع مُقسَّم تضاريسًا معرّف منطقة واحدًا أو أكثر. يتألّف رقم تعريف المنطقة من علامة واحدة أو أكثر من التعداد المعني. على سبيل المثال، قد يستخدم موقع يستخدم VehicleAreaSeat معرّفات المناطق التالية:

اسم الوصف
ROW_1_LEFT | ROW_1_RIGHT ينطبق رقم تعريف المنطقة على كلا المقعدَين الأماميَين.
ROW_2_LEFT لا ينطبق ذلك إلا على المقعد الخلفي الأيسر.
ROW_2_RIGHT لا ينطبق ذلك إلا على المقعد الأيمن الخلفي.

حالة الموقع

تأتي كل قيمة خاصية بقيمة VehiclePropertyStatus. يشير ذلك إلى الحالة الحالية للموقع:

اسم الوصف
AVAILABLE السمة متوفّرة والقيمة صالحة.
UNAVAILABLE قيمة السمة غير متاحة حاليًا. يتم استخدامه للميزات التي يتم إيقافها مؤقتًا لموقع متوافق.
ERROR حدث خطأ في هذا المَعلم.

ضبط إعدادات موقع

استخدِم VehiclePropConfig لتقديم معلومات الضبط لكل موقع. تشمل المعلومات ما يلي:

متغير الوصف
access "r" و"w" و"rw"
changeMode تمثّل طريقة مراقبة موقع معيّن، سواء كان التغيير متقطّعًا أو مستمرًا.
areaConfigs قيم areaId وmin وmax
configArray مَعلمات الضبط الإضافية
configString معلومات إضافية تم تمريرها كسلسلة
minSampleRate maxSampleRate
prop معرّف الموقع، عدد صحيح

خصائص منطقة المناولة

الموقع المُقسَّم إلى مناطق هو ما يعادل مجموعة من المواقع المتعددة التي يمكن فيها الوصول إلى كل موقع فرعي باستخدام قيمة معرّف المنطقة المحدّدة.

  • يتضمّن طلب get للموقع الجغرافي المحدد دائمًا رقم تعريف المنطقة في الطلب. لذلك، يتم عرض القيمة الحالية فقط لمعرّف المنطقة المطلوب. إذا كان الموقع عالميًا، يكون رقم تعريف المنطقة هو 0.
  • set طلب الموقع المخصّص دائمًا يتضمّن رقم تعريف المنطقة في الطلب. وبالتالي، يتم تغيير معرّف المنطقة المطلوب فقط.
  • subscribe تُنشئ المكالمة أحداثًا لجميع أرقام تعريف المناطق للموقع.

تلقّي المكالمات

أثناء عملية الإعداد، قد لا تكون قيمة الموقع متاحة بعد لأنّ رسالة شبكة المركبة المطابقة لم نتلقَّ بعد. في هذه الحالات، يجب أن يعرض الاستدعاء get القيمة -EAGAIN. تمتلك بعض السمات (مثل التدفئة والتهوية وتكييف الهواء) خاصية منفصلة لتشغيل الجهاز أو إيقافه. من المفترض أن يعرض طلب get لمثل هذه السمة (عندما يكون غير مفعَّل) حالة UNAVAILABLE بدلاً من عرض خطأ. على سبيل المثال، الحصول على درجة حرارة التدفئة والتهوية وتكييف الهواء

مثال على الحصول على بيانات التدفئة والتهوية وتكييف الهواء من خلال VHAL

الشكل 1: الحصول على درجة حرارة التدفئة والتهوية وتكييف الهواء (CS = CarService، VHAL = Vehicle HAL)

ضبط المكالمات

في عملية عادية، يؤدي استدعاء set إلى تقديم طلب تغيير على مستوى شبكة المركبة. من الناحية المثالية، يكون طلب set عملية غير متزامنة يتم عرضها في أقرب وقت ممكن، ولكن يمكن أن يكون أيضًا متزامنًا. قد تتطلّب بعض طلبات set أن تكون البيانات الأولية جاهزة، ولكن قد لا تكون هذه البيانات متاحة بعد أثناء عملية الإعداد. في هذه الحالات، يجب أن تعرض المكالمة set السمة StatusCode#TRY_AGAIN. بالنسبة إلى بعض المواقع التي تتضمّن مفاتيح إشعال وإيقاف منفصلة، من المفترض أن تعرض StatusCode#NOT_AVAILABLE أو StatusCode#NOT_AVAILABLE_DISABLED عندما يكون الموقع متوقفًا ولا يمكن تنفيذ set. حتى تصبح السمة set سارية، ليس بالضرورة أن تعرض get القيمة نفسها التي تم ضبطها. مثلاً: set HVAC Temperature

مثال على ضبط نظام التدفئة والتهوية وتكييف الهواء في VHAL

الشكل 2. ضبط درجة حرارة التدفئة والتهوية وتكييف الهواء (CS = CarService، VHAL = Vehicle HAL)

التعامل مع الخصائص المخصَّصة

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

  • يجب إنشاء رقم تعريف الموقع باستخدام الحقول التالية:
    • VehiclePropertyGroup:VENDOR
      لا تُستخدَم مجموعة VENDOR إلا للمواقع المخصّصة.
    • VehicleArea
      اختَر نوع منطقة مناسبًا.
    • VehiclePropertyType
      اختَر نوع البيانات المناسب. يسمح نوع BYTES بتمرير البيانات الأولية وهو كافٍ في معظم الحالات. إنّ إرسال البيانات الضخمة بشكل متكرّر من خلال المواقع المخصّصة يمكن أن يؤدي إلى إبطاء الوصول إلى شبكة المركبة بالكامل، لذا يُرجى الحذر عند إضافة حمولة كبيرة.
    • Property ID
      اختَر معرّفًا من أربعة قصاصة للموقع المخصّص.
  • لمنع تقسيم المنظومة المتكاملة، يجب عدم استخدام السمات المخصّصة لنسخ خصائص المركبات المتوفّرة حاليًا في حزمة تطوير البرامج (SDK) (VehiclePropertyIds).
  • املأ الحقل VehiclePropConfig.configString بوصف موجز للسمة المخصّصة. ويسمح ذلك لأدوات التحقّق من الصحة بالإبلاغ عن تكرار بيانات مركبات حالية عن طريق الخطأ. على سبيل المثال، "حالة ضوء التحذير".
  • الوصول من خلال CarPropertyManager (لمكونات Java) أو من خلال Vehicle Network Service API (للتطبيقات الأصلية) يجب عدم تعديل واجهات برمجة التطبيقات الأخرى للسيارة لأنّ ذلك قد يؤدي إلى مشاكل في التوافق في المستقبل.
  • بعد تنفيذ خصائص المورّدين، اختَرفقط قائمة الأذونات في التعداد VehicleVendorPermission لخصائص المورّدين. سيؤدي ربط أذونات البائع لخصائص النظام إلى إيقاف CTS وVTS.

التعامل مع خصائص التدفئة والتهوية وتكييف الهواء

يمكنك استخدام VHAL للتحكّم في التدفئة والتهوية وتكييف الهواء من خلال ضبط السمات ذات الصلة بالتدفئة والتهوية وتكييف الهواء. معظم مواقع التدفئة والتهوية وتكييف الهواء هي مواقع مُصنَّفة حسب المناطق، على الرغم من أنّ العديد منها هو مواقع غير مُصنَّفة حسب المناطق (عالمية). تشمل أمثلة السمات المحدّدة ما يلي:

الخاصية الغرض
VEHICLE_PROPERTY_HVAC_TEMPERATURE_SET اضبط درجة الحرارة لكل منطقة.
VEHICLE_PROPERTY_HVAC_RECIRC_ON التحكّم في إعادة التدوير لكل منطقة

للاطّلاع على قائمة كاملة بخصائص التدفئة والتهوية وتكييف الهواء، ابحث عن VEHICLE_PROPERTY_HVAC_* في types.hal. عندما تستخدم خاصية التدفئة والتهوية وتكييف الهواء VehicleAreaSeat، يتم تطبيق قواعد إضافية لربط خاصية التدفئة والتهوية وتكييف الهواء في منطقة بأرقام تعريف المناطق. يجب أن يكون كل مقعد متاح في السيارة جزءًا من معرّف منطقة في مصفوفة معرّفات المناطق.

المثال الأول: تحتوي السيارة على مقعدَين أماميَين (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_LEFT | ROW_2_CENTER
    • ROW_1_RIGHT | ROW_2_RIGHT

المثال الثاني: تحتوي السيارة على ثلاثة صفوف مقاعد، مع مقعدَين في الصف الأمامي (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 إلى أرقام تعريف المناطق هي استخدام صفيف من ثلاثة عناصر:

  • ROW_1_LEFT
  • ROW_1_RIGHT
  • ROW_2_LEFT | ROW_2_CENTER | ROW_2_RIGHT | ROW_3_LEFT | ROW_3_CENTER | ROW_3_RIGHT

التعامل مع خصائص أداة الاستشعار

تمثّل سمات أجهزة استشعار VHAL بيانات أجهزة الاستشعار الفعلية أو معلومات السياسة، مثل حالة القيادة. يمكن لأي تطبيق الوصول إلى بعض معلومات أدوات الاستشعار (مثل حالة القيادة ووضع النهار/الليل) بدون قيود، لأنّ البيانات إلزامية لإنشاء تطبيق آمن للمركبة. إنّ معلومات أجهزة الاستشعار الأخرى (مثل سرعة المركبة) أكثر حساسية وتتطلب أذونات محدّدة يمكن للمستخدمين إدارتها.

اطّلِع على سمات أداة الاستشعار المتوافقة (في types.hal).

خدمة توفير بيانات التنقّل للمركبة

توفّر خدمة توفير بيانات التنقّل للمركبة (VMS) آلية لتبادل بيانات الخرائط بين العملاء من خلال واجهة نشر/اشتراك لإتاحة ميزات المركبات الشائعة، مثل أنظمة مساعدة السائق المتقدمة (ADAS). يمكن للعملاء تضمين أنظمة المركبات التي تتعامل مع واجهة VMS في VHAL أو تطبيقات Android المميّزة. ويكون الغرض من البيانات التي تتم مشاركتها على الأجهزة الافتراضية هو أن تقتصر على بيانات الخرائط التي تستخدمها أنظمة المركبات والتطبيقات المتوافقة.

يُعدّ نظام إدارة الفيديوهات (VMS) مخصّصًا للاستخدام في عمليات تنفيذ Android Automotive فقط، ولا يحتوي AOSP على عملاء تلقائيين ينشرون نظام إدارة الفيديوهات أو يشتركون فيه. بالنسبة إلى سمة نظام إدارة الفيديو (VMS) في VHAL، يتم وصف أنواع الرسائل وبنى البيانات في VHAL 2.0 في التعداد VmsMessageType الذي يسرد أنواع رسائل نظام إدارة الفيديو المتوافقة. يتم استخدام هذا التصنيف كأول عدد صحيح في مصفوفة الأعداد الصحيحة لخصائص المركبة، ويحدِّد كيفية فك ترميز بقية الرسالة.