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