एसओसी पावर स्टेट्स
चिप (SoC) पर सिस्टम की पावर स्थितियाँ हैं: चालू, निष्क्रिय और निलंबित। "चालू" तब होता है जब SoC चल रहा होता है। "आइडल" एक मध्यम पावर मोड है जहां SoC संचालित होता है लेकिन कोई कार्य नहीं करता है। "सस्पेंड" एक कम-शक्ति वाला मोड है जहां SoC संचालित नहीं होता है। इस मोड में डिवाइस की बिजली खपत आमतौर पर "ऑन" मोड की तुलना में 100 गुना कम होती है।
नॉन-वेक-अप सेंसर
नॉन-वेक-अप सेंसर वे सेंसर होते हैं जो SoC को सस्पेंड मोड में जाने से नहीं रोकते हैं और डेटा रिपोर्ट करने के लिए SoC को जगाते नहीं हैं। विशेष रूप से, ड्राइवरों को वेक-लॉक रखने की अनुमति नहीं है। यदि स्क्रीन बंद होने पर वे नॉन-वेक-अप सेंसर से ईवेंट प्राप्त करना चाहते हैं तो आंशिक वेक लॉक रखना अनुप्रयोगों की ज़िम्मेदारी है। जबकि SoC सस्पेंड मोड में है, सेंसर को कार्य करना जारी रखना चाहिए और इवेंट उत्पन्न करना चाहिए, जिन्हें हार्डवेयर FIFO में डाल दिया जाता है। (अधिक जानकारी के लिए बैचिंग देखें।) SoC के सक्रिय होने पर FIFO में ईवेंट एप्लिकेशन को वितरित किए जाते हैं। यदि फीफो सभी घटनाओं को संग्रहीत करने के लिए बहुत छोटा है, तो पुरानी घटनाएं खो जाती हैं; नवीनतम डेटा को समायोजित करने के लिए सबसे पुराना डेटा हटा दिया जाता है। चरम स्थिति में जहां FIFO अस्तित्वहीन है, SoC के निलंबित मोड में होने पर उत्पन्न सभी घटनाएं खो जाती हैं। एक अपवाद प्रत्येक ऑन-चेंज सेंसर से नवीनतम घटना है: अंतिम घटना को फीफो के बाहर सहेजा जाना चाहिए ताकि इसे खोया न जा सके।
जैसे ही SoC सस्पेंड मोड से बाहर हो जाता है, FIFO से सभी घटनाओं की सूचना दी जाती है और संचालन सामान्य रूप से फिर से शुरू हो जाता है।
नॉन-वेक-अप सेंसर का उपयोग करने वाले अनुप्रयोगों को या तो वेक लॉक रखना चाहिए ताकि यह सुनिश्चित किया जा सके कि सिस्टम सस्पेंड न हो जाए, सेंसर से अपंजीकृत न हो जाए जब उन्हें उनकी आवश्यकता न हो, या SoC सस्पेंड मोड में होने पर इवेंट खोने की उम्मीद न हो।
वेक-अप सेंसर
नॉन-वेक-अप सेंसर के विपरीत, वेक-अप सेंसर यह सुनिश्चित करते हैं कि उनका डेटा एसओसी की स्थिति से स्वतंत्र रूप से वितरित किया जाता है। जब SoC सक्रिय होता है, तो वेक-अप सेंसर नॉन-वेक-अप-सेंसर की तरह व्यवहार करते हैं। जब SoC निष्क्रिय होता है, तो इवेंट देने के लिए वेक-अप सेंसर को SoC को जगाना होगा। उन्हें अभी भी SoC को सस्पेंड मोड में जाने देना चाहिए, लेकिन जब किसी घटना की रिपोर्ट करने की आवश्यकता हो तो उसे जगाना भी चाहिए। अर्थात्, अधिकतम रिपोर्टिंग विलंबता समाप्त होने या हार्डवेयर FIFO पूर्ण होने से पहले सेंसर को SoC को जगाना होगा और ईवेंट वितरित करना होगा। अधिक विवरण के लिए बैचिंग देखें।
यह सुनिश्चित करने के लिए कि एसओसी के वापस सोने से पहले एप्लिकेशन के पास ईवेंट प्राप्त करने का समय हो, ड्राइवर को हर बार किसी ईवेंट की रिपोर्ट करते समय 200 मिलीसेकंड के लिए "टाइमआउट वेक लॉक" रखना होगा। अर्थात्, SoC को जागने में रुकावट के बाद 200 मिलीसेकंड में वापस सो जाने की अनुमति नहीं दी जानी चाहिए। यह आवश्यकता भविष्य के एंड्रॉइड रिलीज़ में गायब हो जाएगी, और तब तक हमें इस टाइमआउट वेक लॉक की आवश्यकता है।
वेक-अप और नॉन-वेक-अप सेंसर को कैसे परिभाषित करें?
किटकैट तक, सेंसर एक वेक-अप या नॉन-वेक-अप सेंसर था, यह सेंसर के प्रकार से तय होता था: निकटता सेंसर और महत्वपूर्ण मोशन डिटेक्टर के अपवाद के साथ, अधिकांश गैर-वेक-अप सेंसर थे।
एल से प्रारंभ करके, दिया गया सेंसर वेक-अप सेंसर है या नहीं, यह सेंसर परिभाषा में एक ध्वज द्वारा निर्दिष्ट किया जाता है। अधिकांश सेंसर को एक ही सेंसर के वेक-अप और नॉन-वेक-अप वेरिएंट के जोड़े द्वारा परिभाषित किया जा सकता है, इस स्थिति में उन्हें दो स्वतंत्र सेंसर के रूप में व्यवहार करना चाहिए, एक दूसरे के साथ बातचीत नहीं करनी चाहिए। अधिक विवरण के लिए इंटरेक्शन देखें।
जब तक सेंसर प्रकार की परिभाषा में अन्यथा निर्दिष्ट न किया जाए, सेंसर प्रकारों में सूचीबद्ध प्रत्येक सेंसर प्रकार के लिए एक वेक-अप सेंसर और एक नॉन-वेक-अप सेंसर लागू करने की अनुशंसा की जाती है। प्रत्येक सेंसर प्रकार की परिभाषा में, देखें कि SensorManager.getDefaultSensor(sensorType)
द्वारा कौन सा सेंसर (वेक-अप या नॉन-वेक-अप) लौटाया जाएगा। यह वह सेंसर है जिसका उपयोग अधिकांश एप्लिकेशन करेंगे।