Los sensores pueden generar eventos de diferentes maneras, llamados modos de generación de informes. Cada tipo de sensor tiene un solo modo de generación de informes asociado. Existen cuatro modos de generación de informes.
Continuo
Los eventos se generan a una velocidad constante definida por el parámetro sampling_period_ns
que se pasa a la función batch
. Algunos ejemplos de sensores que usan el modo de generación de informes continuos son los acelerómetros y los giroscopios.
Al cambiar
Los eventos se generan solo si los valores medidos cambiaron.
La activación del sensor en el nivel de la HAL (llamando a activate(..., enable=1)
en él) también activa un evento, lo que significa que la HAL debe mostrar un evento de inmediato cuando se activa un sensor en caso de cambio. Algunos ejemplos de sensores que usan el modo de informe de cambio son los tipos de sensores de contador de pasos, de proximidad y de frecuencia cardíaca.
El parámetro sampling_period_ns
pasado a la función batch
se usa para establecer el tiempo mínimo entre eventos consecutivos, lo que significa que un evento no se debe generar hasta que haya transcurrido sampling_period_ns
nanosegundos desde el último evento, incluso si el valor cambió desde entonces. Si el valor cambió, se debe generar un evento en cuanto transcurra sampling_period_ns
desde el último evento.
Por ejemplo, supongamos:
- Activamos el contador de pasos con
sampling_period_ns = 10 * 10^9
(10 segundos). - Caminamos durante 55 segundos y, luego, permanecemos inmóviles durante un minuto.
- Los eventos se generan aproximadamente cada 10 segundos durante el primer minuto (incluidos en el momento
t=0
debido a la activación del sensor yt=60
segundos), para un total de siete eventos. No se genera ningún evento en el segundo minuto porque el valor del recuento de pasos no cambió después det=60
segundos.
Una sola toma
Cuando se detecta un evento, el sensor se desactiva y, luego, envía un solo evento a través del HAL. El orden es importante para evitar condiciones de carrera. (el sensor debe desactivarse antes de que se informe el evento a través del HAL). No se envía ningún otro evento hasta que se vuelve a activar el sensor. El movimiento significativo es un ejemplo de este tipo de sensor.
A veces, los sensores de un solo uso se denominan sensores de activación.
Se ignoran los parámetros sampling_period_ns
y max_report_latency_ns
que se pasan a la función batch
. Los eventos de un solo uso no se pueden almacenar en FIFO de hardware. Los eventos se deben informar en cuanto se generan.
Especial
Consulta las descripciones de los tipos de sensor individuales para obtener detalles sobre cuándo se generan los eventos.