Les capteurs peuvent générer des événements de différentes manières, appelées modes de création de rapports. Chaque type de capteur est associé à un seul et unique mode de création de rapports. Il existe quatre modes de création de rapports.
Continu
Les événements sont générés à un taux constant défini par le paramètre sampling_period_ns
transmis à la fonction batch
. Les accéléromètres et les gyroscopes sont des exemples de capteurs utilisant le mode de création de rapports continus.
Lors d'un changement
Les événements ne sont générés que si les valeurs mesurées ont changé.
L'activation du capteur au niveau du HAL (en appelant activate(..., enable=1)
dessus) déclenche également un événement, ce qui signifie que le HAL doit renvoyer un événement immédiatement lorsqu'un capteur de changement est activé. Les types de capteurs utilisant le mode de création de rapports en cas de modification sont le compteur de pas, le capteur de proximité et le capteur de fréquence cardiaque.
Le paramètre sampling_period_ns
transmis à la fonction batch
permet de définir le délai minimal entre des événements consécutifs. Autrement dit, aucun événement ne doit être généré avant que sampling_period_ns
nanosecondes se soient écoulées 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 que:
- Nous activons le compteur de pas avec
sampling_period_ns = 10 * 10^9
(10 secondes). - Nous marchons pendant 55 secondes, puis nous 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
en raison de l'activation du capteur et pendantt=60
secondes), soit un total de sept événements. Aucun événement n'est généré au cours de la deuxième minute, car la valeur du nombre de pas n'a pas changé au bout det=60
secondes.
Ponctuel
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 concurrence. (Le capteur doit être désactivé avant que l'événement ne soit signalé via le HAL). Aucun autre événement n'est envoyé tant que le capteur n'est pas réactivé. Le mouvement important est un exemple de ce type de capteur.
Les capteurs à déclenchement unique sont parfois appelés capteurs de déclenchement.
Les paramètres sampling_period_ns
et max_report_latency_ns
transmis à la fonction batch
sont ignorés. Les événements d'événements ponctuels ne peuvent pas être stockés dans des FIFO matérielles. Ils doivent être signalés dès qu'ils sont générés.
Spécial
Reportez-vous aux descriptions des types de capteurs individuels pour en savoir plus sur le moment où les événements sont générés.