報告模式

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

連續

事件以傳遞給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=0t=60秒),總共有 7 個事件。第二分鐘沒有事件生成,因為步數的值在t=60秒後沒有改變。

一發

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

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

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

特別的

有關何時生成事件的詳細信息,請參閱各個傳感器類型說明