חיישנים יכולים ליצור אירועים בדרכים שונות הנקראות מצבי דיווח; לכל סוג חיישן יש מצב דיווח אחד ויחיד המשויך אליו. קיימים ארבעה מצבי דיווח.
רָצִיף
אירועים נוצרים בקצב קבוע המוגדר על ידי הפרמטר sampling_period_ns
המועבר לפונקציית batch
. חיישנים לדוגמה המשתמשים במצב דיווח רציף הם מדי תאוצה וג'ירוסקופים .
בשינוי
אירועים נוצרים רק אם הערכים הנמדדים השתנו. הפעלת החיישן ברמת ה-HAL (קוראת activate(..., enable=1)
בו) מפעילה גם אירוע, כלומר ה-HAL חייב להחזיר אירוע מיד כאשר חיישן ב-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
שניות.
ירייה אחת
לאחר זיהוי אירוע, החיישן מבטל את עצמו ולאחר מכן שולח אירוע בודד דרך ה-HAL. סדר עניינים כדי להימנע מתנאי מירוץ. (יש לבטל את החיישן לפני שהאירוע מדווח דרך ה-HAL). שום אירוע אחר לא נשלח עד שהחיישן יופעל מחדש. תנועה משמעותית היא דוגמה לחיישן מסוג זה.
חיישני צילום אחד מכונים לפעמים חיישני טריגר.
מתעלמים מהפרמטרים sampling_period_ns
ו- max_report_latency_ns
שהועברו לפונקציית batch
. לא ניתן לאחסן אירועים מאירועים חד-פעמיים ב-FIFO של חומרה; יש לדווח על האירועים ברגע שהם נוצרים.
מיוחד
ראה את תיאורי סוגי החיישנים הבודדים לפרטים על מועד הפקת האירועים.