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