מצבי דיווח

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

רציף

אירועים נוצרים בקצב קבוע המוגדר על ידי sampling_period_ns הפרמטר מועבר לפונקציה batch. חיישנים לדוגמה באמצעות מצב הדיווח הרציף מדי תאוצה וג'ירוסקופים.

בביצוע שינוי

האירועים נוצרים רק אם הערכים שנמדדים השתנו. הפעלת החיישן ברמת ה-HAL (קריאה ל-activate(..., enable=1) עליו) מפעילה גם אירוע, כלומר ה-HAL חייב להחזיר אירוע באופן מיידי כשחיישן שמופעל בזמן שינוי מופעל. חיישנים לדוגמה שמשתמשים במצב דיווח בזמן שינוי מונה צעדים, קרבה וחיישן דופק.

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

מיוחד

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