報表模式

感應器可以透過不同的方式產生事件,稱為回報模式;每種感應器類型都會與一個且只有一個回報模式相關聯。報表有四種模式。

連續

事件會以傳遞至 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 秒),總共產生七個事件。因為步數計算的值在 t=60 秒後並未變更,因此第二分鐘不會產生任何事件。

單次

偵測到事件後,感應器會自動停用,然後透過 HAL 傳送單一事件。順序很重要,可避免競爭狀況。(必須先停用感應器,才能透過 HAL 回報事件)。除非感應器重新啟用,否則不會傳送其他事件。重大動作就是這類感應器的例子。

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

系統會忽略傳遞至 batch 函式的 sampling_period_nsmax_report_latency_ns 參數。一次性事件的事件無法儲存在硬體 FIFO 中,必須在產生後立即回報。

特別節目

如要進一步瞭解產生事件的時間,請參閱個別的感應器類型說明