หากต้องการระบุกลไกที่กำหนดค่าได้สำหรับการตรวจจับสัญญาณรบกวนบนโหนด OpenThread ให้เปิดใช้ฟีเจอร์การตรวจจับสัญญาณรบกวน
ฟีเจอร์นี้มีประโยชน์สำหรับการรับรองอุปกรณ์ที่ต้องมีความสามารถในการตรวจจับสัญญาณรบกวนบนช่องที่เฉพาะเจาะจง โดยสามารถกําหนดค่าให้เป็นไปตามข้อกําหนดของการรับรองแต่ละประเภท
วิธีการทำงาน
การตรวจหาสัญญาณรบกวนจะตรวจสอบ RSSI (ตัวบ่งชี้ความแรงของสัญญาณที่ได้รับ) ของโหนดในช่วงเวลาที่ระบุเพื่อพิจารณาว่าช่องถูกรบกวนหรือไม่
สิ่งที่จะเกิดขึ้นเมื่อเปิดใช้การตรวจจับสัญญาณรบกวน
- ตั้งค่าสถานะการตรวจจับสัญญาณรบกวนเป็น
false
- โหนดจะสุ่มตัวอย่าง RSSI หลายครั้งในช่วง 1 วินาทีแต่ละครั้ง
- หาก RSSI ในช่วง 1 วินาทีนั้นสูงกว่าเกณฑ์ RSSI ที่กําหนดค่าไว้สําหรับทุกตัวอย่าง ระบบจะถือว่าช่วง 1 วินาทีนั้นถูกรบกวน
- หากจำนวนรวมของช่วงเวลา 1 วินาทีที่มีการรบกวนมากกว่าหรือเท่ากับจำนวนรวมของระยะเวลาที่ไม่ว่างวินาทีที่กำหนดค่าไว้ภายในกรอบเวลาการตรวจจับวินาทีที่กำหนดค่าไว้ก่อนหน้านี้ ณ เวลาใดก็ตาม ระบบจะตั้งค่าสถานะการตรวจจับการขัดข้อง ณ เวลานั้นเป็น
true
- หากจำนวนรวมของช่วงเวลา 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 ที่กําหนดค่าไว้

วิธีเปิดใช้
ฟีเจอร์นี้ปิดใช้อยู่โดยค่าเริ่มต้น
ตามการกําหนด
หากต้องการเปิดใช้การตรวจหา 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 |
|
||||
กรอบเวลาการตรวจจับ |
|
||||
ช่วงไม่ว่าง |
|
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 |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
ตัวอย่างเช่น หากต้องการดูสถานะการตรวจจับสัญญาณรบกวนสำหรับ 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