تحدِّد واجهة 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
بدلاً من عرض خطأ. على سبيل المثال، الحصول على درجة حرارة التدفئة والتهوية وتكييف الهواء
الشكل 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
الشكل 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
الذي يسرد أنواع رسائل نظام إدارة الفيديو المتوافقة. يتم استخدام
هذا التصنيف كأول عدد صحيح في مصفوفة الأعداد الصحيحة لخصائص المركبة، ويحدِّد
كيفية فك ترميز بقية الرسالة.