כדי לספק מנגנון שניתן להגדרה לזיהוי שיבוש אותות בכל צומת OpenThread, צריך להפעיל את התכונה Jam Detection (זיהוי שיבוש).
התכונה הזו שימושית לאישורי מכשירים שנדרשת בהם היכולת לזהות שיבוש אותות בערוץ ספציפי. אפשר להגדיר אותו כך שיעמוד בדרישות של כל סוג של אישור.
איך זה עובד
התכונה 'זיהוי שיבוש' עוקבת אחרי ה-RSSI (אינדיקטור של עוצמת האות המתקבל) של צומת במהלך חלונות זמן מוגדרים, כדי לקבוע אם הערוץ שובש.
כשהתכונה 'זיהוי חסימה' מופעלת:
- הסטטוס של זיהוי שיבוש מוגדר כ
false
. - הצומת דוגם את RSSI מספר פעמים בכל מרווח של שנייה אחת.
- אם עוצמת האות (RSSI) במהלך כל מרווח הזמן של השנייה נשארת מעל סף עוצמת האות שהוגדר לכל דגימה, מרווח הזמן של השנייה נחשב כחסימה.
- אם המספר הכולל של מרווחי זמן של שנייה אחת שבהם הייתה חסימה הוא גדול מהמספר הכולל של שניות התקופה העמוסה שהוגדרו או שווה לו, במהלך חלון הזמן לאיתור שהוגדר לפני כן, בכל נקודת זמן, מצב איתור החסימה באותה נקודת זמן מוגדר ל-
true
. - אם מספר המצטבר של מרווחי זמן של שנייה אחת שבהם הייתה חסימה נמוך ממספר השניות המצטבר של תקופת התפוס שהוגדרה בתוך חלון הזמן לזיהוי שהוגדר לפני כן בכל נקודת זמן, מצב זיהוי החסימה באותה נקודת זמן מוגדר ל-
false
.
מפת סיביות של היסטוריה
ב-OpenThread API, אפשר לאחזר מפת סיביות של 63 השניות הקודמות. מפת הביטים הזו מציינת אם עוצמת האות (RSSI) חצתה את סף עוצמת האות שהוגדר בכל אחת מ-63 השניות הקודמות.
לדוגמה, יכול להיות שתאחזרו את מפת הסיביות הבאה:
0xC248068C416E7FF0
ההמרה לבינארי יוצרת כל מופע של RSSI שעלה מעל סף ה-RSSI שהוגדר במהלך 63 השניות הקודמות:
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
אם חלון הזיהוי מוגדר ל-16 שניות, והתקופה העמוסה מוגדרת ל-8 שניות, מצב זיהוי השיבוש הופך ל-true
אחרי 51 שניות, כי זה המקרה הראשון שבו סף RSSI נחצה למשך 8 שניות שלמות לפחות ב-16 השניות הקודמות. בדוגמה הזו, מצב זיהוי השיבוש נשאר true
למשך 13 השניות הבאות.
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
אם סף RSSI שהוגדר הוא -45 dBm, יכול להיות שייצוג מפת הביטים יהיה כפי שמוצג בתרשים הבא:

איך מפעילים את התכונה
התכונה הזו מושבתת כברירת מחדל.
לפי הגדרה
כדי להפעיל את זיהוי השיבושים, מגדירים את 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
build כשמבצעים build של OpenThread:
./script/build -DOT_JAM_DETECTION=ON
פרמטרים
אפשר להגדיר את הפרמטרים של זיהוי שיבושים רק באמצעות OpenThread API או פרוטוקול Spinel. ערכי ברירת המחדל יחולו אם התכונה תופעל ללא הגדרה נוספת.
אפשר להתאים אישית את התכונה הזו באמצעות הפרמטרים הבאים:
פרמטרים | |||||
---|---|---|---|---|---|
סף RSSI |
|
||||
חלון הזיהוי |
|
||||
תקופה עמוסה |
|
API
OpenThread
אפשר להשתמש ב-Jam Detection API כדי לנהל את התכונה Jam Detection ישירות באפליקציית OpenThread. הפונקציות הבאות זמינות ב-OpenThread API:
- הפעלה והפסקה של התכונה
- הצגת סטטוס זיהוי השיבוש
- ניהול כל הפרמטרים
- אחזור של מפת הסיביות של היסטוריית זיהוי השיבושים הנוכחית
- רישום פונקציית קריאה חוזרת למקרה של זיהוי שיבוש
ספינל
פרוטוקול Spinel מאפשר למכשיר מארח לתקשר ישירות עם NCP.
הפרוטוקול הזה חושף מאפיינים של זיהוי שיבושים ב-openthread/src/lib/spinel/spinel.h
, שמאפשרים את הפעולות הבאות:
- הפעלה והפסקה של התכונה
- הצגת סטטוס זיהוי השיבוש
- ניהול כל הפרמטרים
- אחזור של מפת הסיביות של היסטוריית זיהוי השיבושים הנוכחית
CLI
OpenThread
אין פקודות OpenThread CLI שקשורות לתכונה הזו.