حالات قوة SoC
حالات طاقة النظام على شريحة (SoC) هي: on، idle، و Suspend. “On” عندما يكون SoC قيد التشغيل. "الخمول" هو وضع طاقة متوسط حيث يتم تشغيل SoC ولكنه لا يؤدي أي مهام. "تعليق" هو وضع طاقة منخفضة حيث لا يتم تشغيل SoC. عادة ما يكون استهلاك الطاقة للجهاز في هذا الوضع أقل 100 مرة من الوضع "On".
مجسات عدم الاستيقاظ
مستشعرات عدم الاستيقاظ هي مستشعرات لا تمنع شركة نفط الجنوب من الدخول في وضع الإيقاف المؤقت ولا تنبه شركة نفط الجنوب للإبلاغ عن البيانات. على وجه الخصوص ، لا يُسمح للسائقين بحمل أقفال التنبيه. تقع على عاتق التطبيقات مسؤولية الاحتفاظ بقفل التنبيه الجزئي إذا رغبوا في تلقي أحداث من مستشعرات عدم الاستيقاظ أثناء إيقاف تشغيل الشاشة. أثناء وجود SoC في وضع التوقف المرحلي ، يجب أن تستمر المستشعرات في العمل وإنشاء الأحداث ، والتي يتم وضعها في FIFO للأجهزة. (راجع التجميع لمزيد من التفاصيل.) يتم تسليم الأحداث الواردة في FIFO إلى التطبيقات عندما تستيقظ SoC. إذا كان ما يرد أولاً يصرف أولاً (FIFO) صغيرًا جدًا بحيث لا يمكن تخزين كافة الأحداث ، فسيتم فقد الأحداث الأقدم ؛ يتم إسقاط أقدم البيانات لاستيعاب أحدث البيانات. في الحالة القصوى حيث يكون FIFO غير موجود ، يتم فقد جميع الأحداث التي تم إنشاؤها أثناء وجود SoC في وضع التوقف المرحلي. استثناء واحد هو الحدث الأخير من كل مستشعر عند التغيير: يجب حفظ الحدث الأخير خارج FIFO حتى لا يضيع.
بمجرد خروج SoC من وضع التعليق ، يتم الإبلاغ عن جميع الأحداث من FIFO وتستأنف العمليات كالمعتاد.
يجب أن تحمل التطبيقات التي تستخدم مستشعرات غير مستيقظة قفل التنبيه لضمان عدم توقف النظام عن التعليق أو إلغاء التسجيل من المستشعرات عندما لا يحتاجون إليها أو توقع فقدان الأحداث أثناء وضع SoC في وضع الإيقاف المرحلي.
أجهزة استشعار للاستيقاظ
على عكس المستشعرات غير المستيقظة ، تضمن مستشعرات الاستيقاظ تسليم بياناتها بشكل مستقل عن حالة SoC. عندما يكون SoC مستيقظًا ، تتصرف مستشعرات الاستيقاظ مثل مستشعرات عدم الاستيقاظ. عندما تكون شركة نفط الجنوب نائمة ، يجب أن تستيقظ مستشعرات الاستيقاظ في شركة نفط الجنوب لتقديم الأحداث. لا يزال يتعين عليهم السماح لـ SoC بالانتقال إلى وضع التعليق ، ولكن يجب أيضًا إيقاظه عند الحاجة إلى الإبلاغ عن حدث. بمعنى ، يجب أن يقوم المستشعر بتنبيه SoC وتسليم الأحداث قبل انقضاء الحد الأقصى من زمن انتقال التقارير أو امتلاء الجهاز FIFO. انظر التجميع لمزيد من التفاصيل.
لضمان إتاحة الوقت للتطبيقات لاستقبال الحدث قبل عودة SoC إلى وضع السكون ، يجب على السائق الاحتفاظ بـ "قفل تنبيه المهلة" لمدة 200 مللي ثانية في كل مرة يتم فيها الإبلاغ عن حدث. أي أنه لا ينبغي السماح لـ SoC بالعودة للنوم في غضون 200 مللي ثانية بعد انقطاع الاستيقاظ. سيختفي هذا المطلب في إصدار Android في المستقبل ، ونحتاج إلى قفل التنبيه المؤقت هذا حتى ذلك الحين.
كيف تحدد مستشعرات الاستيقاظ وعدم الاستيقاظ؟
حتى KitKat ، سواء كان المستشعر عبارة عن مستشعر تنبيه أو مستشعر غير مستيقظ ، تم تحديده بواسطة نوع المستشعر: معظمها كان مستشعرات غير مستيقظة ، باستثناء مستشعر القرب وكاشف الحركة المهم .
بدءًا من L ، يتم تحديد ما إذا كان المستشعر المعين هو مستشعر تنبيه أم لا بواسطة علامة في تعريف المستشعر. يمكن تعريف معظم المستشعرات من خلال أزواج من متغيرات الاستيقاظ وعدم الاستيقاظ لنفس المستشعر ، وفي هذه الحالة يجب أن يتصرفوا كجهازي استشعار مستقلين ، لا يتفاعلان مع بعضهما البعض. انظر التفاعل لمزيد من التفاصيل.
ما لم يتم تحديد خلاف ذلك في تعريف نوع المستشعر ، يوصى بتنفيذ مستشعر تنبيه واحد ومستشعر عدم تنبيه واحد لكل نوع مستشعر مدرج في أنواع المستشعرات . في كل تعريف لنوع المستشعر ، انظر إلى المستشعر (التنبيه أو عدم التنبيه) الذي سيتم إرجاعه بواسطة SensorManager.getDefaultSensor(sensorType)
. إنه المستشعر الذي ستستخدمه معظم التطبيقات.