報告方式

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

連續的

事件以恆定的速率生成,該速率由傳遞給batch函數的sampling_period_ns參數定義。使用連續報告模式的示例傳感器是加速度計陀螺儀

不斷變化

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

傳遞給batch函數的sampling_period_ns參數用於設置兩次連續事件之間的最短時間,這意味著直到上次事件發生後再經過sampling_period_ns _ns_ns納秒後才生成事件,即使此後該值發生了變化。如果該值改變,必須盡快產生一個事件sampling_period_ns自上次事件已經過去。

例如,假設:

  • 我們以sampling_period_ns = 10 * 10^9 (10秒)激活步數計數器。
  • 我們走了55秒鐘,然後停了1分鐘。
  • 在第一分鐘(包括由於傳感器激活而在時間t=0且在t=60秒處的時間t=0大約每10秒產生一次事件,總共七個事件。由於t=60秒後步數的值沒有變化,因此第二分鐘不會產生任何事件。

一槍

在檢測到事件後,傳感器會自行停用,然後通過HAL發送單個事件。為了避免比賽條件,訂購很重要。 (必須先禁用傳感器,然後才能通過HAL報告事件)。除非重新激活傳感器,否則不會發送其他事件。明顯的運動就是這種傳感器的一個例子。

單發傳感器有時稱為觸發傳感器。

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

特別的

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