หากต้องการระบุกลไกที่กําหนดค่าได้สําหรับการตรวจหาสัญญาณรบกวนในโหนด OpenThread ใดก็ตาม ให้เปิดใช้ฟีเจอร์ Jam Detection
ฟีเจอร์นี้มีประโยชน์สําหรับการรับรองอุปกรณ์ที่ต้องใช้ความสามารถในการตรวจหาสัญญาณรบกวนในช่องทางที่เฉพาะเจาะจง โดยกําหนดค่าให้มีคุณสมบัติตามข้อกําหนดของการรับรองแต่ละประเภท
วิธีการทำงาน
Jam Detection จะตรวจสอบ RSSI (เครื่องบ่งชี้ความแรงของสัญญาณที่ได้รับ) ของโหนดในช่วงเวลาที่ระบุเพื่อระบุว่า Jam ในช่องหรือไม่
สิ่งที่จะเกิดขึ้นเมื่อเปิดใช้การตรวจหา Jam
- ตั้งค่าสถานะการตรวจจับ Jam เป็น
false
- โหนดจะสุ่มตัวอย่าง RSSI หลายครั้งในช่วงเวลาแต่ละวินาที
- หาก RSSI ในช่วงระยะเวลา 1 วินาทีนั้นยังคงสูงกว่าเกณฑ์ RSSI ที่กําหนดค่าไว้สําหรับตัวอย่างทั้งหมด ระบบจะถือว่าช่วงเวลา 1 วินาทีนั้นติด
- หากจํานวนรวมของช่วงเวลาติดขัด 1 วินาทีคือมากกว่า หรือ
เท่ากับ จํานวนรวมของการกําหนดค่าช่วงเวลาที่ไม่ว่าง
วินาทีภายในที่กําหนดค่าไว้ก่อนหน้านี้หน้าต่างการตรวจจับ ในเวลาใดก็ตาม สถานะการตรวจหา Jam ในตอนนั้นจะได้รับการตั้งค่าเป็น
true
ของ Google Play - หากจํานวนรวมของช่วงเวลาติดขัด 1 วินาทีคือน้อยกว่า จํานวนรวมของการกําหนดค่าช่วงเวลาที่ไม่ว่าง วินาทีภายใน
ก่อนหน้านี้ที่กําหนดค่าไว้หน้าต่างการตรวจจับ ในเวลาใดก็ตาม สถานะการตรวจหา Jam ในตอนนั้นได้รับการตั้งค่าเป็น
false
ของ Google Play
บิตแมปประวัติ
ใน OpenThread API และ wpantund
Properties คุณสามารถดูบิตแมปของ 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
สําหรับการจัดการ Network Co-Processor (NCP) เท่านั้น ระบบจะใช้ค่าเริ่มต้นหากมีการเปิดใช้ฟีเจอร์ดังกล่าวโดยไม่มีการกําหนดค่าภายหลัง
ปรับแต่งฟีเจอร์นี้โดยใช้พารามิเตอร์ต่อไปนี้
พารามิเตอร์ | |||||
---|---|---|---|---|---|
เกณฑ์ RSSI |
|
||||
หน้าต่างการตรวจจับ |
|
||||
ช่วงเวลาที่ไม่ว่าง |
|
API
OpenThread
ใช้ Jam Detection API เพื่อจัดการฟีเจอร์ Jam Detection ในแอปพลิเคชัน OpenThread ได้โดยตรง OpenThread API มีฟังก์ชันการทํางานต่อไปนี้
- เริ่มและหยุดฟีเจอร์นี้
- ดูสถานะการตรวจหา Jam
- จัดการพารามิเตอร์ทั้งหมด
- เรียกข้อมูลบิตแมปของประวัติการตรวจหา Jam ปัจจุบัน
- ลงทะเบียนฟังก์ชันเรียกกลับสําหรับเมื่อพบ Jam
กระดูกสันหลัง
โปรโตคอล Spinel จะช่วยให้อุปกรณ์โฮสต์สื่อสารกับ NCP ได้โดยตรง
โปรโตคอลนี้แสดงพร็อพเพอร์ตี้การตรวจหา Jam ใน openthread/src/lib/spinel/spinel.h
ซึ่งมีฟังก์ชันการทํางานต่อไปนี้
- เริ่มและหยุดฟีเจอร์นี้
- ดูสถานะการตรวจหา Jam
- จัดการพารามิเตอร์ทั้งหมด
- เรียกข้อมูลบิตแมปของประวัติการตรวจหา Jam ปัจจุบัน
CLI
OpenThread
ไม่มีคําสั่ง CLI ของ OpenThread ที่เกี่ยวข้องกับฟีเจอร์นี้
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
โปรดดูwpantund
ที่เก็บ GitHub ของ Google Play