حالت های گزارش

حسگرها می‌توانند رویدادها را به روش‌های متفاوتی به نام حالت‌های گزارش‌دهی ایجاد کنند. هر نوع حسگر دارای یک و تنها یک حالت گزارش دهی است. چهار حالت گزارش دهی وجود دارد.

مداوم

رویدادها با نرخ ثابتی که توسط پارامتر 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 های سخت افزاری ذخیره کرد. رویدادها باید به محض ایجاد گزارش شوند.

خاص

برای جزئیات مربوط به زمان ایجاد رویدادها، توضیحات نوع سنسور جداگانه را ببینید.