Czujniki mogą generować zdarzenia na różne sposoby nazywane trybami raportowania. z każdym typem czujnika powiązany jest tylko 1 tryb raportowania. Istnieją 4 tryby raportowania.
Ciągły
Zdarzenia są generowane ze stałą częstotliwością zdefiniowaną przez
sampling_period_ns
przekazany do funkcji batch
. Przykładowe czujniki korzystające z ciągłego trybu raportowania to akcelerometry i żyroskopy.
W przypadku zmiany
Zdarzenia są generowane tylko wtedy, gdy zmieniły się zmierzone wartości.
Aktywowanie czujnika na poziomie HAL (wywołanie
activate(..., enable=1)
) również wywołuje zdarzenie,
co oznacza, że HAL musi zwrócić zdarzenie natychmiast, gdy czujnik przy zmianie
jest aktywne. Przykładami czujników używających trybu raportowania po zmianie są typy czujników: licznik kroków, czujnik zbliżeniowy i czujnik tętna.
Parametr sampling_period_ns
przekazany funkcji batch
służy do ustawiania minimalnego czasu między kolejnymi zdarzeniami, co oznacza, że nie powinno być generowane żadne zdarzenie, dopóki od ostatniego zdarzenia nie upłynie sampling_period_ns
nanosekund, nawet jeśli wartość zmieniła się od tego czasu. Jeśli wartość się zmieniła, zdarzenie musi zostać wygenerowane, gdy od ostatniego zdarzenia upłynie sampling_period_ns
.
Załóżmy na przykład:
- Licznik kroków aktywujemy za pomocą funkcji
sampling_period_ns = 10 * 10^9
(10 sekund). - Idziemy przez 55 sekund, a potem stoimy w bezruchu przez minutę.
- Zdarzenia są generowane co około 10 sekund w ciągu pierwszej minuty (w tym w czasie
t=0
sekund z powodu aktywacji czujnika it=60
sekund), co daje w sumie 7 zdarzeń. W drugiej minucie nie jest generowane żadne zdarzenie, ponieważ wartość liczby kroków nie zmieniła się pot=60
sekundach.
One-shot
Po wykryciu zdarzenia czujnik dezaktywuje się, a następnie wysyła pojedyncze zdarzenie przez HAL. Kolejność ma znaczenie, ponieważ pozwala uniknąć sytuacji wyścigu. (przed zgłoszeniem zdarzenia przez HAL czujnik musi zostać dezaktywowany). Do momentu ponownego uaktywnienia czujnika nie jest wysyłane żadne inne zdarzenie. Istotny ruchu.
Czujniki pojedynczego uderzenia są czasami nazywane czujnikami wyzwalającymi.
Parametry sampling_period_ns
i max_report_latency_ns
przekazywane do funkcji batch
są ignorowane. Zdarzenia jednorazowe nie mogą być przechowywane w FIFO sprzętowym. Muszą być zgłaszane od razu po wygenerowaniu.
Specjalny
Wyświetlanie typu czujnika aby dowiedzieć się, kiedy zdarzenia są generowane.