センサーは、レポートモードと呼ばれるさまざまな方法でイベントを生成できます。各センサータイプには、1つだけのレポートモードが関連付けられています。 4つのレポートモードがあります。
継続的
イベントは、 batch
関数に渡されるsampling_period_ns
パラメーターによって定義された一定の速度で生成されます。連続レポートモードを使用するセンサーの例は、加速度計とジャイロスコープです。
変更時
イベントは、測定値が変更された場合にのみ生成されます。 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分間に約10秒ごとに生成され(センサーのアクティブ化のための時間
t=0
、およびt=60
秒を含む)、合計7つのイベントになります。ステップカウントの値がt=60
秒後に変化しなかったため、2分目にイベントは生成されません。
ワンショット
イベントが検出されると、センサーはそれ自体を非アクティブ化し、HALを介して単一のイベントを送信します。競合状態を回避するための注文事項。 (イベントがHALを通じて報告される前に、センサーを非アクティブ化する必要があります)。センサーが再アクティブ化されるまで、他のイベントは送信されません。重要な動きは、この種のセンサーの例です。
ワンショットセンサーは、トリガーセンサーと呼ばれることもあります。
batch
関数に渡されたsampling_period_ns
およびmax_report_latency_ns
パラメーターは無視されます。ワンショットイベントからのイベントは、ハードウェアFIFOに保存できません。イベントは、生成されたらすぐに報告する必要があります。
特殊
イベントがいつ生成されるかについての詳細は、個々のセンサータイプの説明を参照してください。