Phát hiện Jam

Xem nguồn trên GitHub

Để cung cấp một cơ chế có thể định cấu hình để phát hiện hiện tượng gây nhiễu tín hiệu trên mọi nút OpenThread, hãy bật tính năng Phát hiện hiện tượng gây nhiễu.

Tính năng này hữu ích cho những chứng nhận thiết bị yêu cầu khả năng phát hiện hành vi gây nhiễu tín hiệu trên một kênh cụ thể. Bạn có thể định cấu hình để đáp ứng các yêu cầu của từng loại chứng nhận.

Cách hoạt động

Tính năng Phát hiện nhiễu sẽ theo dõi RSSI (chỉ báo cường độ tín hiệu nhận được) của một nút trong các khoảng thời gian cụ thể để xác định xem kênh có bị nhiễu hay không.

Khi tính năng Phát hiện tín hiệu gây nhiễu được bật:

  1. Trạng thái phát hiện nhiễu được đặt thành false.
  2. Nút lấy mẫu RSSI nhiều lần trong mỗi khoảng thời gian một giây.
  3. Nếu RSSI trong toàn bộ khoảng thời gian một giây đó vẫn cao hơn Ngưỡng RSSI đã định cấu hình cho mọi mẫu, thì khoảng thời gian một giây đó được coi là bị nhiễu.
  4. Nếu tổng số khoảng thời gian bị tắc nghẽn là 1 giây lớn hơn hoặc bằng tổng số giây Khoảng thời gian bận đã định cấu hình trong Khoảng thời gian phát hiện đã định cấu hình trước đó tại bất kỳ thời điểm nào, thì Trạng thái phát hiện tắc nghẽn tại thời điểm đó sẽ được đặt thành true.
  5. Nếu tổng số khoảng thời gian bị nhiễu một giây nhỏ hơn tổng số giây Khoảng thời gian bận đã định cấu hình trong Khoảng thời gian phát hiện đã định cấu hình trước đó tại bất kỳ thời điểm nào, thì Trạng thái phát hiện nhiễu tại thời điểm đó sẽ được đặt thành false.

Bitmap nhật ký

Trong OpenThread API, bạn có thể truy xuất một bitmap của 63 giây trước đó. Bitmap này cho biết liệu RSSI có vượt quá Ngưỡng RSSI đã định cấu hình trong mỗi 63 giây trước đó hay không.

Ví dụ: bạn có thể truy xuất bitmap sau:

0xC248068C416E7FF0

Việc chuyển đổi sang hệ nhị phân sẽ tạo ra mọi trường hợp RSSI vượt quá Ngưỡng RSSI đã định cấu hình trong 63 giây trước đó:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

Nếu Detection Window (Khoảng thời gian phát hiện) được đặt thành 16 giây và Busy Period (Khoảng thời gian bận) được đặt thành 8 giây, thì Jam Detection State (Trạng thái phát hiện nhiễu) sẽ là true ở giây thứ 51, vì đó là trường hợp đầu tiên mà RSSI Threshold (Ngưỡng RSSI) vượt quá ít nhất 8 giây trong 16 giây trước đó. Trong ví dụ này, Jam Detection State vẫn là true trong 13 giây tiếp theo.

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
                                      [00001 01101110 011] = 8 in 16

Bitmap này có thể được biểu thị bằng biểu đồ sau đây, nếu -45 dBm là Ngưỡng RSSI được định cấu hình:

Phát hiện tình trạng tắc nghẽn OT

Cách bật

Tính năng này bị tắt theo mặc định.

Theo định nghĩa

Để bật tính năng Phát hiện tắc nghẽn, hãy xác định OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE1 trong tệp openthread/src/core/config/openthread-core-default-config.h, trước khi tạo OpenThread:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

Theo tùy chọn

Hoặc sử dụng lựa chọn xây dựng -DOT_JAM_DETECTION=ON khi xây dựng OpenThread:

./script/build -DOT_JAM_DETECTION=ON

Thông số

Bạn chỉ có thể định cấu hình các thông số Phát hiện nhiễu bằng OpenThread API hoặc giao thức Spinel. Các giá trị mặc định sẽ được áp dụng nếu tính năng này được bật mà không có cấu hình tiếp theo.

Tuỳ chỉnh tính năng này bằng các thông số sau:

Thông số
Ngưỡng RSSI
Giá trị mặc định
0 dBm
Nội dung mô tả
Chỉ định ngưỡng mức RSSI (cường độ tín hiệu nhận được) tính bằng dBm mà khi vượt quá ngưỡng này, kênh sẽ được coi là bị nhiễu.
Khoảng thời gian phát hiện
Giá trị mặc định
63 giây
Nội dung mô tả
Chỉ định khoảng thời gian tính bằng giây để kiểm tra tình trạng gây nhiễu tín hiệu. Phạm vi: 1-63.
Khoảng thời gian bận rộn
Giá trị mặc định
63 giây
Nội dung mô tả
Chỉ định số giây tổng hợp trong Cửa sổ phát hiện mà RSSI phải cao hơn Ngưỡng RSSI để kích hoạt tính năng Phát hiện nhiễu. Phải nhỏ hơn Cửa sổ phát hiện. Phạm vi: 1-63.

API

OpenThread

Sử dụng Jam Detection API để quản lý tính năng Jam Detection (Phát hiện nhiễu) ngay trong ứng dụng OpenThread. API OpenThread cung cấp các chức năng sau:

  • Bắt đầu và dừng tính năng này
  • Xem trạng thái phát hiện nhiễu
  • Quản lý tất cả các thông số
  • Truy xuất bitmap nhật ký Phát hiện tắc nghẽn hiện tại
  • Đăng ký một hàm callback để dùng khi phát hiện thấy tình trạng tắc nghẽn

Đá Spinel

Giao thức Spinel cho phép thiết bị lưu trữ giao tiếp trực tiếp với NCP. Giao thức này hiển thị các thuộc tính Phát hiện nhiễu trong openthread/src/lib/spinel/spinel.h cung cấp chức năng sau:

  • Bắt đầu và dừng tính năng này
  • Xem trạng thái phát hiện nhiễu
  • Quản lý tất cả các thông số
  • Truy xuất bitmap nhật ký Phát hiện tắc nghẽn hiện tại

CLI

OpenThread

Không có lệnh CLI OpenThread nào liên quan đến tính năng này.