การตรวจจับ Jam

ดูซอร์สโค้ดใน GitHub

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

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

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

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

สิ่งที่จะเกิดขึ้นเมื่อเปิดใช้การตรวจหา Jam

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

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

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

ตัวอย่างเช่น คุณอาจเรียกบิตแมปต่อไปนี้

0xC248068C416E7FF0

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

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

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

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

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

การตรวจจับการแทรกแซง OT

วิธีเปิดใช้

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

ตามนิยาม

หากต้องการเปิดใช้การตรวจหา Jam ให้กําหนด 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

พารามิเตอร์

สามารถกำหนดค่าพารามิเตอร์ Jam Detection ผ่าน OpenThread API ได้เท่านั้น โปรโตคอล Spinel หรือ wpanctl ซึ่งเป็นเครื่องมือบรรทัดคำสั่ง wpantund สำหรับเครือข่าย การจัดการผู้ประมวลผลข้อมูลร่วม (NCP) จะใช้ค่าเริ่มต้นหากฟีเจอร์ ถูกเปิดใช้งานโดยไม่มีการกำหนดค่าที่ตามมา

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

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

API

OpenThread

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

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

สปิเนล

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

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

CLI

OpenThread

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

wpantund

ใช้ wpanctl CLI เพื่อจัดการฟีเจอร์การตรวจจับ Jam สำหรับ OpenThread NCP การกำหนดค่า wpantund จะเก็บรักษาการกำหนดค่าการตรวจหา Jam ทั้งหมดไว้เมื่อ NCP รีเซ็ต

wpanctl ให้สิทธิ์เข้าถึงพร็อพเพอร์ตี้ wpantund ต่อไปนี้

พร็อพเพอร์ตี้
JamDetection:Status
รูปแบบ
boolean
คำอธิบาย
อ่านอย่างเดียว สถานะการตรวจหา Jam ระบุว่าตรวจพบสัญญาณติดขัดหรือไม่
JamDetection:Enable
รูปแบบ
boolean
คำอธิบาย
เปิดหรือปิดใช้ฟีเจอร์การตรวจหา Jam
JamDetection:RssiThreshold
รูปแบบ
dBm
คำอธิบาย
ระบุระดับ RSSI เกณฑ์เป็น dBm ซึ่งหากสูงกว่านี้ ระบบจะถือว่าช่องถูกบล็อก
JamDetection:Window
รูปแบบ
วินาที
คำอธิบาย
ระบุกรอบเวลาเป็นวินาทีที่ต้องการตรวจหาการติดขัดของสัญญาณ ช่วง: 1-63
JamDetection:BusyPeriod
รูปแบบ
วินาที
คำอธิบาย
ระบุจำนวนวินาทีแบบรวมภายใน JamDetection:Window ซึ่ง RSSI ต้องมากกว่า JamDetection:RssiThreshold จึงจะทริกเกอร์ Jam Detection ได้ ต้องน้อยกว่า JamDetection:Window ช่วง: 1-63
JamDetection:Debug:HistoryBitmap
รูปแบบ
ค่า 64 บิต
คำอธิบาย
ให้ข้อมูลเกี่ยวกับประวัติสถานะการตรวจหา Jam เพื่อวัตถุประสงค์ในการตรวจสอบและการแก้ไขข้อบกพร่อง

เช่น หากต้องการรับสถานะการตรวจหา Jam สำหรับ NCP ให้ทำดังนี้

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

วิธีตั้งค่าเกณฑ์ RSSI ของการตรวจจับสัญญาณรบกวนเป็น -45 dBm ใน NCP

sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45

ดูข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้ wpantund ได้ที่ wpantund GitHub ที่เก็บ