Chế độ báo cáo

Cảm biến có thể tạo sự kiện theo nhiều cách 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 liên kết với nó. Hiện có 4 chế độ báo cáo.

Liên tục

Các sự kiện được tạo với tốc độ không đổi được xác định bằng tham số sampling_period_ns đượ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ếcon quay hồi chuyển.

Khi thay đổi

Sự kiện chỉ được tạo nếu các giá trị đo lường đã 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 cảm biến thay đổi được kích hoạt. Ví dụ về các cảm biến sử dụng chế độ báo cáo khi thay đổi là các loại cảm biến đếm bước, cảm biến khoảng cách 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, nghĩa là không được tạo sự kiện cho đến khi sampling_period_ns nano giây trôi qua kể từ sự kiện cuối cùng, ngay cả khi giá trị đã thay đổi kể từ đó. Nếu giá trị thay đổi, 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 đi bộ trong 55 giây, sau đó đứng yên trong một phút.
  • Các sự kiện được tạo khoảng 10 giây một lần trong phút đầu tiên (bao gồm cả tại thời điểm t=0 do việc kích hoạt cảm biến và t=60 giây) cho tổng cộng 7 sự kiện. Không có sự kiện nào được tạo trong phút thứ hai vì giá trị số bước không thay đổi sau t=60 giây.

Một lần

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 thông qua HAL. Thứ tự rất quan trọng để tránh tình trạng tương tranh. (Cảm biến phải được vô hiệu hoá trước khi sự kiện được báo cáo 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 đôi khi được gọi là cảm biến kích hoạt.

Các tham số sampling_period_nsmax_report_latency_ns được truyền đến hàm batch sẽ bị bỏ qua. Không thể lưu trữ các sự kiện từ sự kiện một lần 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 tạo sự kiện.