Tryby raportowania

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Czujniki mogą generować zdarzenia na różne sposoby, zwane trybami raportowania; z każdym typem czujnika powiązany jest 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 .

Przy zmianie

Zdarzenia są generowane tylko wtedy, gdy mierzone wartości uległy zmianie. Aktywacja czujnika na poziomie HAL (wywołanie na nim activate(..., enable=1) ) również wyzwala zdarzenie, co oznacza, że ​​HAL musi zwrócić zdarzenie natychmiast po aktywacji czujnika przy zmianie. Przykładowe czujniki korzystające z trybu raportowania przy zmianie to licznik kroków, czujnik zbliżeniowy i czujnik tętna.

Parametr sampling_period_ns przekazany do funkcji batch służy do ustawienia minimalnego czasu między kolejnymi zdarzeniami, co oznacza, że ​​zdarzenie nie powinno być generowane, dopóki nie upłynie sampling_period_ns nanosekund od ostatniego zdarzenia, nawet jeśli wartość zmieniła się od tego czasu. Jeśli wartość uległa zmianie, zdarzenie musi zostać wygenerowane, gdy tylko upłynie czas sampling_period_ns od ostatniego zdarzenia.

Załóżmy na przykład:

  • Licznik kroków aktywujemy parametrem sampling_period_ns = 10 * 10^9 (10 sekund).
  • Idziemy przez 55 sekund, potem stoimy przez minutę.
  • Zdarzenia są generowane co około 10 sekund w ciągu pierwszej minuty (wliczając w to czas t=0 z powodu aktywacji czujnika i t=60 sekund), łącznie siedem zdarzeń. Żadne zdarzenie nie jest generowane w drugiej minucie, ponieważ wartość liczby kroków nie zmieniła się po t=60 sekundach.

Jeden strzał

Po wykryciu zdarzenia czujnik dezaktywuje się, a następnie wysyła pojedyncze zdarzenie za pośrednictwem warstwy HAL. Porzą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, dopóki czujnik nie zostanie ponownie aktywowany. Przykładem takiego czujnika jest znaczący ruch .

Czujniki jednostrzałowe są czasami nazywane czujnikami wyzwalającymi.

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

Specjalny

Szczegółowe informacje na temat generowania zdarzeń można znaleźć w opisach poszczególnych typów czujników .