Les capteurs peuvent générer des événements de différentes manières, appelées modes de rapport. Chaque type de capteur n'est associé qu'à un seul mode de rapport. Il existe quatre modes de rapport.
Continue
Les événements sont générés à un rythme constant défini par le
sampling_period_ns
paramètre transmis à la batch fonction. Les accéléromètreset les gyroscopes sont des exemples de capteurs utilisant le mode de rapport continu.
En cas de changement
Les événements ne sont générés que si les valeurs mesurées ont changé.
L'activation du capteur au niveau de la couche d'abstraction matérielle (en appelant
activate(..., enable=1) sur celui-ci) déclenche également un événement,
ce qui signifie que la couche d'abstraction matérielle doit renvoyer un événement immédiatement lorsqu'un capteur en cas de changement
est activé. Les types de capteurs de podomètre, de proximité et de fréquence cardiaque sont des exemples de capteurs utilisant le mode de rapport en cas de changement.
Le
sampling_period_ns
paramètre transmis à la fonction batch permet de définir le
délai minimal entre les événements consécutifs. Cela signifie qu'un événement ne doit pas être
généré tant que sampling_period_ns nanosecondes ne se sont pas é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 les éléments suivants :
- Nous activons le podomètre 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 au cours de la première
minute (y compris à l'heure
t=0en raison de l'activation du capteur et àt=60secondes), pour 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é aprèst=60secondes.
One-shot
Lorsqu'un événement est détecté, le capteur se désactive, puis envoie un seul événement via la couche d'abstraction matérielle. 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 la couche d'abstraction matérielle.) Aucun autre événement n'est envoyé tant que le capteur n'est pas réactivé. Les mouvements importants sont un exemple de ce type de capteur.
Les capteurs one-shot 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
one-shot 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
Pour savoir quand les événements sont générés, consultez les descriptions individuelles des types de capteurs.