Sensoren können Ereignisse auf unterschiedliche Weise 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
übergebenen Parameter " sampling_period_ns
" definiert wird. Beispielsensoren, die den kontinuierlichen Berichtsmodus verwenden, sind Beschleunigungsmesser und Gyroskope .
Bei Änderung
Ereignisse werden nur generiert, wenn sich die Messwerte geändert haben. Das Aktivieren des Sensors auf HAL-Ebene (Aufrufen von activate(..., enable=1)
darauf) löst ebenfalls ein Ereignis aus, was bedeutet, dass die HAL sofort ein Ereignis zurückgeben muss, wenn ein On-Change-Sensor aktiviert wird. Beispielsensoren, die den Änderungsmeldemodus verwenden, sind die Schrittzähler-, Näherungs- und Herzfrequenzsensortypen.
Der an die batch
übergebene Parameter " sampling_period_ns
" wird verwendet, um die Mindestzeit zwischen aufeinanderfolgenden Ereignissen festzulegen, was bedeutet, dass ein Ereignis nicht generiert werden sollte, bis " 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.
Angenommen, zum Beispiel:
- 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 etwa alle 10 Sekunden während der ersten Minute (einschließlich zum Zeitpunkt
t=0
wegen der Aktivierung des Sensors undt=60
Sekunden) für insgesamt sieben Ereignisse generiert. 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 durch die HAL. Die Reihenfolge ist wichtig, um Rennbedingungen zu vermeiden. (Der Sensor muss deaktiviert werden, bevor das Ereignis über die HAL gemeldet wird). Es wird kein anderes Ereignis gesendet, bis der Sensor erneut aktiviert wird. Signifikante Bewegung ist ein Beispiel für diese Art von Sensor.
One-Shot-Sensoren werden manchmal als Triggersensoren bezeichnet.
Die an die max_report_latency_ns
Parameter „ sampling_period_ns
“ und „ batch
“ werden ignoriert. Ereignisse aus einmaligen Ereignissen können nicht in Hardware-FIFOs gespeichert werden; die Ereignisse müssen gemeldet werden, sobald sie generiert werden.
Speziell
Einzelheiten dazu, wann die Ereignisse generiert werden, finden Sie in den Beschreibungen der einzelnen Sensortypen .