מצבי דיווח

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

רציף

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

מיוחד

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