Modalità di generazione dei report

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=0 a causa dell'attivazione del sensore e t=60 secondi), per un totale di sette eventi. Non viene generato alcun evento nel secondo minuto perché il valore del conteggio dei passi non è cambiato dopo t=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 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.