Режимы отчетности

Датчики могут генерировать события различными способами, называемыми режимами отчетности; каждый тип датчика имеет один и только один режим отчетности, связанный с ним. Существует четыре режима отчетности.

Непрерывный

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

Специальный

Подробные сведения о том, когда генерируются события, см. в описаниях отдельных типов датчиков .