اكتشاف محتوى Jam

عرض المصدر على GitHub

لتوفير آلية قابلة للتهيئة لاكتشاف تشويش الإشارات في أي عقدة OpenThread، مكّن ميزة "اكتشاف محتوى Jam".

هذه الميزة مفيدة لشهادات الأجهزة التي تتطلب القدرة على اكتشاف تشويش الإشارات على قناة معينة. يمكن تهيئته لاستيفاء متطلبات كل نوع من الشهادات.

آلية العمل

ترصد ميزة "رصد محتوى Jam" مؤشر RSSI (مؤشر قوة الإشارة المستلَمة) لأي عقدة خلال فترات زمنية محدّدة لتحديد ما إذا كان قد تمّ تشويش القناة.

عند تفعيل اكتشاف محتوى Jam:

  1. تم ضبط حالة اكتشاف محتوى Jam على false.
  2. تأخذ العقدة عينة RSSI عدة مرات خلال كل فاصل زمني مدته ثانية واحدة.
  3. إذا بقي مؤشر RSSI خلال هذه الفاصل الزمني لثانية واحدة أعلى من الحد الأدنى الذي يتم ضبطه على RSSI لكلّ عيّنة، سيُعتبَر الفاصل الزمني لثانية واحدة هذا مكتظًا.
  4. إذا كان العدد الإجمالي للفواصل الزمنية التي تبلغ مدتها ثانية واحدة مزدحمًا بها أكثر من أو مساويًا له للعدد الإجمالي لثواني فترة الانشغال التي تم ضبطها خلال فترة الاكتشاف التي تم إعدادها سابقًا في أي وقت، يتم ضبط "حالة اكتشاف محتوى Jam" في هذه النقطة الزمنية على true.
  5. إذا كان العدد الإجمالي للفواصل الزمنية التي تبلغ مدتها ثانية واحدة وأقل من العدد أقل من العدد المجمّع لثواني فترة الانشغال المهيأة ضمن ثوانٍ في فترة الكشف التي تم ضبطها في أي وقت، يتم ضبط "حالة اكتشاف محتوى Jam" في هذه المرحلة على false.

الصورة النقطية التاريخية

في واجهة برمجة تطبيقات 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 ديسيبل ميلي واط هي حد RSSI المهيأ:

اكتشاف محتوى 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" إلا من خلال واجهة برمجة تطبيقات OpenThread أو بروتوكول Spinel أو أداة سطر الأوامر wpantund في "wpanctl" لإدارة المعالج المشارك للشبكة (NCP). يتم تطبيق القيم الافتراضية إذا تم تمكين الميزة بدون تهيئة لاحقة.

يمكنك تخصيص هذه الميزة باستخدام المَعلمات التالية:

المعلَمات
الحد الأدنى لترميز RSSI
القيمة التلقائية
0 ديسيبل ملي واط
الوصف
تحدّد هذه السياسة الحد الأدنى لمستوى RSSI بوحدة ديسيبل ميلي واط، والتي يجب الأخذ بالاعتبار قيمة القناة فيها.
نافذة الكشف
القيمة التلقائية
63 ثانية
الوصف
لتحديد النافذة بالثواني للتحقق من ازدحام الإشارة. النطاق: 1-63.
فترة الانشغال
القيمة التلقائية
63 ثانية
الوصف
لتحديد عدد الثواني المجمّعة ضمن نافذة الكشف التي يجب أن يكون فيها مؤشر RSSI أعلى من حد RSSI لتشغيل اكتشاف Jam. يجب أن يكون أصغر من نافذة الاكتشاف. النطاق: 1-63.

واجهة برمجة التطبيقات

OpenThread

استخدِم واجهة برمجة تطبيقات اكتشاف Jam لإدارة ميزة اكتشاف Jam مباشرةً في تطبيق OpenThread. توفر واجهة برمجة تطبيقات OpenThread الوظائف التالية:

  • بدء الميزة وإيقافها
  • عرض حالة اكتشاف محتوى Jam
  • إدارة جميع المعلمات
  • استرداد الصورة النقطية الحالية لسجل اكتشاف محتوى Jam
  • تسجيل دالة رد اتصال عند رصد محتوى Jam

سبينل

يتيح بروتوكول Spinel لجهاز مضيف إمكانية التواصل مباشرةً مع NCP. يعرض هذا البروتوكول خصائص اكتشاف محتوى Jam في openthread/src/lib/spinel/spinel.h التي توفّر الوظائف التالية:

  • بدء الميزة وإيقافها
  • عرض حالة اكتشاف محتوى Jam
  • إدارة جميع المعلمات
  • استرداد الصورة النقطية الحالية لسجل اكتشاف محتوى Jam

واجهة سطر الأوامر

OpenThread

لا توجد أوامر CLI لـ OpenThread ذات صلة بهذه الميزة.

بانتند

استخدِم واجهة سطر الأوامر wpanctl لإدارة ميزة "رصد محتوى Jam" لإعداد NCP في OpenThread. تحتفظ wpantund بجميع إعدادات اكتشاف Jam عند إعادة ضبط NCP.

يوفر wpanctl إمكانية الدخول إلى خصائص wpantund التالية:

أماكن إقامة
JamDetection:Status
التنسيق
منطقي
الوصف
للقراءة فقط. حالة اكتشاف محتوى Jam يشير إلى ما إذا كان هناك تشويش في الإشارة حاليًا أم لا.
JamDetection:Enable
التنسيق
منطقي
الوصف
تفعيل ميزة "رصد محتوى Jam" أو إيقافها
JamDetection:RssiThreshold
التنسيق
ديسيبل ملي واط
الوصف
تحدّد هذه السياسة الحد الأدنى لمستوى 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 ديسيبل ميلي واط على NCP:

sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45

لمزيد من المعلومات عن مواقع wpantund، اطّلع على مستودع wpantund GitHub.