Os sensores podem gerar eventos de diferentes maneiras chamadas modos de relatório; cada tipo de sensor tem um e apenas um modo de relatório associado a ele. Existem quatro modos de relatório.
Contínuo
Os eventos são gerados a uma taxa constante definida pelo parâmetro sampling_period_ns
passado para a função batch
. Exemplos de sensores que usam o modo de relatório contínuo são acelerômetros e giroscópios .
Em mudança
Os eventos são gerados somente se os valores medidos forem alterados. A ativação do sensor no nível HAL (chamando activate(..., enable=1)
nele) também aciona um evento, o que significa que o HAL deve retornar um evento imediatamente quando um sensor on-change é ativado. Exemplos de sensores que usam o modo de relatório na mudança são os tipos de sensores de contador de passos, proximidade e frequência cardíaca.
O parâmetro sampling_period_ns
passado para a função batch
é usado para definir o tempo mínimo entre eventos consecutivos, o que significa que um evento não deve ser gerado até que sampling_period_ns
nanossegundos tenham decorrido desde o último evento, mesmo que o valor tenha sido alterado desde então. Se o valor for alterado, um evento deve ser gerado assim que sampling_period_ns
tiver decorrido desde o último evento.
Por exemplo, suponha:
- Ativamos o contador de passos com
sampling_period_ns = 10 * 10^9
(10 segundos). - Caminhamos por 55 segundos, depois ficamos parados por um minuto.
- Os eventos são gerados aproximadamente a cada 10 segundos durante o primeiro minuto (incluindo no tempo
t=0
por causa da ativação do sensor,t=60
segundos), para um total de sete eventos. Nenhum evento é gerado no segundo minuto porque o valor da contagem de passos não mudou apóst=60
segundos.
Um disparo
Ao detectar um evento, o sensor se desativa e então envia um único evento através do HAL. A ordem é importante para evitar condições de corrida. (O sensor deve ser desativado antes que o evento seja relatado através do HAL). Nenhum outro evento é enviado até que o sensor seja reativado. Movimento significativo é um exemplo desse tipo de sensor.
Os sensores de disparo único às vezes são chamados de sensores de gatilho.
Os parâmetros sampling_period_ns
e max_report_latency_ns
passados para a função batch
são ignorados. Eventos de eventos únicos não podem ser armazenados em FIFOs de hardware; os eventos devem ser reportados assim que são gerados.
Especial
Consulte as descrições dos tipos de sensores individuais para obter detalhes sobre quando os eventos são gerados.