Os sensores podem gerar eventos de diferentes maneiras, chamados de modos de relatório. Cada tipo de sensor tem um e apenas um modo de relatório associado. Existem quatro modos de relatório.
Contínuo
Os eventos são gerados a uma taxa constante definida pelo
sampling_period_ns
transmitido para a função batch
. Exemplos de sensores
que usam o modo de relatório contínuo são
acelerômetros
e giroscópios.
Ao mudar
Os eventos são gerados somente se os valores medidos mudarem.
Ativar o sensor no nível da HAL (chamando
activate(..., enable=1)
) também aciona um evento,
o que significa que a HAL precisa retornar um evento imediatamente quando um sensor de mudança
é ativada. Exemplos de sensores que usam o modo de relatório na mudança são os
tipos de sensores de contagem de passos, proximidade e frequência cardíaca.
O
sampling_period_ns
transmitido à função batch
é usado para definir o
mínimo entre eventos consecutivos, ou seja, um evento não deve ser
gerados até sampling_period_ns
nanossegundos desde
o último evento, mesmo que o valor tenha mudado desde então. Se o valor mudou,
um evento deverá ser gerado assim que sampling_period_ns
decorridos desde o último evento.
Por exemplo, suponha que:
- Ativamos o contador de passos com
sampling_period_ns = 10 * 10^9
(10 segundos). - Nós caminhamos por 55 segundos e ficamos parados por um minuto.
- Os eventos são gerados aproximadamente a cada 10 segundos durante o primeiro
minuto (inclusive no horário
t=0
devido à ativação do sensor et=60
segundos), totalizando sete eventos. Nenhum evento é gerado no segundo minuto porque o valor da contagem de passos não mudou depois det=60
segundos.
One-shot
Ao detectar um evento, o sensor se desativa e envia um único evento pela HAL. A ordem é importante para evitar disputas. (O sensor deve ser desativado antes que o evento seja informado pelo HAL). Nenhum outro evento é enviado até que o sensor seja reativado. Movimento significativo é um exemplo desse tipo de sensor.
Os sensores one-shot às vezes são chamados de sensores de gatilho.
Os parâmetros sampling_period_ns
e max_report_latency_ns
transmitidos para a função batch
são ignorados. Os eventos
de eventos únicos não podem ser armazenados em FIFOs de hardware. Eles precisam
ser informados assim que forem gerados.
Especial
Consulte as descrições do tipo de sensor para saber quando os eventos são gerados.