सेंसर एआईडीएल एचएएल

सेंसर हार्डवेयर ऐब्स्ट्रैक्शन लेयर (एचएएल), Android सेंसर फ़्रेमवर्क और डिवाइस के सेंसर, जैसे कि एक्सलरोमीटर या जाइरोस्कोप. सेंसर एचएएल उन फ़ंक्शन के बारे में बताता है जिन्हें लागू किया जाना चाहिए इससे फ़्रेमवर्क को सेंसर कंट्रोल करने की अनुमति मिलती है.

सेंसर एआईडीएल एचएएल, Android 13 और Android 13 में उपलब्ध है यह सुविधा, नए और अपग्रेड किए गए डिवाइसों पर बेहतर तरीके से काम करती है. सेंसर एआईडीएल एचएएल, जो इस पर आधारित है सेंसर HAL 2.1, AIDL HAL इंटरफ़ेस और हेड ट्रैकर और सीमित ऐक्सिस वाले IMU सेंसर को बिना अनुमति के सार्वजनिक करता है.

एआईडीएल एचएएल इंटरफ़ेस

सेंसर एआईडीएल एचएएल के लिए दस्तावेज़ का मुख्य सोर्स, एचएएल के दायरे में आता है परिभाषा hardware/interfaces/sensors/aidl/android/hardware/sensors/ISensors.aidl.

सेंसर एआईडीएल एचएएल लागू करें

सेंसर एआईडीएल एचएएल को लागू करने के लिए, किसी ऑब्जेक्ट को ISensors का विस्तार करना होगा इंटरफ़ेस करें और यहां बताए गए सभी फ़ंक्शन को लागू करें hardware/इंटरफ़ेस/सेंसर/aidl/android/hardware/sensors/ISensors.aidl.

एचएएल को शुरू करना

सेंसर एचएएल को Android सेंसर फ़्रेमवर्क की मदद से शुरू किए जाने से पहले इस्तेमाल किया जा सकता है. फ़्रेमवर्क, तीन वैल्यू देने के लिए initialize() फ़ंक्शन को कॉल करता है सेंसर एचएएल के पैरामीटर: दो एफ़एमक्यू डिस्क्रिप्टर और एक पॉइंटर ISensorsCallback ऑब्जेक्ट.

एचएएल, सेंसर लिखने के लिए इस्तेमाल किया जाने वाला इवेंट एफ़एमक्यू बनाने के लिए पहले डिस्क्रिप्टर का इस्तेमाल करता है इवेंट फ़्रेमवर्क के लिए तैयार किए जाते हैं. वेक बनाने के लिए, HAL दूसरे डिस्क्रिप्टर का इस्तेमाल करता है जब एचएएल, WAKE_UP के लिए वेक लॉक रिलीज़ करता है, तो सिंक करने के लिए एफ़एमक्यू को लॉक करें सेंसर इवेंट. एचएएल को ISensorsCallback ऑब्जेक्ट में पॉइंटर सेव करना होगा, ताकि कि कोई भी ज़रूरी कॉलबैक फ़ंक्शन शुरू किया जा सके.

शुरू करते समय, initialize() फ़ंक्शन पहला फ़ंक्शन होना चाहिए सेंसर एचएएल.

उपलब्ध सेंसर दिखाएं

डिवाइस में मौजूद सभी स्टैटिक सेंसर की सूची पाने के लिए, getSensorsList() फ़ंक्शन का इस्तेमाल करना होगा. यह फ़ंक्शन हर सेंसर की जानकारी दिखाता है खास तौर पर हैंडल से पहचाना जाता है. किसी सेंसर का हैंडल नहीं बदलना चाहिए जब सेंसर एचएएल को होस्ट करने की प्रोसेस फिर से शुरू होती है. हैंडल बदल सकते हैं डिवाइस फिर से चालू होता है और सिस्टम सर्वर रीस्टार्ट होता है.

अगर कई सेंसर एक ही तरह के सेंसर और स्क्रीन चालू करने की प्रॉपर्टी को शेयर करते हैं, तो सूची में मौजूद पहले सेंसर को डिफ़ॉल्ट सेंसर कहा जाता है और getDefaultSensor(int sensorType, bool wakeUp) का इस्तेमाल करने वाले ऐप्लिकेशन फ़ंक्शन का इस्तेमाल करना होगा.

सेंसर की स्थिरता की सूची

अगर सेंसर एचएएल को रीस्टार्ट करने के बाद, getSensorsList() से डेटा वापस मिल जाता है, तो से पता चलता है कि सेंसर सूची में रीस्टार्ट हो जाता है, तो फ़्रेमवर्क Android रनटाइम. सेंसर सूची में हुए अहम बदलावों में ऐसे मामले शामिल हैं जिनमें दिए गए हैंडल वाला सेंसर मौजूद नहीं है, इसके एट्रिब्यूट में बदलाव किया गया है या जहां नया हैंडल मौजूद है कई सेंसर दिखाए गए हैं. हालांकि, Android रनटाइम को रीस्टार्ट करने से रुकावट पैदा होती है उपयोगकर्ता के लिए, यह ज़रूरी है, क्योंकि Android फ़्रेमवर्क अब Android API के साथ यह अनुबंध किया गया है कि स्टैटिक (नॉनडाइनैमिक) सेंसर कितने समय तक काम करता है. इसकी वजह से हो सकता है कि फ़्रेमवर्क फिर से स्थापित न हो पाए ऐप्लिकेशन की ओर से किए गए ऐक्टिव सेंसर के अनुरोध. इसलिए, एचएएल वेंडर को सलाह दी जाती है कि वे इससे सेंसर सूची में ऐसे बदलावों को रोका जा सकता है जिन्हें रोका नहीं जा सकता.

यह पक्का करने के लिए कि सेंसर अच्छे तरीके से हैंडल करें, एचएएल को दिए गए सेंसर को साफ़ तौर पर मैप करना चाहिए फ़िज़िकल सेंसर को डिवाइस के हैंडल में जोड़ें. हालांकि, कोई खास तरीका लागू नहीं किया गया है इसे सेंसर एचएएल इंटरफ़ेस के तहत बनाया गया है. इसलिए, डेवलपर के पास ऐसे कई विकल्प होते हैं इस ज़रूरी शर्त को पूरा करने के लिए उपलब्ध है.

उदाहरण के लिए, सेंसर सूची को हर सेंसर के कॉम्बिनेशन का इस्तेमाल करके क्रम से लगाया जा सकता है वेंडर, मॉडल, और सेंसर टाइप जैसे तय एट्रिब्यूट. दूसरा विकल्प निर्भर करता है यह पाया जाता है कि डिवाइस के स्टैटिक सेंसर का सेट हार्डवेयर में तय होता है, इसलिए एचएएल को यह जानने की ज़रूरत है कि सभी अनुमानित सेंसर ने शुरू करने से पहले getSensorsList() से वापसी होगी. इस सूची में अनुमानित सेंसर को एचएएल बाइनरी में कंपाइल किया जा सकता है या फिर फ़ाइल सिस्टम में कॉन्फ़िगरेशन फ़ाइल है और दिखने के क्रम का इस्तेमाल किया जा सकता है स्टेबल हैंडल कैसे बनाए जा सकते हैं. हालांकि, सबसे अच्छा समाधान आपके एचएएल के के लिए ऑप्ट-इन करते समय, कुछ चीज़ों की ज़रूरत होती है, लेकिन पहली शर्त यह है कि HAL रीस्टार्ट होने पर भी कोई बदलाव नहीं होता है.

सेंसर कॉन्फ़िगर करें

सेंसर को चालू करने से पहले, सेंसर को सैंपल के तौर पर कॉन्फ़िगर करना ज़रूरी है batch() फ़ंक्शन का इस्तेमाल करके पीरियड और ज़्यादा से ज़्यादा रिपोर्टिंग में लगने वाला समय.

सेंसर ऐसा होना चाहिए कि batch() का इस्तेमाल करके, सेंसर को जब चाहे फिर से कॉन्फ़िगर किया जा सके. इसके लिए ज़रूरी है कि सेंसर डेटा को नुकसान पहुंच सकता है.

सैंपलिंग की अवधि

नमूना लेने की अवधि का मतलब, सेंसर टाइप के आधार पर अलग-अलग होता है. यह अवधि कॉन्फ़िगर किया जा रहा है:

  • कंटिन्यूअस: सेंसर से जुड़ी गतिविधियां लगातार जनरेट होती हैं.
  • बदलाव होने पर: इवेंट, सैंपलिंग की अवधि से ज़्यादा तेज़ी से जनरेट नहीं होते. ऐसा हो सकता है कि अगर मेज़र की गई वैल्यू, सैंपलिंग अवधि से धीमी दर पर जनरेट होती है, तो नहीं बदलता.
  • वन-शॉट: सैंपलिंग की अवधि को अनदेखा कर दिया जाता है.
  • खास: ज़्यादा जानकारी के लिए, यह देखें सेंसर के टाइप.

सेंसर की सैंपलिंग अवधि और सेंसर के बीच के इंटरैक्शन के बारे में जानने के लिए रिपोर्टिंग मोड के बारे में ज़्यादा जानने के लिए, रिपोर्टिंग मोड देखें.

रिपोर्ट भेजने में लगने वाला ज़्यादा से ज़्यादा समय

रिपोर्टिंग में लगने वाला ज़्यादा से ज़्यादा समय, नैनोसेकंड में वह ज़्यादा से ज़्यादा समय सेट करता है इवेंट में देरी हो सकती है और उन्हें लिखे जाने से पहले हार्डवेयर FIFO में सेव किया जा सकता है SoC के चालू होने पर, इवेंट एफ़एमक्यू को HAL के ज़रिए रिकॉर्ड किया जा सकता है.

शून्य का मान यह बताता है कि इवेंट एफ़आईएफ़ओ को पूरी तरह से स्किप किया जा सकता है या एफ़आईएफ़ओ को तुरंत खाली किया जा सकता है सेंसर से एक इवेंट FIFO में मौजूद है.

उदाहरण के लिए, ऐसा एक्सलरोमीटर जिसे 50 हर्ट्ज़ पर ऐक्टिवेट किया जाता है और जिसकी रिपोर्टिंग की जा सकती है इंतज़ार का समय SoC के चालू होने पर, शून्य ट्रिगर हर सेकंड में 50 बार रुकावट डालते हैं.

जब रिपोर्टिंग में लगने वाला ज़्यादा से ज़्यादा समय शून्य से ज़्यादा होता है, तो सेंसर इवेंट ये काम नहीं करते उनकी पहचान होते ही उन्हें रिपोर्ट करना ज़रूरी होता है. इवेंट कुछ समय के लिए हो सकते हैं हार्डवेयर FIFO में सेव किया जाता है और बैच में रिपोर्ट किया जाता है, जब तक कि कोई इवेंट में देरी हो सकती है. इस तारीख से अब तक के सभी इवेंट पिछला बैच रिकॉर्ड किया जाता है और एक बार में वापस किया जाता है. इससे आपके चैनल पर मौजूद SoC को भेजी गई रुकावटें और SoC को कम पावर मोड पर स्विच करने की अनुमति देता है उस समय सेंसर डेटा को कैप्चर और बैच में भेज रहा होता है.

हर इवेंट के साथ एक टाइमस्टैंप जुड़ा होता है. विज्ञापन दिखने में देरी होने से जब इवेंट रिपोर्ट किया जाता है, तो इवेंट के टाइमस्टैंप पर इसका असर नहीं होना चाहिए. टाइमस्टैंप सटीक और उस समय के मुताबिक होना जब इवेंट असल में हुआ था. उसे रिपोर्ट किए जाने का समय.

सेंसर इवेंट की रिपोर्ट के लिए, अतिरिक्त जानकारी और ज़रूरी शर्तों के लिए: रिपोर्टिंग में लगने वाला समय शून्य नहीं है. बैच करने की सुविधा देखें.

सेंसर चालू करें

फ़्रेमवर्क, activate() फ़ंक्शन का इस्तेमाल करके सेंसर को चालू और बंद करता है. सेंसर को चालू करने से पहले, फ़्रेमवर्क को सेंसर कॉन्फ़िगर करना होगा batch() का इस्तेमाल करके.

सेंसर को बंद किए जाने के बाद, उससे होने वाले दूसरे सेंसर इवेंट को इवेंट FMQ पर लिखा होना चाहिए.

सेंसर फ़्लश करें

अगर किसी सेंसर को सेंसर डेटा के बैच के लिए कॉन्फ़िगर किया गया है, तो फ़्रेमवर्क ऐसा कर सकता है flush() पर कॉल करके, बैच में भेजे गए सेंसर इवेंट को तुरंत फ़्लश करें. इसकी वजह से चुने गए सेंसर हैंडल के लिए बैच में बनाए गए सेंसर इवेंट इवेंट FMQ पर लिखा गया. सेंसर एचएएल को एक फ़्लश पूरा इवेंट जोड़ना होगा कॉल के नतीजे के तौर पर लिखे गए सेंसर इवेंट के आखिर में मौजूद होती हैं flush().

फ़्लश एसिंक्रोनस रूप से होता है (यानी, यह फ़ंक्शन वापस लौटना चाहिए तुरंत). अगर इंप्लिमेंटेशन में कई सेंसर के लिए एक ही एफ़आईएफ़ओ का इस्तेमाल किया जाता है, तो एफ़आईएफ़ओ को फ़्लश किया गया और फ़्लश पूरा इवेंट सिर्फ़ बताए गए सेंसर के लिए जोड़ा जाता है.

अगर चुने गए सेंसर में FIFO (बफ़रिंग की सुविधा नहीं) नहीं है या FIFO ने कॉल के समय खाली होने के बावजूद, flush() को अब भी फ़्लश भेजना होगा उस सेंसर के लिए पूरी गतिविधि दिखाता है. यह एक शॉट को छोड़कर अन्य सभी सेंसर पर लागू होता है सेंसर.

अगर वन-शॉट सेंसर के लिए flush() को कॉल किया जाता है, तो flush() को वापस आना होगा BAD_VALUE और फ़्लश पूरा इवेंट जनरेट नहीं करते.

एफ़एमक्यू पर सेंसर इवेंट लिखो

Android में सेंसर इवेंट पुश करने के लिए, सेंसर एचएएल इवेंट एफ़एमक्यू का इस्तेमाल करता है सेंसर फ़्रेमवर्क का इस्तेमाल करें.

इवेंट FMQ, सिंक किया गया FMQ है. इसका मतलब है कि ज़्यादा लिखने की कोशिश करने पर FMQ के लिए उपलब्ध स्पेस से जुड़े इवेंट के लिए, नतीजे पाने की सुविधा 'पुष्टि नहीं हुई' के तौर पर दिखती है लिखना. ऐसे मामले में, HAL को यह तय करना चाहिए कि मौजूदा सेट को लिखना है या नहीं इवेंट के दो छोटे ग्रुप के तौर पर या सभी इवेंट लिखने के लिए ज़रूरत के मुताबिक जगह खाली होने पर, इसे एक साथ इस्तेमाल किया जा सकता है.

जब सेंसर एचएएल ने सेंसर के इवेंट की मनचाही संख्या इवेंट एफ़एमक्यू और सेंसर एचएएल को फ़्रेमवर्क को यह बताना होगा कि इवेंट इस तारीख तक तैयार हैं इवेंट FMQ के लिए EventQueueFlagBits::READ_AND_PROCESS बिट लिख रही हूँ EventFlag::wake फ़ंक्शन. इवेंट फ़्लैग को इवेंट एफ़एमक्यू से बनाया जा सकता है EventFlag::createEventFlag और इवेंट के एफ़एमक्यू के getEventFlagWord() का इस्तेमाल किया जा रहा है फ़ंक्शन का इस्तेमाल करना होगा.

सेंसर एआईडीएल एचएएल, इवेंट एफ़एमक्यू पर write और writeBlocking, दोनों के साथ काम करता है. डिफ़ॉल्ट तौर पर लागू होने वाले तरीके से, write के इस्तेमाल के लिए रेफ़रंस मिलता है. अगर writeBlocking फ़ंक्शन का इस्तेमाल किया गया है, readNotification फ़्लैग इस पर सेट होना चाहिए EventQueueFlagBits::EVENTS_READ, जिसे पढ़ने के दौरान फ़्रेमवर्क की मदद से सेट किया जाता है इवेंट एफ़एमक्यू के इवेंट. सूचना लिखें फ़्लैग को इस पर सेट किया जाना चाहिए EventQueueFlagBits::READ_AND_PROCESS, जो फ़्रेमवर्क को इवेंट के बारे में सूचना देता है के ईमेल पते, Event FMQ पर मौजूद हैं.

WAKE_UP इवेंट

WAKE_UP इवेंट ऐसे सेंसर इवेंट हैं जिनकी वजह से ऐप्लिकेशन प्रोसेसर (AP) जागें और तुरंत इवेंट को संभालें. जब WAKE_UP इवेंट लिखा जाता है इवेंट FMQ के लिए, सेंसर एचएएल को एक वेक लॉक लागू करना होगा, ताकि यह पक्का किया जा सके कि सिस्टम तब तक चालू रहता है, जब तक फ़्रेमवर्क इवेंट को मैनेज कर सकता है. मिलने पर WAKE_UP इवेंट के बाद, फ़्रेमवर्क अपने वेक लॉक को सुरक्षित करता है. सेंसर एचएएल को अपने वेक लॉक से हटाएं. सेंसर के एचएएल के होने पर सिंक करने के लिए अगर स्क्रीन चालू है, तो वेक लॉक एफ़एमक्यू का इस्तेमाल करें.

WAKE_UP की संख्या पता करने के लिए, सेंसर एचएएल को वेक लॉक एफ़एमक्यू को पढ़ना होगा जिन्हें फ़्रेमवर्क ने हैंडल किया है. एचएएल को सिर्फ़ अपना वेक लॉक हटाना चाहिए WAKE_UP इवेंट के लिए, अगर हैंडल नहीं किए गए WAKE_UP इवेंट की कुल संख्या शून्य है. सेंसर इवेंट को हैंडल करने के बाद, फ़्रेमवर्क उन इवेंट की संख्या की गिनती करता है जो को WAKE_UP इवेंट के तौर पर मार्क किया जाता है और इस नंबर को वापस वेक लॉक एफ़एमक्यू पर लिखा जाता है.

फ़्रेमवर्क, WakeLockQueueFlagBits::DATA_WRITTEN राइट सेट करता है जब भी वेक लॉक एफ़एमक्यू पर डेटा लिखा जाएगा, तो वेक लॉक एफ़एमक्यू पर सूचना दिखेगी.

डाइनैमिक सेंसर

डाइनैमिक सेंसर, ऐसे सेंसर होते हैं जो डिवाइस का हिस्सा नहीं होते, लेकिन इनका इस्तेमाल डिवाइस में इनपुट के तौर पर किया जाना चाहिए, जैसे कि एक्सलरोमीटर वाला गेमपैड.

जब गतिशील सेंसर कनेक्ट होता है, तो onDynamicSensorConnected ISensorsCallback को सेंसर एचएएल से कॉल करना ज़रूरी है. इससे यह सूचना मिलती है नए डाइनैमिक सेंसर का फ़्रेमवर्क तैयार करता है. इसकी मदद से, सेंसर को कंट्रोल किया जा सकता है सेंसर के इवेंट का इस्तेमाल और सेंसर के इवेंट देख सकें.

इसी तरह, जब कोई डाइनैमिक सेंसर डिसकनेक्ट होता है, तो ISensorsCallback में onDynamicSensorDisconnected फ़ंक्शन को ऐसा कॉल करना चाहिए कि फ़्रेमवर्क ऐसे किसी भी सेंसर को हटा सकता है जो अब उपलब्ध नहीं है.

डायरेक्ट चैनल

डायरेक्ट चैनल, कार्रवाई का वह तरीका है जहां सेंसर इवेंट लिखे जाते हैं Android सेंसर को बायपास करने के लिए, इवेंट FMQ के बजाय किसी खास मेमोरी का इस्तेमाल करती हैं फ़्रेमवर्क. डायरेक्ट चैनल रजिस्टर करने वाले क्लाइंट को सेंसर इवेंट पढ़ने होंगे सीधे चैनल बनाने के लिए इस्तेमाल की गई मेमोरी से फ़्रेमवर्क के ज़रिए सेंसर इवेंट की जानकारी पाएं. configDirectReport() सामान्य ऑपरेशन के लिए फ़ंक्शन batch() के जैसा होता है और डायरेक्ट को कॉन्फ़िगर करता है भी नहीं बताया गया है.

registerDirectChannel() और unregisterDirectChannel() फ़ंक्शन बनाते हैं या नए डायरेक्ट चैनल को बंद करने की गुंजाइश है.

ऑपरेशन मोड

setOperationMode() फ़ंक्शन, फ़्रेमवर्क को सेंसर कॉन्फ़िगर करने की अनुमति देता है ताकि फ़्रेमवर्क सेंसर डेटा को सेंसर में इंजेक्ट कर सके. यह इनके लिए काम का है टेस्टिंग के लिए इस्तेमाल किया जा सकता है, खास तौर पर उन एल्गोरिदम के लिए जो फ़्रेमवर्क के नीचे मौजूद होते हैं.

आम तौर पर, injectSensorData() फ़ंक्शन का इस्तेमाल ऑपरेशन को आगे बढ़ाने के लिए किया जाता है सेंसर एचएएल में पैरामीटर जोड़ें. फ़ंक्शन का इस्तेमाल सेंसर इंजेक्ट करने के लिए भी किया जा सकता है गतिविधियों को किसी ख़ास सेंसर में रिकॉर्ड कर सकते हैं.

पुष्टि करें

सेंसर एचएएल को लागू करने की पुष्टि करने के लिए, सेंसर के सीटीएस और वीटीएस चलाएं टेस्ट.

सीटीएस टेस्ट

सेंसर सीटीएस जांच, ऑटोमेटेड सीटीएस जांच और मैन्युअल सीटीएस वेरिफ़ायर, दोनों में मौजूद होती हैं है.

ऑटोमेटेड टेस्ट इन देशों/इलाकों में मौजूद हैं cts/tests/sensor/src/android/hardware/cts. इन जांचों से, सेंसर के स्टैंडर्ड फ़ंक्शन की पुष्टि की जा सकती है. जैसे- सेंसर को चालू करना सेंसर, बैचिंग, और सेंसर इवेंट रेट.

CTS Verifier टेस्ट यहां मौजूद हैं cts/apps/CtsVerifier/src/com/android/cts/verifier/sensors. इन परीक्षणों के लिए परीक्षण ऑपरेटर से मैन्युअल इनपुट की ज़रूरत होती है और यह पक्का करना होता है कि सेंसर रिपोर्ट में दी गई जानकारी सही होती है.

सीटीएस टेस्ट पास करना ज़रूरी है, ताकि यह पक्का किया जा सके कि टेस्ट किया जा रहा डिवाइस, सभी सीडीडी की ज़रूरी शर्तें पूरी करता है.

वीटीएस टेस्ट

सेंसर एआईडीएल एचएएल के लिए वीटीएस टेस्ट यहां दिए गए हैं हार्डवेयर/इंटरफ़ेस/सेंसर/aidl/vts/. इन टेस्ट से यह पक्का होता है कि सेंसर एचएएल को सही तरीके से लागू किया गया है और सभी ISensors.aidl और ISensorsCallback.aidl में दी गई शर्तें सही तरीके से पूरी हुईं.

एचएएल को शुरू करना

एफ़एमक्यू सेट करने के लिए, initialize() फ़ंक्शन का इस्तेमाल होना चाहिए: फ़्रेमवर्क और HAL शामिल हैं.

उपलब्ध सेंसर दिखाएं

सेंसर AIDL HAL में, getSensorsList() फ़ंक्शन को वही वैल्यू देनी होगी चालू होने के दौरान भी डिवाइस को चालू किया जाता है. ऐसा तब भी होता है, जब सेंसर एचएएल रीस्टार्ट हो जाते हैं. एक नई ज़रूरी शर्त का getSensorsList() फ़ंक्शन है कि यह एक डिवाइस बूट होता है, तब भी जब सेंसर एचएएल रीस्टार्ट हो जाता है. इसकी मदद से, अगर सिस्टम के सर्वर पर, सेंसर कनेक्शन फिर से करने की कोशिश की जाती है, रीस्टार्ट हो जाता है. getSensorsList() से मिलने वाली वैल्यू, डिवाइस के बाद बदल सकती है फिर से चालू करता है.

एफ़एमक्यू पर सेंसर इवेंट लिखो

poll() पर कॉल आने का इंतज़ार करने के बजाय, सेंसर एआईडीएल एचएएल में सेंसर्स को जब भी सेंसर इवेंट हो, तो एचएएल को इवेंट एफ़एमक्यू पर सेंसर के इवेंट अपने-आप लिखने होंगे उपलब्ध हैं. एचएएल की यह ज़िम्मेदारी भी होती है कि वह फ़्रेमवर्क के अंदर FMQ को पढ़ने के लिए, EventFlag.

WAKE_UP इवेंट

सेंसर एचएएल 1.0 में, एचएएल किसी भी WAKE_UP के लिए अपना वेक लॉक हटा सका WAKE_UP के पोस्ट किए जाने के बाद, poll() पर किए जाने वाले किसी भी अगले कॉल पर इवेंट poll() क्योंकि इससे पता चलता है कि फ़्रेमवर्क ने सभी सेंसर को प्रोसेस कर दिया है इवेंट और ज़रूरत के हिसाब से वेक लॉक हासिल कर लिया था. क्योंकि, सेंसर एआईडीएल में एचएएल, जब फ़्रेमवर्क से इवेंट प्रोसेस होते हैं, तो एचएएल को अब सूचना नहीं मिलती FMQ को लिखा गया, तो वेक लॉक एफ़एमक्यू, फ़्रेमवर्क को एचएएल को जब इसने WAKE_UP इवेंट को हैंडल किया है.

सेंसर एआईडीएल एचएएल में, WAKE_UP के लिए सेंसर एचएएल से सुरक्षित किया गया वेक लॉक इवेंट SensorsHAL_WAKEUP से शुरू होने चाहिए.

डाइनैमिक सेंसर

सेंसर HAL 1.0 में poll() फ़ंक्शन का इस्तेमाल करके, डाइनैमिक सेंसर दिखाए गए. सेंसर एआईडीएल एचएएल के लिए यह ज़रूरी है कि onDynamicSensorsConnected और जब भी डायनैमिक हो, ISensorsCallback में onDynamicSensorsDisconnected कॉल किया जाएगा सेंसर के कनेक्शन बदल गए हों. ये कॉलबैक इसके भाग के तौर पर उपलब्ध होते हैं: ISensorsCallback पॉइंटर जो initialize() फ़ंक्शन के ज़रिए दिया जाता है.

ऑपरेशन मोड

WAKE_UP सेंसर के लिए DATA_INJECTION मोड काम करना चाहिए.

मल्टी-एचएएल सपोर्ट

सेंसर एआईडीएल एचएएल, मल्टी-एचएएल का इस्तेमाल करके सेंसर मल्टी-एचएएल फ़्रेमवर्क. इसके लिए लागू करने की जानकारी, देखें सेंसर के HAL 2.1 से पोर्ट करना.