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 undt=60
Sekunden), also insgesamt sieben Ereignisse. In der zweiten Minute wird kein Ereignis generiert, da sich der Wert der Schrittzahl nacht=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 .