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