חיישנים יכולים ליצור אירועים בדרכים שונות שנקראות מצבי דיווח; לכל סוג חיישן משויך מצב דיווח אחד בלבד. קיימים ארבעה מצבי דיווח.
רציף
האירועים נוצרים בקצב קבוע שמוגדר על ידי הפרמטר sampling_period_ns
שמועבר לפונקציה batch
. דוגמאות לחיישנים
שמשתמשים במצב דיווח רציף הם
מדי תאוצה
וג'ירוסקופים.
בעת ביצוע שינוי
אירועים נוצרים רק אם הערכים שנמדדו השתנו.
הפעלת החיישן ברמת 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 של חומרה. צריך לדווח על האירועים
ברגע שהם נוצרים.
מיוחד
לפרטים על מועד יצירת האירועים, אפשר לעיין בתיאורים של כל סוג חיישן.