כדי לאפשר הגדרה של מנגנון לזיהוי חסימות אותות בכל צומת ב-OpenThread, יש להפעיל את התכונה 'זיהוי Jam'.
התכונה הזו שימושית לאישורי מכשיר שמחייבים יכולת לזהות חסימות של אותות בערוץ מסוים. אפשר להגדיר אותה כך שתעמוד בדרישות של כל סוג הסמכה.
איך זה עובד
זיהוי Jam עוקב אחר ה-RSSI (מחוון קבלת חוזק האות) של צומת במהלך חלונות זמן שצוינו כדי לקבוע אם הערוץ נתקע.
כשזיהוי Jam מופעל:
- ההגדרה של זיהוי ה-Jam מוגדרת ל
false
. - הצומת דוגם את ה-RSSI מספר פעמים בכל פרק זמן של שנייה אחת.
- אם ה-RSSI מעל כל המרווח השני הזה נותר מעל הסף ה-RSSI שהוגדר עבור כל דגימה, המרווח השני הוא כזה שנתקע.
- אם מספר מצטבר של מרווחים בשנייה אחת נתקע יותר או
שווה למספר המצטבר של התקופה העמוסה המוגדרת בפרק הזמן שצוין, בחלון הזיהוי,
בכל נקודת זמן, מצב זיהוי ה-Jam בנקודת הזמן הזאת
מוגדר ל-
true
. - אם מספר מצטבר של מרווחים בשנייה אחת נתקעפחות מ- המספר המצטבר של ההגדרותתקופה לא פנויה שניות בתוך ההגדרה הקודמתחלון זיהוי שניות בכל נקודת זמן, מצב זיהוי ה-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
לפי אפשרות
לחלופין, אפשר להשתמש באפשרות ה-build של -DOT_JAM_DETECTION=ON
כשבונים
OpenThread:
./script/build -DOT_JAM_DETECTION=ON
פרמטרים
את הפרמטרים לזיהוי Jam אפשר להגדיר רק דרך ה-API של OpenThread, דרך
הפרוטוקולSpinel או wpanctl
, באמצעות כלי שורת הפקודה wpantund
עבור ניהול רשת במעבד משותף (NCP). ערכי ברירת המחדל מופעלים אם התכונה מופעלת
ללא תצורה נוספת.
ניתן להתאים אישית את התכונה באמצעות הפרמטרים הבאים:
פרמטרים | |||||
---|---|---|---|---|---|
סף RSSI |
|
||||
חלון זיהוי |
|
||||
תקופת העומס |
|
API
OpenThread
באמצעות API לזיהוי Jam אפשר לנהל את התכונה 'זיהוי Jam' ישירות באפליקציית OpenThread. ה-API של OpenThread מספק את הפונקציונליות הבאה:
- הפעלה והפסקה של התכונה
- צפייה במצב הזיהוי של ה-Jam
- ניהול כל הפרמטרים
- אחזור מפת הסיביות הנוכחית של זיהוי זיהוי Jam
- רישום של פונקציית קריאה חוזרת כדי לזהות מסמך 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 של זיהוי Jam ל- -45 dBm ב-NCP:
sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45
ניתן לקבל מידע נוסף עלwpantund
מאפיינים, עיינו במאפייניםwpantund
מאגר GitHub הנתונים.