การตรวจจับ Jam

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

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

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

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

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

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

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

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

ใน OpenThread API และพร็อพเพอร์ตี้ wpantund จะมีบิตแมปของ 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

วิธีเปิดใช้

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

ตามการกําหนด

หากต้องการเปิดใช้การตรวจหา 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 build เมื่อสร้าง OpenThread ก็ได้

./script/build -DOT_JAM_DETECTION=ON

พารามิเตอร์

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

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

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

API

OpenThread

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

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

Spinel

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

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

CLI

OpenThread

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

Wpantund

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

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

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

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

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

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

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

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