Датчики могут генерировать события разными способами, называемыми режимами отчетности; каждый тип датчика имеет один и только один режим отчетности, связанный с ним. Существует четыре режима отчетности.
Непрерывный
События генерируются с постоянной скоростью, определяемой параметром sampling_period_ns
, переданным в batch
функцию. Примерами датчиков, использующих режим непрерывной отчетности, являются акселерометры и гироскопы .
На смену
События генерируются только в том случае, если измеренные значения изменились. Активация датчика на уровне HAL (вызов activate(..., enable=1)
на нем) также запускает событие, то есть HAL должен немедленно вернуть событие при активации датчика on-change. Примерами датчиков, использующих режим отчетности on-change, являются счетчик шагов, датчик приближения и датчик частоты сердечных сокращений.
Параметр 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; события должны сообщаться сразу после их генерации.
Особенный
Подробную информацию о том, когда генерируются события, см. в описаниях отдельных типов датчиков .