חיישנים יכולים ליצור אירועים בדרכים שונות שנקראות מצבי דיווח; לכל סוג חיישן משויך מצב דיווח אחד בלבד. קיימים ארבעה מצבי דיווח.
Continuous
האירועים נוצרים בקצב קבוע שמוגדר על ידי הפרמטר sampling_period_ns שמועבר לפונקציה batch. דוגמאות לחיישנים
שמשתמשים במצב דיווח רציף הם
מדי תאוצה
וג'ירוסקופים.
On-change
אירועים נוצרים רק אם הערכים שנמדדו השתנו.
הפעלת החיישן ברמת HAL (קריאה ל-activate(..., enable=1)) מפעילה גם אירוע, כלומר HAL חייב להחזיר אירוע באופן מיידי כשחיישן on-change מופעל. דוגמאות לחיישנים שמשתמשים במצב דיווח על שינוי הם חיישן לספירת צעדים, חיישן קרבה וחיישן דופק.
הפרמטר sampling_period_ns שמועבר לפונקציה batch משמש להגדרת הזמן המינימלי בין אירועים עוקבים. כלומר, אירוע לא ייווצר עד שיחלפו sampling_period_ns ננו-שניות מאז האירוע האחרון, גם אם הערך השתנה מאז. אם הערך השתנה,
צריך ליצור אירוע ברגע שחלפו sampling_period_ns מאז האירוע האחרון.
לדוגמה, נניח:
- אנחנו מפעילים את מונה הצעדים עם
sampling_period_ns = 10 * 10^9(10 שניות). - אנחנו הולכים במשך 55 שניות, ואז עומדים במקום במשך דקה.
- האירועים נוצרים בערך כל 10 שניות במהלך הדקה הראשונה (כולל בזמן
t=0בגלל ההפעלה של החיישן, ובזמןt=60שניות), בסך הכול שבעה אירועים. לא נוצר אירוע בדקה השנייה כי הערך של מספר הצעדים לא השתנה אחריt=60שניות.
One-shot
כשחיישן מזהה אירוע, הוא משבית את עצמו ואז שולח אירוע יחיד דרך HAL. כדי למנוע מרוץ תהליכים, חשוב להקפיד על סדר הפעולות. (חובה להשבית את החיישן לפני שמדווחים על האירוע דרך HAL). לא נשלח אירוע אחר עד שהחיישן מופעל מחדש. חיישן לזיהוי תנועה ניכרת הוא דוגמה לחיישן מסוג כזה.
חיישנים חד-פעמיים נקראים לפעמים חיישני טריגר.
המערכת מתעלמת מהפרמטרים sampling_period_ns ו-max_report_latency_ns
שמועברים לפונקציה batch. אירועים
מאירועים חד-פעמיים לא יכולים להישמר בתורי FIFO של חומרה. צריך לדווח על האירועים
ברגע שהם נוצרים.
מיוחד
לפרטים על מועד יצירת האירועים, אפשר לעיין בתיאורים של כל סוג חיישן בנפרד.