I sensori possono generare eventi in modi diversi, chiamati modalità di segnalazione; a ogni tipo di sensore è associata una sola modalità di segnalazione. Esistono quattro modalità di segnalazione.
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.
Al cambio
Gli eventi vengono generati solo se i valori misurati sono cambiati.
L'attivazione del sensore a livello HAL (chiamata di
activate(..., enable=1)
) attiva anche un evento,
il che significa che l'HAL deve restituire immediatamente un evento quando viene attivato un sensore
on-change. Esempi di sensori che utilizzano la modalità di reportistica on-change sono i tipi di sensore
contapassi, di prossimità e di battito cardiaco.
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 fino a quando non sono trascorsi sampling_period_ns
nanosecondi dall'ultimo evento, anche se il valore è cambiato nel frattempo. Se il valore è cambiato,
deve essere generato un evento non appena sampling_period_ns
è
trascorso dall'ultimo evento.
Ad esempio, supponiamo che:
- 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 (incluso al momento
t=0
a causa dell'attivazione del sensore et=60
secondi), per un totale di sette eventi. Nel secondo minuto non viene generato alcun evento perché il valore del conteggio dei passi non è cambiato dopot=60
secondi.
One-shot
Al rilevamento di un evento, il sensore si disattiva e invia un singolo evento tramite l'HAL. L'ordine è importante per evitare race condition. Il sensore deve essere disattivato prima che l'evento venga segnalato tramite HAL. Non viene inviato nessun altro evento finché il sensore non viene riattivato. Movimento significativo è un esempio di questo tipo di sensore.
I sensori one-shot sono talvolta chiamati sensori di attivazione.
I parametri sampling_period_ns
e max_report_latency_ns
passati alla funzione batch
vengono ignorati. Gli eventi
di eventi singoli non possono essere memorizzati nelle FIFO hardware; gli eventi devono
essere segnalati non appena vengono generati.
Speciale
Per informazioni dettagliate su quando vengono generati gli eventi, consulta le singole descrizioni dei tipi di sensore.