Tryby raportowania

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 generowane na stałej wysokości określonej przez sampling_period_ns parametrów przesyłanych do batch funkcji. Przykład czujników przy użyciu trybu raportowania ciągłe 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 activate(..., enable=1) na nim) także wyzwala zdarzenie, czyli HAL musi natychmiast powrócić zdarzenie, gdy czujnik na zmiany jest aktywna. Przykładowe czujniki korzystające z trybu raportowania przy zmianie to licznik kroków, czujnik zbliżeniowy i czujnik tętna.

W sampling_period_ns parametr przekazany do batch funkcja służy do ustawienia minimalnego czasu pomiędzy kolejnymi wydarzeniami, co oznacza zdarzenie nie powinno być generowane aż sampling_period_ns nanosekund, jaki upłynął od ostatniego zdarzenia, nawet jeśli wartość zmieniło od tamtego czasu. Jeśli wartość zmieniło zdarzenie musi zostać wygenerowany, jak tylko sampling_period_ns upłynął od ostatniego zdarzenia.

Załóżmy na przykład:

  • Aktywujemy licznik kroków z sampling_period_ns = 10 * 10^9 (10 sekund).
  • Idziemy przez 55 sekund, potem stoimy przez minutę.
  • Zdarzenia generowane są co 10 sekund w ciągu pierwszej minuty (w tym w czasie t=0 , ze względu na aktywację czujnika, i t=60 sekund), co daje łącznie siedem zdarzeń. Zdarzenie nie jest generowany w drugiej chwili, ponieważ wartość liczby etapie nie zmienia się po t=60 sekund.

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. Znaczący ruch jest przykładem tego rodzaju czujnika.

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

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

Specjalny

Zobaczyć poszczególne opisy typ czujnika dla szczegółów na kiedy zdarzenia są generowane.