I sensori possono generare eventi in diversi modi chiamati modalità di reporting; a ciascun tipo di sensore è associata una ed una sola modalità di reporting. Esistono quattro modalità di reporting.
Continuo
Gli eventi vengono generati a una velocità costante definita dal parametro sampling_period_ns
passato alla funzione batch
. Esempi di sensori che utilizzano la modalità di reporting continuo sono accelerometri e giroscopi .
In cambiamento
Gli eventi vengono generati solo se i valori misurati sono cambiati. Anche l'attivazione del sensore a livello dell'HAL (chiamando activate(..., enable=1)
su di esso) attiva un evento, il che significa che l'HAL deve restituire un evento immediatamente quando viene attivato un sensore invariato. Esempi di sensori che utilizzano la modalità di segnalazione delle variazioni sono i tipi di contapassi, prossimità e frequenza cardiaca.
Il parametro sampling_period_ns
passato alla funzione batch
viene utilizzato per impostare il tempo minimo tra eventi consecutivi, il che significa che un evento non deve essere generato finché non sono trascorsi sampling_period_ns
nanosecondi dall'ultimo evento, anche se il valore è cambiato da allora. Se il valore è cambiato, è necessario generare un evento non appena è trascorso sampling_period_ns
dall'ultimo evento.
Ad esempio, supponiamo:
- Attiviamo il contapassi con
sampling_period_ns = 10 * 10^9
(10 secondi). - Camminiamo per 55 secondi, poi restiamo fermi per un minuto.
- Gli eventi vengono generati circa ogni 10 secondi durante il primo minuto (anche al tempo
t=0
a causa dell'attivazione del sensore, et=60
secondi), per un totale di sette eventi. Nessun evento viene generato nel secondo minuto perché il valore del conteggio dei passi non è cambiato dopot=60
secondi.
Un colpo
Al rilevamento di un evento, il sensore si disattiva e quindi invia un singolo evento attraverso l'HAL. Ordinare le questioni per evitare condizioni di gara. (Il sensore deve essere disattivato prima che l'evento venga segnalato tramite l'HAL). Nessun altro evento viene inviato finché il sensore non viene riattivato. Il movimento significativo è un esempio di questo tipo di sensore.
I sensori one-shot vengono talvolta definiti sensori trigger.
I parametri sampling_period_ns
e max_report_latency_ns
passati alla funzione batch
vengono ignorati. Gli eventi provenienti da eventi one-shot non possono essere archiviati nelle FIFO hardware; gli eventi devono essere segnalati non appena vengono generati.
Speciale
Vedere le descrizioni dei singoli tipi di sensore per dettagli su quando vengono generati gli eventi.