Chế độ báo cáo

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ế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 sau t=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_nsmax_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.