מצבי דיווח

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

רציף

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

מיוחד

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