センサーは、レポートモードと呼ばれるさまざまな方法でイベントを生成できます。各センサータイプには、レポートモードが 1 つだけ関連付けられています。レポートモードには 4 つの種類があります。
連続
batch
関数に渡される sampling_period_ns
パラメータで定義された一定の頻度でイベントが生成されます。継続レポートモードを使用するセンサーの例として、加速度計とジャイロスコープがあります。
変化時
測定値が変化した場合のみイベントが生成されます。
HAL レベルでセンサーをアクティブにする(HAL レベルで activate(..., enable=1)
を呼び出す)と、イベントもトリガーされます。つまり、変化時センサーがアクティブになったら HAL は直ちにイベントを返す必要があります。変化時レポートモードを使用するセンサーの例として、歩数計、近接センサー、心拍数センサータイプなどがあります。
batch
関数に渡される sampling_period_ns
パラメータは、連続するイベント間の最小時間を設定するために使用されます。つまり、最後のイベント以降に値が変化しても、最後のイベントからの経過時間が sampling_period_ns
ナノ秒に達していなければ、イベントは生成されません。値が変化した場合、最後のイベントからの経過時間が sampling_period_ns
に達したらすぐにイベントが生成される必要があります。
次のような例を考えてみましょう。
- 歩数計を
sampling_period_ns = 10 * 10^9
(10 秒)で有効にします。 - 55 秒間歩いてから 1 分間立ち止まります。
- 最初の 1 分(センサー有効化のための
t=0
の時点とt=60
秒を含む)の間に 10 秒ごとに合計 7 つのイベントが生成されます。t=60
秒以降には歩数計の値が変化しなかったため、2 分目にはイベントが生成されません。
ワンショット
イベントが検出されると、センサーが自身を無効化し、HAL を介して単一のイベントを送信します。競合状態を避けるためには順番が重要です(HAL を介してイベントを報告する前に自身を無効にする必要があります)。センサーが再度有効になるまで、他のイベントは送信されません。 この種類のセンサーの例として、大きなモーション センサーがあります。
ワンショット センサーは、トリガー センサーと呼ばれることもあります。
batch
関数に渡される sampling_period_ns
および max_report_latency_ns
パラメータは無視されます。ワンショット イベントからのイベントはハードウェア FIFO に格納できません。イベントは生成後すぐにレポートされる必要があります。
特別
イベントが生成されるタイミングの詳細については、個々のセンサータイプの説明をご覧ください。