Посмотреть исходный код на GitHub
Чтобы обеспечить настраиваемый механизм обнаружения помех сигнала на любом узле OpenThread, включите функцию обнаружения помех.
Эта функция полезна для сертификации устройств, требующих возможности обнаружения помех сигнала на определенном канале. Его можно настроить в соответствии с требованиями каждого типа сертификации.
Как это работает
Функция обнаружения помех отслеживает RSSI (индикатор уровня принимаемого сигнала) узла в течение заданных периодов времени, чтобы определить, не было ли помех в канале.
Когда обнаружение замятия включено:
- Для состояния обнаружения замятия установлено значение
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 секунд, состояние обнаружения замятия становится true
через 51 секунду, поскольку это первый случай, когда порог RSSI был превышен как минимум на 8 полных секунд в предыдущем 16 секунд. В этом примере состояние обнаружения замятия остается true
в течение следующих 13 секунд.
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
Это растровое изображение могло бы быть представлено следующим графиком, если бы настроенным порогом RSSI было -45 дБм:
Как включить
Эта функция отключена по умолчанию.
По определению
Чтобы включить обнаружение замятия, определите 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 |
| ||||
Окно обнаружения |
| ||||
Напряженный период |
|
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 |
| ||||
JamDetection:Window |
| ||||
JamDetection:BusyPeriod |
| ||||
JamDetection:Debug:HistoryBitmap |
|
Например, чтобы получить состояние обнаружения замятия для 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 .