خصائص السيارة

وتعرف واجهة السيارة طبقة تجريد الأجهزة (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 العام أو خطأ لكل موقع. يؤدي الخطأ العام إلى إعادة تشغيل طبقة تجريد الأجهزة ، مما قد يؤدي إلى إعادة تشغيل المكونات الأخرى (بما في ذلك التطبيقات).

خصائص السيارة

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

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

قد تحتوي الخاصية المخصصة على أكثر من قيمة واحدة ، بناءً على عدد المناطق التي يدعمها العقار.

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

يحدد VHAL أنواع مناطق متعددة:

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

يجب أن تستخدم كل خاصية مخصصة للمنطقة نوع منطقة محدد مسبقًا. يحتوي كل نوع منطقة على مجموعة من علامات البت المحددة في تعداد لنوع المنطقة. على سبيل المثال، 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 معرف الخاصية ، int

معالجة خصائص المنطقة

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

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

احصل على مكالمات

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

VHAL الحصول على مثال HVAC

الشكل (1). الحصول على درجة حرارة HVAC (CS = CarService ، VHAL = Vehicle HAL)

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

A set المكالمة عملية غير متزامنة تشمل إعلام الحدث بعد يتم إجراء التغيير المطلوب. في عملية نموذجية، و set دعوة يؤدي إلى تقديم طلب التغيير عبر شبكة مركبة. بعض set قد تتطلب مكالمات البيانات الأولية لتكون جاهزة ولكن أثناء التهيئة، قد لا تكون هذه البيانات متاحة بعد. في مثل هذه الحالات، و set يجب دعوة العودة -EAGAIN . بعض الخصائص مع قوة منفصلة على / قبالة يجب أن تعود -ESHUTDOWN عندما يتم تشغيل خاصية إيقاف ولا يمكن القيام به مجموعة. حتى set نافذا، get لا يعني بالضرورة العودة على نفس قيمة ما تم تعيين. على سبيل المثال، set HVAC Temperature .

مجموعة VHAL مثال HVAC

الشكل 2. ضبط درجة حرارة HVAC (CS = CarService ، VHAL = مركبة HAL)

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

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

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

التعامل مع خصائص التكييف

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

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

للاطلاع على قائمة كاملة من خصائص HVAC، والبحث عن 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) آلية لخريطة تبادل البيانات بين العملاء من خلال واجهة الحانة / الفرعية لدعم ميزات السيارة المشتركة، مثل المتقدم أنظمة مساعدة السائق (أداس) . يمكن للعملاء تضمين أنظمة المركبات التي تتفاعل من خلال خاصية VMS في VHAL أو تطبيقات Android المميزة. تهدف البيانات التي يتم مشاركتها على VMS إلى أن تكون مقصورة على بيانات الخرائط لاستخدامها بواسطة أنظمة المركبات والتطبيقات الداعمة.

تم تصميم VMS للاستخدام فقط في تطبيقات Android Automotive ؛ لا تحتوي AOSP على عملاء افتراضيين ينشرون VMS أو يشتركون فيه. للخاصية VMS في VHAL، يتم وصف أنواع الرسائل وهياكل البيانات في VHAL 2.0 في VmsMessageType التعداد، الذي يسرد أنواع الرسائل VMS معتمد. يتم استخدام هذا التعداد كأول عدد صحيح في مصفوفة الأعداد الصحيحة لخاصية المركبة ويحدد كيفية فك تشفير بقية الرسالة.