センサーは、レポートモードと呼ばれるさまざまな方法でイベントを生成できます。各センサータイプには、レポートモードが 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
秒以降は歩数計の値が変化しなかったため、次の 1 分間はイベントが生成されません。
ワンショット
イベントが検出されると、センサーは無効になり、HAL を介して単一のイベントを送信します。競合状態を避けるためには順番が重要です(センサーは、HAL を介してイベントを報告する前に無効になる必要があります)。センサーが再度有効になるまで、他のイベントは送信されません。 この種類のセンサーには、大きなモーション センサーなどがあります。
ワンショット センサーは、トリガー センサーと呼ばれることもあります。
batch
関数に渡される sampling_period_ns
および max_report_latency_ns
パラメータは無視されます。ワンショット イベントからのイベントはハードウェア FIFO に格納できません。イベントは生成後すぐにレポートされる必要があります。
特別
イベントが生成されるタイミングの詳細については、個々のセンサータイプの説明をご覧ください。