حسگرها میتوانند رویدادها را به روشهای مختلفی به نام حالتهای گزارش تولید کنند. هر نوع حسگر دارای یک و تنها یک حالت گزارش دهی است. چهار حالت گزارش دهی وجود دارد.
مستمر
رویدادها با نرخ ثابتی که توسط پارامتر 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 ثانیه) فعال می کنیم. - ۵۵ ثانیه راه می رویم، سپس یک دقیقه بی حرکت می ایستیم.
- رویدادها تقریباً هر 10 ثانیه در طول دقیقه اول (شامل زمان
t=0
به دلیل فعال شدن سنسور وt=60
ثانیه)، در مجموع هفت رویداد ایجاد میشوند. هیچ رویدادی در دقیقه دوم ایجاد نمیشود زیرا مقدار تعداد گامها بعد ازt=60
ثانیه تغییر نکرده است.
تک شات
به محض تشخیص یک رویداد، سنسور خود را غیرفعال می کند و سپس یک رویداد واحد را از طریق HAL ارسال می کند. برای اجتناب از شرایط مسابقه، سفارش مهم است. (قبل از گزارش رویداد از طریق HAL، سنسور باید غیرفعال شود). تا زمانی که حسگر دوباره فعال نشود رویداد دیگری ارسال نمی شود. حرکت قابل توجه نمونه ای از این نوع حسگرها است.
سنسورهای تک شات گاهی اوقات به عنوان سنسورهای ماشه شناخته می شوند.
پارامترهای sampling_period_ns
و max_report_latency_ns
که به تابع batch
منتقل می شوند نادیده گرفته می شوند. رویدادهای رویدادهای تک شات را نمی توان در FIFO های سخت افزاری ذخیره کرد. رویدادها باید به محض ایجاد گزارش شوند.
ویژه
برای جزئیات مربوط به زمان ایجاد رویدادها، توضیحات نوع سنسور جداگانه را ببینید.