レポートモード

センサーは、レポートモードと呼ばれるさまざまな方法でイベントを生成できます。各センサータイプには、レポートモードが 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 に格納できません。イベントは生成後すぐにレポートされる必要があります。

特別

イベントが生成されるタイミングの詳細については、個々のセンサータイプの説明をご覧ください。