Датчики могут генерировать события разными способами, называемыми режимами отчетности; с каждым типом датчика связан один и только один режим отчетности. Существует четыре режима отчетности.
Непрерывный
События генерируются с постоянной частотой, определяемой параметром 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; о событиях необходимо сообщать сразу же после их возникновения.
Особенный
Подробную информацию о том, когда генерируются события, см. в описаниях отдельных типов датчиков .