מצבי דיווח

חיישנים יכולים ליצור אירועים בדרכים שונות שנקראות מצבי דיווח; לכל סוג חיישן משויך מצב דיווח אחד בלבד. קיימים ארבעה מצבי דיווח.

רציף

האירועים נוצרים בקצב קבוע שמוגדר על ידי הפרמטר 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 של חומרה. צריך לדווח על האירועים ברגע שהם נוצרים.

מיוחד

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