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

วิธีเปิดใช้
ฟีเจอร์นี้ปิดใช้อยู่โดยค่าเริ่มต้น
ตามคําจํากัดความ
หากต้องการเปิดใช้ Jam Detect ให้กําหนด 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 ได้ผ่าน OpenThread API, โปรโตคอล Spinel หรือ wpanctl
ซึ่งเป็นเครื่องมือบรรทัดคําสั่ง wpantund
สําหรับการจัดการ Network Co-Processor (NCP) เท่านั้น ระบบจะใช้ค่าเริ่มต้นเมื่อเปิดใช้ฟีเจอร์
โดยไม่มีการกําหนดค่าในภายหลัง
ปรับแต่งฟีเจอร์นี้โดยใช้พารามิเตอร์ต่อไปนี้
พารามิเตอร์ | |||||
---|---|---|---|---|---|
เกณฑ์ RSSI |
|
||||
กรอบเวลาการตรวจจับ |
|
||||
ช่วงเวลาที่ไม่ว่าง |
|
API
OpenThread
ใช้ Jam Detection API เพื่อจัดการฟีเจอร์ Jam Detection โดยตรงในแอปพลิเคชัน OpenThread ของคุณ API ของ OpenThread จะมีฟังก์ชันการทํางานดังต่อไปนี้
- เริ่มและหยุดฟีเจอร์นี้
- ดูสถานะการตรวจจับของ Jam
- จัดการพารามิเตอร์ทั้งหมด
- เรียกบิตแมปประวัติการตรวจจับของ Jam ปัจจุบัน
- ลงทะเบียนฟังก์ชันเรียกกลับเมื่อตรวจพบ Jam
สันกระดูกสันหลัง
โปรโตคอลบนสันหนังสือช่วยให้อุปกรณ์ของโฮสต์สื่อสารกับ 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 สําหรับการตรวจหา Jam เป็น -45 dBm ใน NCP ให้ทําดังนี้
sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45
ดูข้อมูลเพิ่มเติมเกี่ยวกับพร็อพเพอร์ตี้ wpantund
ได้ที่ที่เก็บ GitHub ของ wpantund