Обнаружение замятия, обнаружение замятия

Посмотреть исходный код на GitHub

Чтобы обеспечить настраиваемый механизм обнаружения помех сигнала на любом узле OpenThread, включите функцию обнаружения помех.

Эта функция полезна для сертификации устройств, требующих возможности обнаружения помех сигнала на определенном канале. Его можно настроить в соответствии с требованиями каждого типа сертификации.

Как это работает

Функция обнаружения помех отслеживает RSSI (индикатор уровня принимаемого сигнала) узла в течение заданных периодов времени, чтобы определить, не было ли помех в канале.

Когда обнаружение замятия включено:

  1. Для состояния обнаружения замятия установлено значение false .
  2. Узел производит выборку RSSI несколько раз в течение каждого интервала в одну секунду.
  3. Если RSSI на протяжении всего этого односекундного интервала остается выше настроенного порогового значения RSSI для каждой выборки, этот односекундный интервал считается застрявшим.
  4. Если совокупное количество застрявших односекундных интервалов больше или равно совокупному количеству настроенных секунд периода занятости в пределах предшествующих настроенных секунд окна обнаружения в любой момент времени, состояние обнаружения замятия в этот момент времени устанавливается в true .
  5. Если совокупное количество застрявших односекундных интервалов меньше, чем совокупное количество настроенных секунд периода занятости в пределах предшествующих настроенных секунд окна обнаружения в любой момент времени, состояние обнаружения замятия в этот момент времени устанавливается на false .

Растровое изображение истории

В свойствах OpenThread API и wpantund для извлечения доступно растровое изображение за предыдущие 63 секунды. Это битовое изображение указывает, пересекал ли RSSI настроенный порог 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 дБм:

Обнаружение замятия OT

Как включить

Эта функция отключена по умолчанию.

По определению

Чтобы включить обнаружение замятия, определите 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

Параметры

Параметры обнаружения замятия можно настроить только через API OpenThread, протокол Spinel или wpanctl , инструмент командной строки wpantund для управления сетевым сопроцессором (NCP). Значения по умолчанию применяются, если функция включена без последующей настройки.

Настройте эту функцию, используя следующие параметры:

Параметры
Порог RSSI
Значение по умолчанию
0 дБм
Описание
Определяет пороговый уровень RSSI в дБм, выше которого канал считается заглушенным.
Окно обнаружения
Значение по умолчанию
63 секунды
Описание
Указывает окно в секундах, в течение которого необходимо проверять наличие помех сигнала. Диапазон: 1-63.
Напряженный период
Значение по умолчанию
63 секунды
Описание
Указывает совокупное количество секунд в пределах окна обнаружения, в течение которого RSSI должен быть выше порогового значения RSSI, чтобы активировать обнаружение замятия. Должно быть меньше окна обнаружения. Диапазон: 1-63.

API

OpenThread

Используйте API обнаружения замятия для управления функцией обнаружения замятия непосредственно в приложении OpenThread. API OpenThread предоставляет следующие функциональные возможности:

  • Запуск и остановка функции
  • Просмотр состояния обнаружения замятия
  • Управляйте всеми параметрами
  • Получить текущее растровое изображение истории обнаружения замятия
  • Зарегистрируйте функцию обратного вызова при обнаружении застревания

Шпинель

Протокол Spinel позволяет хост-устройству напрямую взаимодействовать с NCP. Этот протокол предоставляет свойства обнаружения замятия в openthread/src/lib/spinel/spinel.h которые обеспечивают следующие функции:

  • Запуск и остановка функции
  • Просмотр состояния обнаружения замятия
  • Управляйте всеми параметрами
  • Получить текущее растровое изображение истории обнаружения замятия

интерфейс командной строки

OpenThread

Для этой функции не существует команд OpenThread CLI.

wpantund

Используйте интерфейс командной строки wpanctl для управления функцией обнаружения замятия в конфигурации OpenThread NCP. wpantund сохраняет всю конфигурацию обнаружения замятия после сброса NCP.

wpanctl предоставляет доступ к следующим свойствам wpantund :

Характеристики
JamDetection:Status
Формат
логическое значение
Описание
Только чтение. Состояние обнаружения замятия. Указывает, обнаружено ли в данный момент застревание сигнала.
JamDetection:Enable
Формат
логическое значение
Описание
Включите или отключите функцию обнаружения замятия.
JamDetection:RssiThreshold
Формат
дБм
Описание
Определяет пороговый уровень RSSI в дБм, выше которого канал считается заблокированным.
JamDetection:Window
Формат
секунды
Описание
Указывает окно в секундах, в течение которого необходимо проверять наличие помех сигнала. Диапазон: 1-63.
JamDetection:BusyPeriod
Формат
секунды
Описание
Указывает совокупное количество секунд в пределах JamDetection:Window , в течение которого RSSI должен быть выше JamDetection:RssiThreshold чтобы активировать обнаружение замятия. Должно быть меньше JamDetection:Window . Диапазон: 1-63.
JamDetection:Debug:HistoryBitmap
Формат
64-битное значение
Описание
Предоставляет информацию об истории состояния обнаружения замятия для целей мониторинга и отладки.

Например, чтобы получить состояние обнаружения замятия для 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 .