感應器可以透過不同的方式 (稱為回報模式) 產生事件;每種感應器類型只會關聯一個回報模式。共有四種報表模式。
連續
系統會以固定速率產生事件,該速率是由傳遞至 batch
函式的 sampling_period_ns
參數定義。使用持續回報模式的感應器範例包括加速計和陀螺儀。
On-change
只有在測量值有變更時,系統才會產生事件。
在 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_ns
和 max_report_latency_ns
參數。單次事件的事件無法儲存在硬體 FIFO 中,事件一產生就必須回報。
特別節目
如要瞭解事件的產生時機,請參閱個別感應器類型說明。