I sensori possono generare eventi in modi diversi, chiamati modalità di generazione di report. Ogni tipo di sensore ha una e una sola modalità di generazione di report associata. Esistono quattro modalità di generazione di report.
Continuo
Gli eventi vengono generati a una velocità costante definita dal
sampling_period_ns
parametro passato alla batch funzione. Esempi di sensori
che utilizzano la modalità di generazione di report continua sono
accelerometri
e giroscopi.
Al cambio
Gli eventi vengono generati solo se i valori misurati sono cambiati.
L'attivazione del sensore a livello HAL (chiamando
activate(..., enable=1) su di esso) attiva anche un evento,
il che significa che l'HAL deve restituire immediatamente un evento quando viene attivato un sensore al cambio. Esempi di sensori che utilizzano la modalità di generazione di report al cambio sono i
tipi di sensore contapassi, di prossimità e di frequenza cardiaca.
Il
sampling_period_ns
parametro passato alla funzione batch viene utilizzato per impostare il
tempo minimo tra eventi consecutivi, il che significa che non deve essere
generato un evento finché 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 sono trascorsi sampling_period_ns dall'ultimo evento.
Ad esempio, supponiamo che:
- Attiviamo 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 circa ogni 10 secondi durante il primo
minuto (incluso al tempo
t=0a causa dell'attivazione del sensore et=60secondi), per un totale di sette eventi. Non viene generato alcun evento nel secondo minuto perché il valore del conteggio dei passi non è cambiato dopot=60secondi.
One-shot
Al rilevamento di un evento, il sensore si disattiva e invia un singolo evento tramite l'HAL. L'ordine è importante per evitare condizioni di race. (Il sensore deve essere disattivato prima che l'evento venga segnalato tramite il HAL). Non viene inviato nessun altro evento finché il sensore non viene riattivato. Il 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
one-shot non possono essere memorizzati nelle FIFO hardware; gli eventi devono
essere segnalati non appena vengono generati.
Speciale
Per i dettagli su quando vengono generati gli eventi, consulta le descrizioni dei singoli tipi di sensore.