يمكن لأجهزة الاستشعار إنشاء أحداث بطرق مختلفة تُعرف باسم أوضاع إعداد التقارير، ويحتوي كل نوع من أجهزة الاستشعار على وضع واحد فقط من أوضاع إعداد التقارير مرتبط به. تتوفّر أربعة أوضاع لإعداد التقارير.
مستمر
يتم إنشاء الأحداث بمعدّل ثابت محدّد بواسطة المَعلمة sampling_period_ns
التي يتم تمريرها إلى الدالة batch
. من الأمثلة على أدوات الاستشعار التي تستخدم وضع الإبلاغ المستمر مقاييس التسارع والجيروسكوبات.
عند التغيير
لا يتم إنشاء الأحداث إلا إذا تغيّرت القيم المقاسة.
يؤدي تفعيل أداة الاستشعار على مستوى طبقة تجريد الأجهزة (HAL) (عن طريق استدعاء
activate(..., enable=1)
) إلى تشغيل حدث أيضًا،
ما يعني أنّه على طبقة تجريد الأجهزة عرض حدث فورًا عند تفعيل أداة استشعار
تعمل عند حدوث تغيير. من الأمثلة على أجهزة الاستشعار التي تستخدم وضع إعداد التقارير عند حدوث تغيير، أنواع أجهزة استشعار عدّ الخطوات والتقارب ومعدّل نبضات القلب.
يتم استخدام المَعلمة 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
ثانية.
One-shot
عند رصد حدث، يتم إيقاف جهاز الاستشعار تلقائيًا ثم يتم إرسال حدث واحد من خلال طبقة تجريد الأجهزة (HAL). يجب مراعاة الترتيب لتجنُّب حالات التزامن. (يجب إيقاف المستشعر قبل الإبلاغ عن الحدث من خلال طبقة HAL). ولا يتم إرسال أي حدث آخر إلى أن تتم إعادة تفعيل المستشعر. الحركة الكبيرة هي مثال على هذا النوع من أجهزة الاستشعار.
يُشار أحيانًا إلى أجهزة الاستشعار التي تعمل لمرة واحدة باسم أجهزة استشعار التشغيل.
يتم تجاهل المَعلمتَين sampling_period_ns
وmax_report_latency_ns
اللتين تم تمريرهما إلى الدالة batch
. لا يمكن تخزين الأحداث
الناتجة عن الأحداث التي يتم تشغيلها لمرة واحدة في قوائم الانتظار FIFO للأجهزة، بل يجب
إرسال تقارير عن الأحداث فور إنشائها.
الأحداث الخاصة
اطّلِع على أوصاف أنواع المستشعرات الفردية لمعرفة تفاصيل حول وقت إنشاء الأحداث.