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

تحدِّد واجهة 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);
    ابدأ مراقبة تغيير قيمة خاصية. بالنسبة إلى المواقع الجغرافية المحدّدة المناطق، يُنشئ unsubscribe(IVehicleCallback callback, int32_t propId) العنصر (StatusCode status);.

يستخدم 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 enum.
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. عندما يستخدم موقع التدفئة والتهوية وتكييف الهواء (HVAC) VehicleAreaSeat، تنطبق قواعد إضافية لربط موقع التدفئة والتهوية وتكييف الهواء (HVAC) المُقسَّم إلى مناطق بأرقام تعريف المناطق. يجب أن يكون كل مقعد متاح في السيارة جزءًا من معرّف منطقة في مصفوفة معرّفات المناطق.

المثال الأول: تحتوي السيارة على مقعدَين أماميَّين (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 على بيانات الخرائط لاستخدامها من قِبل أنظمة المركبات والتطبيقات المتوافقة.

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