การตรวจจับ Jam

ดูแหล่งข้อมูลใน GitHub

หากต้องการมีกลไกที่กำหนดค่าได้สำหรับการตรวจจับการรบกวนสัญญาณในโหนด OpenThread ใดก็ตาม ให้เปิดใช้ฟีเจอร์การตรวจจับการรบกวน

ฟีเจอร์นี้มีประโยชน์สำหรับการรับรองอุปกรณ์ที่ต้องมีความสามารถในการ ตรวจจับการรบกวนสัญญาณในช่องที่เฉพาะเจาะจง โดยสามารถกำหนดค่าให้เป็นไปตาม ข้อกำหนดของการรับรองแต่ละประเภทได้

วิธีการทำงาน

การตรวจจับการรบกวนจะตรวจสอบ RSSI (ตัวบ่งชี้ความแรงของสัญญาณที่ได้รับ) ของโหนด ในช่วงเวลาที่ระบุเพื่อพิจารณาว่าช่องถูก รบกวนหรือไม่

เมื่อเปิดใช้การตรวจจับการรบกวน

  1. ระบบจะตั้งค่าสถานะการตรวจจับการรบกวนเป็น false
  2. โหนดจะสุ่มตัวอย่าง RSSI หลายครั้งในช่วงเวลา 1 วินาทีแต่ละช่วง
  3. หาก RSSI ในช่วงเวลา 1 วินาทีทั้งหมดนั้นยังคงสูงกว่าเกณฑ์ RSSI ที่กำหนดค่าไว้สำหรับทุกตัวอย่าง ระบบจะถือว่าช่วงเวลา 1 วินาทีนั้นถูกรบกวน
  4. หากจำนวนช่วง 1 วินาทีที่ถูกรบกวนโดยรวมมากกว่าหรือ เท่ากับจำนวนวินาทีช่วงเวลาที่มีการใช้งานหนาแน่นที่กำหนดค่าไว้โดยรวม ภายในกรอบเวลาการตรวจหาที่กำหนดค่าไว้ก่อนหน้า ณ จุดใดก็ตาม ระบบจะตั้งค่าสถานะการตรวจหาการรบกวน ณ จุดนั้น เป็น true
  5. หากจำนวนช่วงเวลา 1 วินาทีที่ถูกรบกวนโดยรวมน้อยกว่าจำนวนวินาทีช่วงเวลาที่ยุ่งที่กำหนดค่าโดยรวมภายในหน้าต่างการตรวจหาที่กำหนดค่าก่อนหน้า ณ จุดใดก็ตามในเวลาใดก็ตาม ระบบจะตั้งค่าสถานะการตรวจจับการรบกวน ณ จุดนั้นเป็น false

บิตแมปประวัติ

ใน OpenThread API คุณจะดึงบิตแมปของ 63 วินาทีก่อนหน้าได้ บิตแมปนี้ระบุว่า RSSI ข้ามเกณฑ์ RSSI ที่กำหนดค่าไว้ในแต่ละ 63 วินาทีก่อนหน้าหรือไม่

เช่น คุณอาจดึงบิตแมปต่อไปนี้

0xC248068C416E7FF0

การแปลงเป็นไบนารีจะสร้างทุกอินสแตนซ์ที่ RSSI สูงกว่า เกณฑ์ RSSI ที่กำหนดค่าไว้ในช่วง 63 วินาทีก่อนหน้า

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

หากตั้งค่าหน้าต่างการตรวจจับเป็น 16 วินาที และตั้งค่าช่วงเวลาที่สัญญาณรบกวนเป็น 8 วินาที สถานะการตรวจจับการรบกวนจะกลายเป็น true ที่ 51 วินาที เนื่องจากเป็นอินสแตนซ์แรกที่เกินเกณฑ์ RSSI อย่างน้อย 8 วินาทีเต็มใน 16 วินาทีก่อนหน้า ในตัวอย่างนี้ สถานะการตรวจจับการรบกวนจะยังคงเป็น true ในอีก 13 วินาทีข้างหน้า

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

บิตแมปนี้อาจแสดงด้วยกราฟต่อไปนี้ หาก -45 dBm เป็น เกณฑ์ RSSI ที่กำหนดค่าไว้

การตรวจจับการรบกวน OT

วิธีเปิดใช้

ฟีเจอร์นี้ปิดใช้อยู่โดยค่าเริ่มต้น

โดยการกำหนด

หากต้องการเปิดใช้การตรวจจับการรบกวน ให้กำหนด OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE เป็น 1 ในไฟล์ openthread/src/core/config/openthread-core-default-config.h ก่อนสร้าง OpenThread

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

ตามตัวเลือก

หรือใช้-DOT_JAM_DETECTION=ONตัวเลือกการสร้างเมื่อสร้าง OpenThread

./script/build -DOT_JAM_DETECTION=ON

พารามิเตอร์

คุณจะกำหนดค่าพารามิเตอร์การตรวจจับการรบกวนได้ผ่าน OpenThread API หรือโปรโตคอล Spinel เท่านั้น ระบบจะใช้ค่าเริ่มต้นหากเปิดใช้ฟีเจอร์ โดยไม่มีการกำหนดค่าในภายหลัง

ปรับแต่งฟีเจอร์นี้โดยใช้พารามิเตอร์ต่อไปนี้

พารามิเตอร์
เกณฑ์ RSSI
ค่าเริ่มต้น
0 dBm
คำอธิบาย
ระบุระดับ RSSI ที่เป็นเกณฑ์ในหน่วย dBm ซึ่งสูงกว่าระดับที่ถือว่าช่องถูกรบกวน
หน้าต่างการตรวจจับ
ค่าเริ่มต้น
63 วินาที
คำอธิบาย
ระบุหน้าต่างเป็นวินาทีเพื่อตรวจสอบการรบกวนสัญญาณ ช่วง: 1-63
ช่วงเวลาที่มีการใช้งานหนาแน่น
ค่าเริ่มต้น
63 วินาที
คำอธิบาย
ระบุจำนวนวินาทีรวมภายในหน้าต่างการตรวจหาที่ RSSI ต้องสูงกว่าเกณฑ์ RSSI เพื่อทริกเกอร์การตรวจหาการรบกวน ต้องเล็กกว่าหน้าต่างการตรวจหา ช่วง: 1-63

API

OpenThread

ใช้ Jam Detection API เพื่อ จัดการฟีเจอร์ Jam Detection โดยตรงในแอปพลิเคชัน OpenThread OpenThread API มีฟังก์ชันการทำงานต่อไปนี้

  • เริ่มและหยุดใช้ฟีเจอร์
  • ดูสถานะการตรวจจับการติดขัด
  • จัดการพารามิเตอร์ทั้งหมด
  • เรียกข้อมูลบิตแมปประวัติการตรวจจับการรบกวนปัจจุบัน
  • ลงทะเบียนฟังก์ชันเรียกกลับเมื่อตรวจพบการติดขัด

สปิเนล

โปรโตคอล Spinel ช่วยให้อุปกรณ์โฮสต์สื่อสารกับ NCP ได้โดยตรง โปรโตคอลนี้จะแสดงพร็อพเพอร์ตี้การตรวจจับการรบกวนใน openthread/src/lib/spinel/spinel.h ซึ่งมีฟังก์ชันการทำงานต่อไปนี้

  • เริ่มและหยุดใช้ฟีเจอร์
  • ดูสถานะการตรวจจับการติดขัด
  • จัดการพารามิเตอร์ทั้งหมด
  • เรียกข้อมูลบิตแมปประวัติการตรวจจับการรบกวนปัจจุบัน

CLI

OpenThread

ไม่มีคำสั่ง OpenThread CLI ที่เกี่ยวข้องกับฟีเจอร์นี้