レポートモード

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

特別

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