Sensors Multi-HAL هو إطار عمل يسمح بتشغيل واجهات HAL لأجهزة الاستشعار مع واجهات HAL أخرى لأجهزة الاستشعار. تحمِّل حزمة HAL المتعددة لأجهزة الاستشعار بشكل ديناميكي حِزم HAL الفرعية لأجهزة الاستشعار المخزّنة كمكتبات ديناميكية في قسم المورّد، وتمنحها عنصر callback يمكنه معالجة نشر الأحداث واكتساب قفل الاستيقاظ وإلغاء قفله. واجهة HAL الفرعية لأجهزة الاستشعار هي واجهة HAL لأجهزة الاستشعار تم إنشاؤها في عنصر مشترَك على ملف "قسم المورّد" ويستخدمها إطار عمل HAL المتعدّد. لا تعتمد وحدات HAL الفرعية هذه على بعضها البعض أو على رمز HAL المتعدّد الذي يحتوي على الدالة الرئيسية للعملية.
تتوفّر أجهزة الاستشعار Multi-HAL 2.1 على الأجهزة التي تعمل بنظام التشغيل Android 11 أو أعلى، تكرار أجهزة الاستشعار Multi-HAL 2.0 التي تتيح تحميل HALs فرعية يمكنها كشف زاوية المفصّلة نوع جهاز الاستشعار. لتتوافق مع هذا النوع من أجهزة الاستشعار، يجب أن تستخدم واجهات برمجة التطبيقات الفرعية لواجهة HAL واجهات برمجة التطبيقات الفرعية لواجهة HAL المحدّدة في عنوان SubHal 2.1.
بالنسبة إلى الأجهزة التي تعمل بالإصدار 13 من نظام التشغيل Android أو الإصدارات الأحدث والتي تستخدم لأجهزة استشعار AIDL HAL، يمكنك استخدام طبقة رقيقة متعددة القنوات (HAL) للسماح بإمكانية بروتوكول HAL متعددة. لمعرفة تفاصيل التنفيذ، يُرجى قراءة مقالة استخدام حزمة HAL متعددة لأجهزة الاستشعار مع حزمة HAL لأجهزة الاستشعار المستندة إلى واجهة برمجة التطبيقات (AIDL).
الفرق بين Sensors Multi-HAL 2 وSensors HAL 2
تتوفّر أجهزة الاستشعار Multi-HAL 2 على الأجهزة التي تعمل بنظام التشغيل Android
10 أو أعلى،
ويقدم عدة تجريدات أعلى الحساسات HAL
2 لتسهيل
للتفاعل مع واجهات برمجة تطبيقات HAL. تقدّم أجهزة الاستشعار Multi-HAL 2
HalProxy
معالجة تنفيذ واجهة أجهزة الاستشعار HAL 2
V2_1/SubHal
(أو
V2_0/SubHal
)
للسماح لـ HalProxy
بالتفاعل مع HALs الفرعية.
تختلف الواجهة ISensorsSubHal
عن واجهة
2.1/ISensors.hal
(أو
2.0/ISensors.hal
)
بالطرق التالية:
- تُمرِّر طريقة الإعداد فئة
IHalProxyCallback
بدلاً من فئتَي FMQ وISensorsCallback
. - يجب أن تنفذ "HALs" الفرعية دالة تصحيح أخطاء لتوفير تصحيح الأخطاء المعلومات في تقارير الأخطاء.
- يجب أن تُنفِّذ وحدات HAL الفرعية دالة اسم حتى يمكن تمييز وحدة HAL الفرعية المحمَّلة عن وحدات HAL الفرعية الأخرى.
يكمن الاختلاف الرئيسي بين أجهزة الاستشعار Multi-HAL 2 وHAL 2 في
لتهيئة الدوال. بدلاً من توفير أجهزة FMQ، يمكن لـ IHalProxyCallback
توفير طريقتين، إحداهما لنشر أحداث المستشعر إلى أدوات الاستشعار
وطريقة واحدة لإنشاء عمليات قفل التنشيط. الخيارات المتقدمة، تعمل أجهزة الاستشعار
تدير إدارة متعددة القنوات (HAL) جميع التفاعلات مع FMQs لضمان تسليم
أحداث الاستشعار لجميع الكائنات الفرعية HAL. ننصحك بشدة بأن تستخدم واجهات HAL الفرعية createScopedWakelock
لتحديد مهلة قفل الاستيقاظ وتحميلها على واجهة HAL المتعددة لأجهزة الاستشعار، ومركزة استخدام قفل الاستيقاظ على قفل استيقاظ شائع واحد لواجهة HAL المتعددة لأجهزة الاستشعار بالكامل، ما يقلل من عدد طلبات القفل وفتح القفل.
يتضمّن Sensors Multi-HAL 2 أيضًا بعض ميزات الأمان المدمجة. ويعالج
المواقف التي يكون فيها "الملف المؤقت للطلبات في نظام التشغيل Android" الخاص بجهاز الاستشعار ممتلئًا أو عندما تتم إعادة تشغيل إطار عمل أجهزة الاستشعار في Android
وتحتاج إلى إعادة ضبط حالة جهاز الاستشعار. بالإضافة إلى ذلك، عندما يتم تسجيل الأحداث في فئة HalProxy
ولكن يتعذّر على إطار عمل أداة الاستشعار قبول الأحداث على الفور، يمكن أن تنقل حزمة Sensors Multi-HAL الأحداث إلى سلسلة مهام في الخلفية للسماح بمواصلة العمل على جميع حِزم HAL الفرعية أثناء انتظار نشر الأحداث.
تنفيذ رمز المصدر والمرجع
يتوفّر رمز جميع أجهزة الاستشعار المتعددة القنوات (HAL) في
hardware/interfaces/sensors/common/default/2.X/multihal/
في ما يلي إرشادات لبعض الموارد.
HalProxy.h
: يتم إنشاء مثيل للكائنHalProxy
من خلال أجهزة استشعار متعددة القنوات (HAL) ويتعامل مع تمرير البيانات من الكائنات الفرعية المعالجة (HALs) إلى إطار عمل المستشعر.HalProxy.cpp
: يتضمن تنفيذ الدالةHalProxy
جميع الأسباب المنطقية اللازمة الاتصال المتعدد بين الكائنات الفرعية HAL وإطار عمل أداة الاستشعار.SubHal.h
: تحدد الواجهةISensorsSubHal
الواجهة التي يجب أن تتوفر لها فئات HALs فرعية يجب متابعتها لتتوافق معHalProxy
. تنفِّذ HAL الفرعية طريقة initialize لكي يمكن استخدام عنصرHalProxyCallback
معpostEvents
وcreateScopedWakelock
.لعمليات تطبيق Multi-HAL 2.0، استخدم الإصدار 2.0 من
SubHal.h
hardware/interfaces/sensors/common/default/2.X/multihal/tests/
: تتحقّق اختبارات الوحدة هذه من صحة تنفيذHalProxy
.hardware/interfaces/sensors/common/default/2.X/multihal/tests/fake_subhal/
: يستخدم مثال تنفيذ HAL الفرعي هذا أجهزة استشعار مزيفة لإنشاء data مزيفة. وهو مفيد لاختبار كيفية تفاعل عدة طبقات HALs على الجهاز.
التنفيذ
يوضّح هذا القسم كيفية تنفيذ حِزم HAL المتعددة لأجهزة الاستشعار في الحالات التالية:
- استخدام حِزم HAL متعددة لأجهزة الاستشعار مع حِزم HAL لأجهزة الاستشعار المستندة إلى واجهة برمجة التطبيقات (AIDL)
- تطبيق أجهزة الاستشعار Multi-HAL 2.1
- نقل البيانات من Sensors Multi-HAL 2.0 إلى Multi-HAL 2.1
- نقل البيانات من Sensors HAL 2.0
- نقل البيانات من Sensors HAL 1.0
- نقل البيانات من Sensors Multi-HAL 1.0
استخدام أجهزة الاستشعار المتعددة HAL مع معيار AIDL HAL لأجهزة الاستشعار
للسماح بإمكانية بروتوكول HAL المتعددة باستخدام أجهزة الاستشعار AIDL HAL، يجب استيراد واجهة AIDL. وحدة طبقة الرقائق متعددة HAL، والموجودة في hardware/interfaces/sensors/aidl/default/multihal/: تعالج الوحدة عملية التحويل بين نوعَي تعريف HAL لأجهزة الاستشعار AIDL وHIDL، كما تحدّد حزمة حول واجهة HAL المتعدّدة الموضّحة في مقالة تنفيذ حزمة HAL المتعدّدة لأجهزة الاستشعار 2.1. تتوافق طبقة الحشو لواجهة HAL المتعدّدة في AIDL مع الأجهزة التي تُنفِّذ حزمة Sensors Multi-HAL 2.1.
تسمح لك طبقة الحشو لواجهة HAL المتعدّدة في AIDL بعرض أداة تتبُّع الرأس وأنواع أدوات استشعار IMU ذات المحاور المحدودة في واجهة HAL لأجهزة الاستشعار في AIDL. لاستخدام
أنواع هذه الحساسات التي تحدّدها واجهة AIDL HAL، اضبط الحقل type
في SensorInfo
في عملية تنفيذ getSensorsList_2_1()
. وهذا الإجراء آمن
لأنّ حقول نوع أجهزة الاستشعار المستندة إلى الأعداد الصحيحة في HAL لأجهزة استشعار AIDL وHIDL
لا تتداخل.
تنفيذ أجهزة الاستشعار Multi-HAL 2.1
لتنفيذ Sensors Multi-HAL 2.1 على جهاز جديد، اتّبِع الخطوات التالية:
- تنفيذ واجهة
ISensorsSubHal
كما هو موضّح فيSubHal.h
- نفِّذ طريقة
sensorsHalGetSubHal_2_1
فيSubHal.h
. أضِف هدفًا
cc_library_shared
لإنشاء وحدة HAL فرعية تم تنفيذها حديثًا. عند إضافة الاستهداف:- تأكَّد من دفع القيمة المستهدَفة إلى مكان ما في قسم المورّد على الجهاز.
- في ملف الإعداد الموجود على
/vendor/etc/sensors/hals.conf
، لإضافة المسار إلى المكتبة على سطر جديد. إذا لزم الأمر، أنشئ ملفhals.conf
.
للحصول على مثال على إدخال
Android.bp
لإنشاء مكتبة فرعية لـ HAL، يُرجى الاطّلاع علىhardware/interfaces/sensors/common/default/2.X/multihal/tests/Android.bp
.إزالة جميع الإدخالات البالغ عددها
android.hardware.sensors
منmanifest.xml
يحتوي على قائمة بـ HALs المتوافقة على الجهاز.أزِل جميع ملفات خدمة
android.hardware.sensors
وملفاتservice.rc
منملفdevice.mk
وأضِفandroid.hardware.sensors@2.1-service.multihal
وandroid.hardware.sensors@2.1-service.multihal.rc
إلىملفPRODUCT_PACKAGES
.
عند بدء التشغيل، يبدأ HalProxy
بالبحث عن وحدة HAL الفرعية التي تم تنفيذها حديثًا ويُثبِّتها من خلال استدعاء sensorsHalGetSubHal_2_1
.
المنفذ من أجهزة الاستشعار Multi-HAL 2.0 إلى Multi-HAL 2.1
لنقل البيانات من Multi-HAL 2.0 إلى Multi-HAL 2.1، عليك تنفيذ واجهة
SubHal
وإعادة تجميع HAL الفرعي.
في ما يلي الاختلافات بين واجهتَي SubHal
2.0 و2.1:
- يستخدم
IHalProxyCallback
الأنواع التي تم إنشاؤها في الإصدار 2.1 من مواصفةISensors.hal
. - تُرسِل الدالة
initialize()
قيمة جديدة لملفIHalProxyCallback
بدلاً من القيمة الواردة من واجهةSubHal
2.0. - يجب أن يتم تنفيذ "HALs" فرعية:
getSensorsList_2_1
وinjectSensorData_2_1
بدلاً منgetSensorsList
وinjectSensorData
حيث إن هاتين الطريقتين تستخدمان الأنواع الجديدة المضافة في الإصدار 2.1 من مواصفاتISensors.hal
. - يجب أن تعرض واجهات HAL الفرعية
sensorsHalGetSubHal_2_1
بدلاً منsensorsHalGetSubHal
لكي تتعامل Multi-HAL معها كواجهات HAL فرعية من الإصدار 2.1 .
منفذ من Sensors HAL 2.0
عند الترقية إلى أجهزة الاستشعار Multi-HAL 2.0 من Sensors Multi-HAL 2.0 2.0، تأكد من HAL التنفيذ يلبي المتطلبات التالية.
بدء HAL
تتضمن أجهزة الاستشعار HAL 2.0 وظيفة تهيئة تتيح لخدمة الاستشعار
لتمرير FMQs واستدعاء جهاز الاستشعار الديناميكي. في المستشعرات Multi-HAL 2.0،
تمرر الدالة initialize()
استدعاءً واحدًا يجب استخدامه للنشر
أحداث أداة الاستشعار، والحصول على عمليات قفل التنشيط، والإشعار باتصال أداة الاستشعار الديناميكية
انقطاع الاتصال.
نشر أحداث أداة الاستشعار في التنفيذ المتعدد المستويات (HAL)
بدلاً من نشر أحداث أجهزة الاستشعار من خلال FMQ، يجب أن يكتب HAL الفرعي أحداث
أجهزة الاستشعار في
IHalProxyCallback
عندما تكون أحداث أجهزة الاستشعار متاحة.
أحداث WAKE_UP
في Sensors HAL 2.0، يمكن لواجهة HAL إدارة قفل الاستيقاظ لتنفيذه. في واجهة برمجة التطبيقات لخدمة Multi-HAL 2.0 لأجهزة الاستشعار، تسمح واجهات برمجة التطبيقات الفرعية لواجهة Multi-HAL بإدارة عمليات قفل التنشيط ويمكنها طلب الحصول على قفل تنشيط من خلال استدعاء createScopedWakelock
.
يجب الحصول على قفل تنشيط مقيّد النطاق ونقله إلى postEvents
عند
نشر أحداث التنشيط إلى تنفيذ Multi-HAL.
أدوات الاستشعار الديناميكية
تتطلب أجهزة الاستشعار Multi-HAL 2.0 أن يكون onDynamicSensorsConnected
onDynamicSensorsDisconnected
بوصة
IHalProxyCallback
تسمى متى تغيرت توصيلات أداة الاستشعار الديناميكية. تتوفّر وظائف ردّ الاتصال هذه
كجزء من مؤشر IHalProxyCallback
الذي يتم توفيره من خلال
دالة initialize()
.
منفذ من Sensors HAL 1.0
عند الترقية إلى حزمة Sensors Multi-HAL 2.0 من حزمة Sensors HAL 1.0، تأكَّد من أنّ تنفيذ HAL يستوفي المتطلبات التالية.
بدء HAL
يجب أن تكون دالة initialize()
متوافقة لإنشاء دالة ردّ الاتصال بين
HAL الفرعي وتنفيذ Multi-HAL.
إتاحة أجهزة الاستشعار المتاحة
في Sensors Multi-HAL 2.0، يجب أن تعرض الدالة getSensorsList()
القيمة
نفسها أثناء عملية تشغيل جهاز واحدة، حتى في عمليات إعادة تشغيل HAL الخاصة بأجهزة الاستشعار. هذا يسمح
إطار العمل لمحاولة إعادة إنشاء اتصالات جهاز الاستشعار إذا كان خادم النظام
تتم إعادة تشغيله. يمكن أن تتغيّر القيمة التي يعرضها getSensorsList()
بعد أن يُعيد الجهاز
تشغيله.
نشر أحداث أداة الاستشعار في التنفيذ المتعدد المستويات (HAL)
أمّا في أجهزة الاستشعار HAL 2.0، فبدلاً من الانتظار حتى يتم طلب poll()
،
كتابة أحداث أداة الاستشعار بشكل استباقي
IHalProxyCallback
متى توفرت أحداث المستشعر.
أحداث WAKE_UP
في أجهزة الاستشعار HAL 1.0، يمكن لـ HAL إدارة قفل التنشيط لتنفيذه. ضِمن
أجهزة استشعار Multi-HAL 2.0، وهي الأجهزة الفرعية HALs التي تسمح بتنفيذ مستويات HAL متعددة
إدارة عمليات قفل التنشيط ويمكن أن تطلب الحصول على قفل التنشيط من خلال الاستدعاء
createScopedWakelock
يجب الحصول على قفل تنشيط مُقفَل النطاق وتمريره إلى postEvents
عند ذلك.
نشر أحداث الاستيقاظ في تنفيذ بروتوكول HAL المتعدد.
أدوات الاستشعار الديناميكية
في أجهزة الاستشعار HAL 1.0، يتم عرض أدوات الاستشعار الديناميكية من خلال الدالة poll()
.
تتطلّب حزمة Sensors Multi-HAL 2.0 استدعاء onDynamicSensorsConnected
و
onDynamicSensorsDisconnected
في
IHalProxyCallback
عند تغيير اتصالات أداة الاستشعار الديناميكية. عمليات معاودة الاتصال هذه
متاحة كجزء من مؤشر IHalProxyCallback
الذي يتم تقديمه من خلال
الدالة initialize()
.
منفذ من Sensors Multi-HAL 1.0
لنقل عملية تنفيذ حالية من Sensors Multi-HAL 1.0، اتّبِع الخطوات التالية.
- تأكَّد من أنّ إعدادات HAL لأدوات الاستشعار متوفّرة فيملف
/vendor/etc/sensors/hals.conf
. قد يشمل ذلك نقل الملف المتوفّر في/system/etc/sensors/hals.conf
. - أزِل أي إشارات إلى
hardware/hardware.h
وhardware/sensors.h
لأنّ هذه العناصر غير متوافقة مع HAL 2.0. - منفذ HALs فرعيًا على النحو الموضَّح في نقل البيانات من أجهزة الاستشعار هال الإصدار 1.0
- اضبط Sensors Multi-HAL 2.0 على أنّه HAL المحدّد باتّباع الخطوتَين 3 و 4 في قسم تنفيذ Sensors Mutli-HAL 2.0.
التحقُّق
تشغيل أداة VTS
عند دمج حزمة HAL فرعية واحدة أو أكثر مع حزمة Sensors Multi-HAL 2.1، استخدِم مجموعة اختبار المورّد (VTS) للتأكّد من أنّ عمليات تنفيذ حزمة HAL الفرعية تستوفي جميع المتطلبات التي تحدّدها واجهة Sensors HAL.
لتشغيل اختبارات VTS الخاصة بأجهزة الاستشعار فقط عند إعداد VTS على جهاز مضيف، نفِّذ الأوامر التالية:
vts-tradefed run commandAndExit vts \
--skip-all-system-status-check \
--primary-abi-only \
--skip-preconditions \
--module VtsHalSensorsV2_0Target && \
vts-tradefed run commandAndExit vts \
--skip-all-system-status-check \
--primary-abi-only \
--skip-preconditions \
--module VtsHalSensorsV2_1Target
في حال تشغيل طبقة الرقاقة AIDL Multi-HAL، شغِّل VtsAidlHalSensorsTargetTest
.
vts-tradefed run commandAndExit vts \
--skip-all-system-status-check \
--primary-abi-only \
--skip-preconditions \
--module VtsAidlHalSensorsTargetTest
إجراء اختبارات الوحدة
اختبارات الوحدة في HalProxy_test.cpp
اختبار HalProxy
باستخدام وحدات HAL فرعية مزيّفة يتم
إنشاؤها في اختبار الوحدة ولا يتم تحميلها ديناميكيًا. عند إنشاء ملف HAL فرعي
جديد، يجب أن تكون هذه الاختبارات بمثابة دليل حول كيفية إضافة اختبارات وحدات تتحقق من تنفيذ ملف HAL الفرعي الجديد بشكل صحيح.
لإجراء الاختبارات، نفِّذ الأوامر التالية:
cd $ANDROID_BUILD_TOP/hardware/interfaces/sensors/common/default/2.X/multihal/tests
atest
إجراء الاختبارات باستخدام طبقات HAL الفرعية الزائفة
واجهات HAL الفرعية المزيّفة هي عمليات تنفيذ وهمية لواجهة ISensorsSubHal
.
تكشف درجات الحرارة الفرعية (HALs) عن قوائم مختلفة من المستشعرات. عندما يتم تشغيل المستشعرات،
يتم بشكل دوري نشر أحداث أجهزة الاستشعار التي يتم إنشاؤها تلقائيًا على HalProxy
بناءً على الفواصل الزمنية المحددة في طلب جهاز استشعار معين.
يمكن استخدام طبقات HALs الفرعية الزائفة لاختبار كيفية عمل رمز Multi-HAL الكامل مع هي نطاقات HALs الأخرى المحملة في النظام وللتركيز على الجوانب المختلفة رمز أجهزة استشعار Multi-HAL
يتوفّر خياران زائفان من HALs في
hardware/interfaces/sensors/common/default/2.X/multihal/tests/fake_subhal/
لإنشاء واجهات HAL الفرعية المزيّفة ودفعها إلى جهاز، اتّبِع الخطوات التالية:
شغِّل الأوامر التالية لإنشاء ملفّات HAL الفرعية المزيّفة الثلاثة ودفعها إلى الجهاز:
$ANDROID_BUILD_TOP/hardware/interfaces/sensors/common/default/2.X/multihal/tests/
mma
adb push \ $ANDROID_BUILD_TOP/out/target/product/<device>/symbols/vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config1.so \ /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config1.so
adb push \ $ANDROID_BUILD_TOP/out/target/product/<device>/symbols/vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config2.so \ /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config2.so
adb push \ $ANDROID_BUILD_TOP/out/target/product/<device>/symbols/vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config3.so \ /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config3.so
عدِّل إعدادات HAL الخاصة بأجهزة الاستشعار في
/vendor/etc/sensors/hals.conf
باستخدام مسارات HAL الفرعية المزيّفة./vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config1.so /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config2.so /vendor/lib64/android.hardware.sensors@2.X-fakesubhal-config3.so
أعِد تشغيل
HalProxy
وحمِّل حسابات HALs الفرعية الجديدة المدرَجة في الإعداد.adb shell stop
adb shell start
تصحيح الأخطاء
يمكن للمطوّرين تصحيح أخطاء إطار العمل باستخدام الأمر lshal
. لطلب
تصحيح الأخطاء في طبقة تجريد الأجهزة (HAL) لأجهزة الاستشعار، شغِّل الأمر التالي:
adb root
adb shell lshal debug android.hardware.sensors@2.1::ISensors/default
وعندئذٍ، يتم عرض معلومات عن حالة HalProxy
وحمّامات HAL الفرعية التابعة له.
إخراجه إلى الوحدة الطرفية. في ما يلي مثال على مخرجات الأمر
عنصر واحد (HalProxy
) ورموز HAL فرعية زائفة.
Internal values:
Threads are running: true
Wakelock timeout start time: 200 ms ago
Wakelock timeout reset time: 73208 ms ago
Wakelock ref count: 0
# of events on pending write queue: 0
# of non-dynamic sensors across all subhals: 8
# of dynamic sensors across all subhals: 0
SubHals (2):
Name: FakeSubHal-OnChange
Debug dump:
Available sensors:
Name: Ambient Temp Sensor
Min delay: 40000
Flags: 2
Name: Light Sensor
Min delay: 200000
Flags: 2
Name: Proximity Sensor
Min delay: 200000
Flags: 3
Name: Relative Humidity Sensor
Min delay: 40000
Flags: 2
Name: FakeSubHal-OnChange
Debug dump:
Available sensors:
Name: Ambient Temp Sensor
Min delay: 40000
Flags: 2
Name: Light Sensor
Min delay: 200000
Flags: 2
Name: Proximity Sensor
Min delay: 200000
Flags: 3
Name: Relative Humidity Sensor
Min delay: 40000
Flags: 2
إذا كان الرقم المحدّد لـ # of events on pending write queue
هو
رقم كبير (1000 أو أكثر)،
يشير ذلك إلى أنّ هناك العديد من الأحداث في انتظار كتابتها في إطار عمل
الأجهزة الاستشعارية. يشير هذا إلى أن خدمة أداة الاستشعار متوقفة مؤقتًا أو تعطّلت
لا تعالج أحداث أداة الاستشعار، أو أن مجموعة كبيرة من أحداث أجهزة الاستشعار
تم نشره مؤخرًا من قناة
HAL فرعية.
إذا كان عدد مراجع قفل التنشيط أكبر من 0
، يعني ذلك أنّ HalProxy
على قفل تنشيط. يجب ألا تكون هذه القيمة أكبر من 0
إلا إذا تم عمدًا تثبيت ScopedWakelock
أو إذا تم إرسال أحداث الاستيقاظ إلى HalProxy
ولم تتم
معالجتها من خلال إطار عمل الاستشعار.
يتم تمرير وصف الملف الذي تم تمريره إلى طريقة تصحيح الأخطاء في HalProxy
إلى كل
HAL فرعي، لذا على المطوّرين تنفيذ طريقة تصحيح الأخطاء كجزء من واجهة
ISensorsSubHal
.