Các cảm biến có thể tạo sự kiện theo nhiều cách khác nhau, được gọi là chế độ báo cáo; mỗi loại cảm biến chỉ có một chế độ báo cáo duy nhất được liên kết với loại cảm biến đó. Có 4 chế độ báo cáo.
Liên tục
Các sự kiện được tạo ra với tốc độ không đổi do tham số sampling_period_ns
xác định được truyền đến hàm batch
. Ví dụ về các cảm biến sử dụng chế độ báo cáo liên tục là gia tốc kế và con quay hồi chuyển.
Khi thay đổi
Các sự kiện chỉ được tạo nếu các giá trị được đo đã thay đổi.
Việc kích hoạt cảm biến ở cấp HAL (gọi activate(..., enable=1)
trên cảm biến đó) cũng kích hoạt một sự kiện, nghĩa là HAL phải trả về một sự kiện ngay lập tức khi một cảm biến thay đổi được kích hoạt. Các cảm biến ví dụ sử dụng chế độ báo cáo khi có thay đổi là các loại cảm biến đếm bước, cảm biến tiệm cận và cảm biến nhịp tim.
Tham số sampling_period_ns
được truyền đến hàm batch
dùng để đặt thời gian tối thiểu giữa các sự kiện liên tiếp, tức là một sự kiện sẽ không được tạo cho đến khi sampling_period_ns
nano giây trôi qua kể từ sự kiện gần đây nhất, ngay cả khi giá trị đã thay đổi kể từ đó. Nếu giá trị thay đổi, thì một sự kiện phải được tạo ngay khi sampling_period_ns
đã trôi qua kể từ sự kiện gần đây nhất.
Ví dụ: giả sử
- Chúng ta kích hoạt bộ đếm bước bằng
sampling_period_ns = 10 * 10^9
(10 giây). - Chúng ta sẽ đi bộ trong 55 giây, sau đó đứng yên trong 1 phút.
- Các sự kiện được tạo ra khoảng 10 giây một lần trong phút đầu tiên (kể cả tại thời điểm
t=0
do cảm biến được kích hoạt vàt=60
giây), tổng cộng là 7 sự kiện. Không có sự kiện nào được tạo trong phút thứ hai vì giá trị của số bước không thay đổi saut=60
giây.
One-shot
Khi phát hiện một sự kiện, cảm biến sẽ tự huỷ kích hoạt rồi gửi một sự kiện duy nhất thông qua HAL. Thứ tự có vai trò quan trọng để tránh tình trạng tranh đua. (Bạn phải huỷ kích hoạt cảm biến trước khi báo cáo sự kiện thông qua HAL). Không có sự kiện nào khác được gửi cho đến khi cảm biến được kích hoạt lại. Chuyển động đáng kể là một ví dụ về loại cảm biến này.
Cảm biến một lần bắn đôi khi được gọi là cảm biến kích hoạt.
Các tham số sampling_period_ns
và max_report_latency_ns
được truyền đến hàm batch
sẽ bị bỏ qua. Các sự kiện từ sự kiện một lần không thể được lưu trữ trong FIFO phần cứng; các sự kiện phải được báo cáo ngay khi được tạo.
Đặc biệt
Hãy xem phần mô tả từng loại cảm biến để biết thông tin chi tiết về thời điểm các sự kiện được tạo.