Los sensores pueden generar eventos de diferentes maneras, llamadas modos de generación de informes; cada tipo de sensor tiene uno y solo un 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
sampling_period_ns
parámetro que se pasa a la batch función. Los sensores de ejemplo
que usan el modo de generación de informes continuo son
los acelerómetros
y los giroscopios.
Al cambio
Los eventos se generan solo si los valores medidos cambiaron.
Activar el sensor en el nivel de HAL (llamarlo
activate(..., enable=1) ) también activa un evento,
lo que significa que el HAL debe mostrar un evento de inmediato cuando se activa un sensor al cambio. Los sensores de ejemplo que usan el modo de generación de informes al cambio son los
tipos de sensor de contador de pasos, proximidad y frecuencia cardíaca.
El
sampling_period_ns
parámetro que se pasa a la función batch se usa para establecer el
tiempo mínimo entre eventos consecutivos, lo que significa que no se debe
generar un evento hasta que transcurran sampling_period_ns nanosegundos desde
el último evento, incluso si el valor cambió desde entonces. Si el valor cambió,
se debe generar un evento tan pronto como sampling_period_ns haya
transcurrido desde el último evento.
Por ejemplo, supongamos lo siguiente:
- Activamos el contador de pasos con
sampling_period_ns = 10 * 10^9(10 segundos). - Caminamos durante 55 segundos y, luego, nos quedamos quietos durante un minuto.
- Los eventos se generan aproximadamente cada 10 segundos durante el primer
minuto (incluido el tiempo
t=0debido a la activación del sensor yt=60segundos), 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=60segundos.
Un solo ejemplo
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 vuelva a activar el sensor. El movimiento significativo es un ejemplo de este tipo de sensor.
A veces, los sensores de un solo ejemplo 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 ejemplo no se pueden almacenar en FIFO de hardware; los eventos deben
informarse en cuanto se generen.
Especial
Consulta las descripciones de los tipos de sensores individuales para obtener detalles sobre cuándo se generan los eventos.