I sensori possono generare eventi in modi diversi, chiamati modalità di generazione di report. A ogni tipo di sensore è associata una sola modalità di generazione di report. Esistono quattro modalità di generazione di report.
Continuo
Gli eventi vengono generati a una frequenza costante definita dal parametro
sampling_period_ns
passato alla funzione batch
. I sensori di esempio che utilizzano la modalità di segnalazione continua sono gli accelerometri e i giroscopi.
Al cambio
Gli eventi vengono generati solo se i valori misurati sono stati modificati.
L'attivazione del sensore a livello di HAL (chiamata
activate(..., enable=1)
) attiva anche un evento,
il che significa che l'HAL deve restituire un evento immediatamente quando viene attivato un sensore su variazione. Esempi di sensori che utilizzano la modalità di segnalazione in caso di variazione sono i tipi di sensore di passi, sensore di prossimità e sensore del battito cardiaco.
Il
sampling_period_ns
parametro 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 da allora. Se il valore è cambiato,
deve essere generato un evento non appena è trascorso sampling_period_ns
dall'ultimo evento.
Ad esempio, supponiamo che:
- Attiva il contapassi con
sampling_period_ns = 10 * 10^9
(10 secondi). - Camminiamo per 55 secondi, poi rimaniamo fermi per un minuto.
- Gli eventi vengono generati ogni circa 10 secondi durante il primo
minuto (incluso il momento
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.
One-shot
Al rilevamento di un evento, il sensore si disattiva e invia un singolo evento tramite l'HAL. L'ordine è importante per evitare le gare. 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. Movimento significativo è un esempio di questo tipo di sensore.
I sensori one-shot a volte sono chiamati sensori di attivazione.
I parametri sampling_period_ns
e max_report_latency_ns
passati alla funzione batch
vengono ignorati. Gli eventi
di eventi one-shot non possono essere archiviati in FIFO hardware. Gli eventi devono
essere segnalati non appena vengono generati.
Speciale
Consulta le singole descrizioni del tipo di sensore per informazioni dettagliate su quando vengono generati gli eventi.