報告模式

感測器可以以不同的方式產生事件,稱為報告模式;每種感測器類型都有一種且僅有一種與其關聯的報告模式。存在四種報告模式。

連續的

事件以恆定速率生成,此恆定速率由傳遞給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 秒,然後靜止一分鐘。
  • 在第一分鐘內,事件大約每 10 秒產生一次(包括由於感測器啟動而導致的時間t=0 ,以及t=60秒),總共有 7 個事件。第二分鐘沒有事件生成,因為步數的值在t=60秒後沒有變化。

一擊

偵測到事件後,感測器會自行停用,然後透過 HAL 發送單一事件。順序很重要,可以避免競爭條件。 (在透過 HAL 報告事件之前必須停用感測器)。在感測器重新啟動之前不會發送其他事件。明顯的運動就是這種感測器的例子。

一次性感測器有時稱為觸發感測器。

傳遞給batch函數的sampling_period_nsmax_report_latency_ns參數將被忽略。來自一次性事件的事件無法儲存在硬體 FIFO 中;事件一產生就必須立即報告。

特別的

有關事件產生時間的詳細信息,請參閱各個感測器類型的說明