การตรวจจับ Jam

ดูแหล่งข้อมูลใน GitHub

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

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

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

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

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

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

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

ใน OpenThread API และ wpantundProperties คุณสามารถดูบิตแมปของ 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 ที่กําหนดค่าไว้

การตรวจหา OT Jam

วิธีเปิดใช้

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

กําหนด

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

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

เช่น หากต้องการขอสถานะการตรวจจับ 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