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