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

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

پیوسته

رویدادها با نرخ ثابتی که توسط 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 (۱۰ ثانیه) فعال می‌کنیم.
  • ‫۵۵ ثانیه راه می‌رویم، سپس یک دقیقه بی‌حرکت می‌ایستیم.
  • رویدادها تقریباً هر ۱۰ ثانیه در طول یک دقیقه اول تولید می‌شوند (ازجمله در زمان t=0 به‌دلیل فعال شدن حسگر، و t=60 ثانیه)، درمجموع هفت رویداد. رویدادی در دقیقه دوم تولید نمی‌شود زیرا مقدار تعداد گام‌ها پس‌از t=60 ثانیه تغییر نکرده است.

یک‌ضرب

پس‌از تشخیص رویداد، حسگر خود را غیرفعال می‌کند و سپس رویداد واحدی را ازطریق HAL ارسال می‌کند. ترتیب برای جلوگیری از شرایط مسابقه مهم است. (حسگر باید قبل‌از گزارش رویداد ازطریق HAL غیرفعال شود). تا زمانی که حسگر دوباره فعال نشود، هیچ رویداد دیگری ارسال نمی‌شود. حرکت قابل‌توجه نمونه‌ای از این نوع حسگر است.

حسگرهای یک‌باره گاهی به‌عنوان حسگرهای محرک شناخته می‌شوند.

پارامترهای sampling_period_ns و max_report_latency_ns ارسال‌شده به تابع batch نادیده گرفته می‌شوند. رویدادهای رویدادهای تک‌ضرب نمی‌توانند در FIFO سخت‌افزاری ذخیره شوند؛ رویدادها باید به‌محض تولید گزارش شوند.

ویژه

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