Tryby raportowania

Czujniki mogą generować zdarzenia na różne sposoby, czyli w różnych trybach raportowania. Każdy typ czujnika ma powiązany tylko jeden tryb raportowania. Istnieją 4 tryby raportowania.

Ciągły

Zdarzenia są generowane z stałym tempem określonym przez parametr sampling_period_ns przekazany do funkcji batch. Przykładowe czujniki korzystające z ciągłego trybu raportowania to akcelerometryżyroskopy.

W trakcie zmiany

Zdarzenia są generowane tylko wtedy, gdy zmieniły się zmierzone wartości. Aktywowanie czujnika na poziomie HAL (wywołanie funkcji activate(..., enable=1)) powoduje też wywołanie zdarzenia, co oznacza, że HAL musi natychmiast zwrócić zdarzenie, gdy zostanie aktywowany czujnik zmiany. Przykładami czujników używających trybu raportowania po zmianie są: 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 zdarzenie nie zostanie wygenerowane, 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ść się zmieniła, zdarzenie musi zostać wygenerowane, gdy od ostatniego zdarzenia upłynie sampling_period_ns.

Na przykład:

  • Aktywujemy licznik kroków za pomocą 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 i t=60 sekund), w sumie 7 zdarzeń. W drugiej minucie nie jest generowane żadne zdarzenie, ponieważ wartość liczby kroków nie uległa zmianie po t=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 ponownej aktywacji czujnika nie jest wysyłane żadne inne zdarzenie. Znaczne poruszenie to przykład tego rodzaju czujnika.

Czujniki jednorazowe są czasami nazywane czujnikami wyzwalającymi.

Parametry sampling_period_nsmax_report_latency_ns przekazywane do funkcji batch są ignorowane. Zdarzenia jednorazowe nie mogą być przechowywane w buforze FIFO na sprzęcie. Muszą być zgłaszane natychmiast po wygenerowaniu.

Specjalny

Szczegółowe informacje o tym, kiedy są generowane zdarzenia, znajdziesz w opisach poszczególnych typów czujników.