報告模式

傳感器可以通過稱為報告模式的不同方式生成事件;每種傳感器類型都有一種且只有一種與其關聯的報告模式。存在四種報告模式。

連續

事件在由定義的恆定速率產生sampling_period_ns參數傳遞給batch功能。使用連續報告模式例如傳感器是加速度計陀螺儀

變化中

僅當測量值發生變化時才會生成事件。激活所述傳感器在HAL水平(調用activate(..., enable=1)在其上)也觸發事件,這意味著當HAL按變化傳感器被激活,必須立即返回一個事件。使用變化報告模式的示例傳感器是計步器、接近度和心率傳感器類型。

sampling_period_ns參數傳遞給batch功能用於設置連續事件之間的最短時間,這意味著不應該發生的事件,直到sampling_period_ns納秒自上次事件後所經歷,即使自那時以來,價值改變。如果該值改變,必須盡快產生一個事件sampling_period_ns自上次事件已經過去。

例如,假設:

  • 我們激活與步驟計數器sampling_period_ns = 10 * 10^9 (10秒)。
  • 我們步行 55 秒,然後靜止一分鐘。
  • 這些事件的第一分鐘期間約每10秒產生的(包括在時間t=0 ,因為傳感器的激活,和t=60秒)時,總共七個事件。在第二分鐘不產生任何事件,因為步驟計數的值後沒有改變t=60秒。

一擊

檢測到事件後,傳感器會自行停用,然後通過 HAL 發送單個事件。為了避免競爭條件,訂單很重要。 (必須在通過 HAL 報告事件之前停用傳感器)。在傳感器重新激活之前不會發送其他事件。顯著運動是這種傳感器的一個例子。

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

sampling_period_nsmax_report_latency_ns傳遞給參數batch功能被忽略。來自一次性事件的事件不能存儲在硬件 FIFO 中;事件一旦產生就必須報告。

特別的

看到各個傳感器類型描述被生成的事件時的描述。