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