Berichtsmodi

Sensoren können Ereignisse auf verschiedene Arten generieren, die als Berichtsmodi bezeichnet werden. Jedem Sensortyp ist ein und nur ein Berichtsmodus zugeordnet. Es gibt vier Berichtsmodi.

Kontinuierlich

Ereignisse werden mit einer konstanten Rate generiert, die durch den an die batch Funktion übergebenen Parameter sampling_period_ns definiert wird. Beispiele für Sensoren, die den kontinuierlichen Berichtsmodus verwenden, sind Beschleunigungsmesser und Gyroskope .

Bei Änderung

Ereignisse werden nur generiert, wenn sich die Messwerte geändert haben. Die Aktivierung des Sensors auf der HAL-Ebene (Aufruf activate(..., enable=1) darauf) löst ebenfalls ein Ereignis aus, was bedeutet, dass die HAL sofort ein Ereignis zurückgeben muss, wenn ein Sensor bei Änderung aktiviert wird. Beispiele für Sensoren, die den On-Change-Berichtsmodus verwenden, sind die Sensortypen Schrittzähler, Näherungssensor und Herzfrequenz.

Der an die batch Funktion übergebene Parameter sampling_period_ns wird verwendet, um die Mindestzeit zwischen aufeinanderfolgenden Ereignissen festzulegen. Das bedeutet, dass ein Ereignis erst generiert werden sollte, wenn sampling_period_ns Nanosekunden seit dem letzten Ereignis vergangen sind, selbst wenn sich der Wert seitdem geändert hat. Wenn sich der Wert geändert hat, muss ein Ereignis generiert werden, sobald sampling_period_ns seit dem letzten Ereignis verstrichen ist.

Nehmen wir zum Beispiel an:

  • Wir aktivieren den Schrittzähler mit sampling_period_ns = 10 * 10^9 (10 Sekunden).
  • Wir gehen 55 Sekunden lang und stehen dann eine Minute lang still.
  • Die Ereignisse werden während der ersten Minute etwa alle 10 Sekunden generiert (einschließlich zum Zeitpunkt t=0 aufgrund der Aktivierung des Sensors und t=60 Sekunden), also insgesamt sieben Ereignisse. In der zweiten Minute wird kein Ereignis generiert, da sich der Wert der Schrittzahl nach t=60 Sekunden nicht geändert hat.

One-Shot

Bei Erkennung eines Ereignisses deaktiviert sich der Sensor selbst und sendet dann ein einzelnes Ereignis über den HAL. Ordnung ist wichtig, um Rennbedingungen zu vermeiden. (Der Sensor muss deaktiviert werden, bevor das Ereignis über den HAL gemeldet wird). Es wird kein weiteres Ereignis gesendet, bis der Sensor erneut aktiviert wird. Signifikante Bewegungen sind ein Beispiel für diese Art von Sensoren.

One-Shot-Sensoren werden manchmal auch als Triggersensoren bezeichnet.

Die an die batch Funktion übergebenen Parameter sampling_period_ns und max_report_latency_ns werden ignoriert. Ereignisse aus einmaligen Ereignissen können nicht in Hardware-FIFOs gespeichert werden; Die Ereignisse müssen gemeldet werden, sobald sie auftreten.

Besonders

Einzelheiten dazu, wann die Ereignisse generiert werden, finden Sie in den Beschreibungen der einzelnen Sensortypen .