מצב השעיה

מצבי כוח של SoC

מצבי ההספק של המערכת בשבב (SoC) הם: פועלים, סרק ומושעה. "פועל" הוא כאשר SoC פועל. "סרק" הוא מצב הספק בינוני שבו ה- SoC מופעל אך אינו מבצע שום משימות. "השעה" הוא מצב בעל צריכת חשמל נמוכה כאשר ה- SoC אינו מופעל. צריכת החשמל של המכשיר במצב זה היא בדרך כלל פי 100 פחות מאשר במצב "פועל".

חיישנים ללא התעוררות

חיישנים ללא התעוררות הם חיישנים שאינם מונעים מה- SoC לעבור למצב השעיה ואינם מעירים את ה- SoC כדי לדווח על נתונים. בפרט, הנהגים אינם רשאים להחזיק נעילת התעוררות. באחריות היישומים לשמור על נעילת התעוררות חלקית במידה והם מעוניינים לקבל אירועים מחיישנים שאינם מתעוררים בזמן שהמסך כבוי. בזמן שה- SoC נמצא במצב השעיה, חיישנים חייבים להמשיך לתפקד וליצור אירועים שמועברים ב- FIFO חומרה. (ראה פרסום אצווה לפרטים נוספים.) האירועים ב- FIFO מועברים ליישומים כאשר SoC מתעורר. אם ה- FIFO קטן מכדי לאחסן את כל האירועים, האירועים הישנים אבדו; הנתונים העתיקים ביותר מושמטים כדי להתאים את הנתונים העדכניים ביותר. במקרה הקיצוני שבו ה- FIFO אינו קיים, כל האירועים שנוצרו בזמן שה- SoC נמצא במצב השעיה אבדו. יוצא מן הכלל אחד הוא האירוע האחרון מכל חיישן בשינוי:יש לשמור את האירוע האחרון מחוץ ל- FIFO כדי שלא ניתן לאבד אותו.

ברגע שה- SoC יוצא ממצב ההשעיה, כל האירועים מ- FIFO מדווחים והפעולות חוזרות כרגיל.

יישומים המשתמשים בחיישנים שאינם מתעוררים צריכים להחזיק נעילת התעוררות כדי להבטיח שהמערכת לא הולכת להשעה, לבטל את הרישום מהחיישנים כאשר הם אינם זקוקים להם, או לצפות לאבד אירועים בזמן שה- SoC נמצא במצב השעיה.

חיישני התעוררות

בניגוד לחיישנים שאינם מתעוררים, חיישני השכמה מבטיחים כי הנתונים שלהם מועברים ללא תלות במצב ה- SoC. בזמן שה- SoC ער, חיישני ההשכמה מתנהגים כמו חיישנים שאינם מתעוררים. כאשר SoC ישן, חיישני התעוררות חייבים להעיר את SoC כדי להעביר אירועים. הם עדיין חייבים לתת ל- SoC לעבור למצב השעיה, אך עליהם גם להעיר אותו כאשר יש לדווח על אירוע. כלומר, על החיישן להעיר את SoC ולהעביר את האירועים לפני שחביון הדיווח המקסימלי חלף או ש- FIFO החומרה תתמלא. לפרטים נוספים, ראה אצווה .

כדי להבטיח שליישומים יהיה זמן לקבל את האירוע לפני שה- SoC יחזור לישון, על הנהג להחזיק "נעילת התעוררות פסק זמן" למשך 200 אלפיות השנייה בכל פעם שמדווחים על אירוע. כלומר, אסור לאפשר ל- SoC לחזור לישון ב -200 אלפיות השנייה לאחר הפרעת התעוררות. דרישה זו תיעלם במהדורה עתידית של אנדרואיד, ואנחנו זקוקים לנעילת התעוררות זמן קצובה עד אז.

איך מגדירים חיישני התעוררות ולא התעוררות?

עד KitKat, בין אם חיישן היה התעוררות ובין אם חיישן לא התעוררות הוכתב על ידי סוג החיישן: רובם היו חיישנים ללא התעוררות, למעט חיישן הקרבה וגלאי התנועה המשמעותי .

החל מ- L, בין אם חיישן נתון הוא חיישן התעוררות ובין אם לאו מוגדר על ידי דגל בהגדרת החיישן. ניתן להגדיר את מרבית החיישנים על ידי זוגות וריאציות התעוררות ולא התעוררות של אותו חיישן, ובמקרה זה עליהם להתנהג כשני חיישנים עצמאיים, שאינם מתקשרים זה עם זה. ראה אינטראקציה לפרטים נוספים.

אלא אם כן צוין אחרת בהגדרת סוג החיישן, מומלץ להטמיע חיישן התעוררות אחד וחיישן אחד ללא התעוררות לכל סוג חיישן המופיע בסוגי חיישנים . בכל הגדרת סוג חיישן, ראה איזה חיישן (התעוררות או לא התעוררות) יוחזר על ידי SensorManager.getDefaultSensor(sensorType) . זה החיישן שרוב היישומים ישתמשו בו.