Tryby raportowania

Czujniki mogą generować zdarzenia na różne sposoby, zwane trybami raportowania; z każdym typem czujnika jest powiązany jeden i tylko jeden tryb raportowania. Istnieją cztery tryby raportowania.

Ciągły

Zdarzenia są generowane ze stałą szybkością określoną przez parametr sampling_period_ns przekazywany do funkcji batch . Przykładowymi czujnikami wykorzystującymi tryb ciągłego raportowania są akcelerometry i żyroskopy .

Na zmianę

Zdarzenia są generowane tylko w przypadku zmiany wartości mierzonych. Aktywacja czujnika na poziomie HAL (wywołanie activate(..., enable=1) na nim) również wyzwala zdarzenie, co oznacza, że ​​HAL musi zwrócić zdarzenie natychmiast po aktywacji czujnika zmiany. Przykładowymi czujnikami korzystającymi z trybu raportowania o zmianie są licznik kroków, czujnik zbliżeniowy i czujnik tętna.

Parametr sampling_period_ns przekazywany do funkcji batch służy do ustawienia minimalnego czasu pomiędzy kolejnymi zdarzeniami, co oznacza, że ​​zdarzenie nie powinno być generowane dopóki od ostatniego zdarzenia nie upłynie nanosekund sampling_period_ns , nawet jeśli wartość uległa zmianie od tego czasu. Jeżeli wartość uległa zmianie, zdarzenie musi zostać wygenerowane natychmiast po upływie sampling_period_ns od ostatniego zdarzenia.

Załóżmy na przykład:

  • Aktywujemy licznik kroków za pomocą sampling_period_ns = 10 * 10^9 (10 sekund).
  • Idziemy przez 55 sekund, a następnie stoimy w miejscu na minutę.
  • Zdarzenia są generowane co około 10 sekund w ciągu pierwszej minuty (w tym w czasie t=0 z powodu aktywacji czujnika oraz t=60 sekund), co daje w sumie siedem zdarzeń. W drugiej minucie nie zostanie wygenerowane żadne zdarzenie, ponieważ wartość licznika kroków nie uległa zmianie po t=60 sekundach.

Jeden strzał

Po wykryciu zdarzenia czujnik sam się dezaktywuje, a następnie wysyła pojedyncze zdarzenie przez warstwę HAL. Uporządkuj sprawy, aby uniknąć warunków wyścigowych. (Czujnik musi zostać dezaktywowany przed zgłoszeniem zdarzenia przez HAL). Żadne inne zdarzenie nie jest wysyłane do czasu ponownej aktywacji czujnika. Przykładem tego rodzaju czujnika jest znaczący ruch .

Czujniki jednorazowe są czasami nazywane czujnikami wyzwalającymi.

Parametry sampling_period_ns i max_report_latency_ns przekazywane do funkcji batch są ignorowane. Zdarzenia ze zdarzeń jednorazowych nie mogą być przechowywane w sprzętowych FIFO; zdarzenia należy zgłaszać natychmiast po ich wygenerowaniu.

Specjalny

Szczegółowe informacje o tym, kiedy generowane są zdarzenia, można znaleźć w opisach poszczególnych typów czujników .