تشخیص جم، تشخیص جم

مشاهده منبع در GitHub

برای ارائه مکانیزم قابل تنظیم برای تشخیص پارازیت سیگنال در هر گره OpenThread، ویژگی Jam Detection را فعال کنید.

این ویژگی برای گواهینامه های دستگاهی که به توانایی تشخیص پارازیت سیگنال در یک کانال خاص نیاز دارند، مفید است. می توان آن را برای برآورده کردن الزامات هر نوع گواهی پیکربندی کرد.

چگونه کار می کند

تشخیص جم، RSSI (نشانگر قدرت سیگنال دریافتی) یک گره را در طول بازه‌های زمانی مشخص بررسی می‌کند تا مشخص کند آیا کانال مسدود شده است یا خیر.

هنگامی که تشخیص جم فعال است:

  1. وضعیت تشخیص جم روی false تنظیم شده است.
  2. گره از RSSI چندین بار در هر بازه یک ثانیه نمونه برداری می کند.
  3. اگر RSSI در کل بازه یک ثانیه ای بالاتر از آستانه RSSI پیکربندی شده برای هر نمونه باقی بماند، آن بازه یک ثانیه گیر کرده در نظر گرفته می شود.
  4. اگر تعداد مجموع فواصل یک ثانیه ای پارازیت شده بیشتر یا مساوی با تعداد کل ثانیه های دوره اشغال پیکربندی شده در ثانیه های پنجره تشخیص پیکربندی شده قبلی در هر نقطه از زمان باشد، وضعیت تشخیص جم در آن نقطه از زمان روی true تنظیم می شود.
  5. اگر تعداد کل بازه‌های یک ثانیه‌ای گیر کرده کمتر از تعداد کل ثانیه‌های دوره اشغال پیکربندی‌شده در ثانیه‌های پنجره تشخیص پیکربندی شده قبلی در هر نقطه از زمان باشد، وضعیت تشخیص جم در آن نقطه از زمان روی false تنظیم می‌شود.

تاریخچه بیت مپ

در OpenThread API و خواص wpantund ، یک بیت مپ از 63 ثانیه قبل برای بازیابی در دسترس است. این بیت مپ نشان می دهد که آیا RSSI از آستانه RSSI پیکربندی شده در هر یک از 63 ثانیه قبل عبور کرده است یا خیر.

برای مثال، ممکن است بیت مپ زیر را بازیابی کنید:

0xC248068C416E7FF0

تبدیل به باینری هر نمونه ای را تولید می کند که RSSI در طول 63 ثانیه قبل از آستانه RSSI پیکربندی شده بالاتر رفت:

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000

اگر پنجره تشخیص روی 16 ثانیه و دوره اشغال روی 8 ثانیه تنظیم شود، حالت تشخیص جام در 51 ثانیه true می شود، زیرا این اولین موردی است که آستانه RSSI در گذشته حداقل 8 ثانیه تمام شده است. 16 ثانیه در این مثال، وضعیت تشخیص Jam برای 13 ثانیه آینده true باقی می ماند.

11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
                                      [00001 01101110 011] = 8 in 16

این بیت مپ ممکن است با نمودار زیر نشان داده شود، اگر -45 dBm آستانه RSSI پیکربندی شده باشد:

OT Jam Detection

نحوه فعال کردن

این ویژگی به طور پیش فرض غیرفعال است.

با تعریف

برای فعال کردن Jam Detection، قبل از ساخت OpenThread ، OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE را در فایل openthread/src/core/config/openthread-core-default-config.h به عنوان 1 تعریف کنید:

#ifndef OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
#define OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE 1
#endif

توسط گزینه

همچنین، هنگام ساخت OpenThread از گزینه ساخت -DOT_JAM_DETECTION=ON استفاده کنید:

./script/build -DOT_JAM_DETECTION=ON

پارامترها

پارامترهای Jam Detection را فقط می توان از طریق OpenThread API، پروتکل Spinel یا wpanctl ، ابزار خط فرمان wpantund برای مدیریت شبکه Co-Processor (NCP) پیکربندی کرد. اگر ویژگی بدون پیکربندی بعدی فعال شود، مقادیر پیش‌فرض اعمال می‌شوند.

این ویژگی را با استفاده از پارامترهای زیر سفارشی کنید:

پارامترها
آستانه RSSI
مقدار پیش فرض
0 dBm
توضیحات
سطح آستانه RSSI را بر حسب dBm مشخص می کند که بالاتر از آن کانال مسدود شده در نظر گرفته شود.
پنجره تشخیص
مقدار پیش فرض
63 ثانیه
توضیحات
پنجره ای را در چند ثانیه مشخص می کند که در آن پارازیت سیگنال بررسی شود. برد: 1-63.
دوره پرمشغله
مقدار پیش فرض
63 ثانیه
توضیحات
تعداد ثانیه‌های مجموع را در پنجره تشخیص مشخص می‌کند که در آن RSSI باید بالاتر از آستانه RSSI باشد تا تشخیص جمجمه فعال شود. باید کوچکتر از پنجره تشخیص باشد. برد: 1-63.

API

OpenThread

از Jam Detection API برای مدیریت ویژگی Jam Detection به طور مستقیم در برنامه OpenThread خود استفاده کنید. OpenThread API عملکرد زیر را ارائه می دهد:

  • ویژگی را شروع و متوقف کنید
  • وضعیت تشخیص جام را مشاهده کنید
  • تمام پارامترها را مدیریت کنید
  • بیت مپ تاریخچه Jam Detection فعلی را بازیابی کنید
  • برای زمانی که پارگی شناسایی می شود، یک عملکرد برگشت به تماس را ثبت کنید

اسپینل

پروتکل اسپینل یک دستگاه میزبان را قادر می سازد تا مستقیماً با یک NCP ارتباط برقرار کند. این پروتکل ویژگی‌های Jam Detection را در openthread/src/lib/spinel/spinel.h نشان می‌دهد که عملکرد زیر را ارائه می‌کند:

  • ویژگی را شروع و متوقف کنید
  • وضعیت تشخیص جام را مشاهده کنید
  • تمام پارامترها را مدیریت کنید
  • بیت مپ تاریخچه Jam Detection فعلی را بازیابی کنید

CLI

OpenThread

هیچ دستور OpenThread CLI مربوط به این ویژگی وجود ندارد.

wpantund

از wpanctl CLI برای مدیریت ویژگی Jam Detection برای پیکربندی OpenThread NCP استفاده کنید. wpantund تمام پیکربندی‌های Jam Detection را پس از تنظیم مجدد NCP حفظ می‌کند.

wpanctl دسترسی به ویژگی های wpantund زیر را فراهم می کند:

خواص
JamDetection:Status
قالب
بولی
توضیحات
فقط بخوانید. وضعیت تشخیص جام. نشان می دهد که آیا یک سیگنال گیر در حال حاضر شناسایی شده است.
JamDetection:Enable
قالب
بولی
توضیحات
قابلیت تشخیص Jam را فعال یا غیرفعال کنید.
JamDetection:RssiThreshold
قالب
dBm
توضیحات
سطح آستانه RSSI را در dBm مشخص می کند که بالاتر از آن کانال مسدود شده در نظر گرفته شود.
JamDetection:Window
قالب
ثانیه
توضیحات
پنجره ای را در چند ثانیه مشخص می کند که در آن پارازیت سیگنال بررسی شود. برد: 1-63.
JamDetection:BusyPeriod
قالب
ثانیه
توضیحات
تعداد ثانیه‌های مجموع را در JamDetection:Window که در آن RSSI باید بالاتر از JamDetection:RssiThreshold باشد تا شناسایی Jam را فعال کند، مشخص می‌کند. باید کوچکتر از JamDetection:Window باشد. برد: 1-63.
JamDetection:Debug:HistoryBitmap
قالب
مقدار 64 بیتی
توضیحات
اطلاعاتی درباره تاریخچه وضعیت تشخیص جام برای اهداف نظارت و اشکال‌زدایی ارائه می‌کند.

به عنوان مثال، برای دریافت حالت تشخیص Jam برای یک NCP:

sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false

برای تنظیم آستانه تشخیص جمجمه RSSI روی -45 دسی بل در یک NCP:

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

برای اطلاعات بیشتر در مورد ویژگی‌های wpantund ، به مخزن wpantund GitHub مراجعه کنید.