כדי לספק מנגנון להגדרה של זיהוי חסימות אות בכל צומת של OpenThread, צריך להפעיל את התכונה של זיהוי Jam.
התכונה הזו שימושית לאישורים של מכשירים שדורשים זיהוי של קליטת אותות בערוץ ספציפי. אפשר להגדיר אותו כך שיעמוד בדרישות של כל סוג הסמכה.
איך זה עובד
התכונה Jam Detect מפקחת על ה-RSSI (האות שהתקבל בעוצמת האות של אות) עבור צומת במהלך חלונות זמן ספציפיים, כדי לקבוע אם הערוץ נתקע.
כשזיהוי ה-Jam מופעל:
- מצב זיהוי ה-Jam מוגדר ל-
false
. - הצומת דוגם את ה-RSSI מספר פעמים במרווחי זמן של שנייה אחת.
- אם ה-RSSI על פני כל המרווח הזה במשך שנייה נשאר מעל הסף שהוגדר ל-RSSI עבור כל דגימה, המרווח הזה של שנייה נחשב תקוע.
- אם אחד מהחלקים התקפים של שנייה אחת תקועה יותר או שווה למספר המצטבר של התקופות העמוסות בחלון הזיהוי הקודם שהוגדר בכל נקודת זמן, מצב זיהוי ה-Jam בנקודת הזמן הזו יהיה
true
. - אם מספר הפעמים שמרווחי הזמן בין שני כלים תקועים נמוך ממספר השניות המצטבר של התקופה העמוסה שהוגדרו בשעת חלון הזיהוי הקודם שהוגדר בכל נקודת זמן, מצב זיהוי ה-Jam בנקודת הזמן הזו יהיה
false
.
מפת סיביות של ההיסטוריה
בממשקי ה-API של OpenThread ובנכסים של 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
, לפני Open OpenThread:
#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif
לפי אפשרות
לחלופין, יש להשתמש באפשרות ה-build של -DOT_JAM_DETECTION=ON
כשבונים את פרוטוקול OpenThread:
./script/build -DOT_JAM_DETECTION=ON
פרמטרים
אפשר להגדיר פרמטרים לזיהוי Jam רק דרך OpenThread API, באמצעות פרוטוקול Spinel או באמצעות wpanctl
, כלי שורת הפקודה של wpantund
לניהול של רשת משותפת במעבדים (NCP). ערכי ברירת המחדל מוחלים אם התכונה מופעלת ללא הגדרות נוספות.
ניתן להתאים אישית את התכונה הזו באמצעות הפרמטרים הבאים:
פרמטרים | |||||
---|---|---|---|---|---|
סף RSSI |
|
||||
חלון זיהוי |
|
||||
תקופה עמוסה |
|
API
OpenThread
להשתמש ב-Jam Detection API כדי לנהל את תכונת זיהוי ה-Jam ישירות באפליקציית OpenThread. ה-Open API API מספק את הפונקציונליות הבאה:
- הפעלה והפסקה של התכונה
- הצגת מצב זיהוי ה-Jam
- ניהול כל הפרמטרים
- אחזור של מפת סיביות הקיימת של זיהוי Jam
- רישום פונקציית קריאה חוזרת לזיהוי Jam
ספינל
פרוטוקול Spinel מאפשר למכשיר מארח לתקשר ישירות עם NCP.
בפרוטוקול הזה נחשפים נכסים לזיהוי Jam ב-openthread/src/lib/spinel/spinel.h
, שמספקים את הפונקציונליות הבאה:
- הפעלה והפסקה של התכונה
- הצגת מצב זיהוי ה-Jam
- ניהול כל הפרמטרים
- אחזור של מפת סיביות הקיימת של זיהוי Jam
CLI
OpenThread
אין פקודות CLI של OpenThread הקשורות לתכונה הזו.
Wpantund
ב-CLI של wpanctl
אפשר לנהל את התכונה לזיהוי Jam לתצורה של OpenThread NCP. כל ההגדרות של זיהוי ה-Jam נשמרות על ידי wpantund
אחרי איפוס ה-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
זמין במאגר GitHubwpantund
.