Os sensores podem gerar eventos de diferentes maneiras, chamadas de modos de relatório. Cada tipo de sensor tem um único modo de relatório associado a ele. Existem quatro modos de geração de relatórios.
Contínuo
Os eventos são gerados a uma taxa constante definida pelo parâmetro sampling_period_ns
transmitido à 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ó são gerados se os valores medidos mudarem.
A ativação do sensor no nível da HAL (chamando
activate(..., enable=1)
nele) também aciona um evento,
o que significa que a HAL precisa retornar um evento imediatamente quando um sensor de mudança
é ativado. Exemplos de sensores que usam o modo de relatório "on-change" são o contador de passos, o sensor de proximidade e o sensor de frequência cardíaca.
O parâmetro sampling_period_ns
transmitido à função batch
é usado para definir o tempo mínimo entre eventos consecutivos. Isso significa que um evento não será gerado até que sampling_period_ns
nanossegundos tenham decorrido desde o último evento, mesmo que o valor tenha mudado desde então. Se o valor mudar, um evento precisará ser gerado assim que sampling_period_ns
tiver decorrido desde o último evento.
Por exemplo, suponha que:
- Ativamos o contador de passos com
sampling_period_ns = 10 * 10^9
(10 segundos). - Caminhamos por 55 segundos e ficamos parados por um minuto.
- Os eventos são gerados a cada 10 segundos durante o primeiro minuto (incluindo no tempo
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 apóst=60
segundos.
One-shot
Ao detectar um evento, o sensor se desativa e envia um único evento pelo HAL. A ordem é importante para evitar disputas. O sensor precisa ser desativado antes que o evento seja informado pelo HAL. Nenhum outro evento é enviado até que o sensor seja reativado. O movimento significativo é um exemplo desse tipo de sensor.
Os sensores únicos à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 únicos não podem ser armazenados em FIFOs de hardware. Eles precisam ser informados assim que são gerados.
Especial
Consulte as descrições de tipo de sensor individuais para saber quando os eventos são gerados.