Les capteurs peuvent générer des événements de différentes manières appelées modes de rapport ; chaque type de capteur a un et un seul mode de rapport qui lui est associé. Quatre modes de rapport existent.
Continu
Les événements sont générés à un taux constant défini par le paramètre sampling_period_ns
passé à la fonction batch
. Des exemples de capteurs utilisant le mode de rapport continu sont les accéléromètres et les gyroscopes .
Sur le changement
Les événements ne sont générés que si les valeurs mesurées ont changé. L'activation du capteur au niveau HAL (en appelant activate(..., enable=1)
dessus) déclenche également un événement, ce qui signifie que HAL doit renvoyer un événement immédiatement lorsqu'un capteur on-change est activé. Des exemples de capteurs utilisant le mode de rapport sur changement sont les types de compteur de pas, de proximité et de fréquence cardiaque.
Le paramètre sampling_period_ns
passé à la fonction batch
est utilisé pour définir le temps minimum entre des événements consécutifs, ce qui signifie qu'un événement ne doit pas être généré avant que sampling_period_ns
ne se soit écoulé en nanosecondes depuis le dernier événement, même si la valeur a changé depuis. Si la valeur a changé, un événement doit être généré dès que sampling_period_ns
s'est écoulé depuis le dernier événement.
Par exemple, supposons :
- Nous activons le compteur de pas avec
sampling_period_ns = 10 * 10^9
(10 secondes). - Nous marchons pendant 55 secondes, puis restons immobiles pendant une minute.
- Les événements sont générés environ toutes les 10 secondes pendant la première minute (y compris à l'instant
t=0
du fait de l'activation du capteur, ett=60
secondes), pour un total de sept événements. Aucun événement n'est généré dans la deuxième minute car la valeur du nombre de pas n'a pas changé aprèst=60
secondes.
Un tir
Lors de la détection d'un événement, le capteur se désactive, puis envoie un seul événement via le HAL. L'ordre est important pour éviter les conditions de course. (Le capteur doit être désactivé avant que l'événement ne soit signalé via HAL). Aucun autre événement n'est envoyé tant que le capteur n'est pas réactivé. Un mouvement important est un exemple de ce type de capteur.
Les capteurs ponctuels sont parfois appelés capteurs à déclenchement.
Les paramètres sampling_period_ns
et max_report_latency_ns
transmis à la fonction batch
sont ignorés. Les événements provenant d'événements ponctuels ne peuvent pas être stockés dans des FIFO matérielles ; les événements doivent être signalés dès qu'ils sont générés.
Spécial
Voir les descriptions de chaque type de capteur pour plus de détails sur le moment où les événements sont générés.