OpenThread 노드에서 신호 방해 감지를 위한 구성 가능한 메커니즘을 제공하려면 방해 감지 기능을 사용 설정하세요.
이 기능은 특정 채널의 신호 방해를 감지하는 기능이 필요한 기기 인증에 유용합니다. 각 인증 유형의 요구사항을 충족하도록 구성할 수 있습니다.
작동 방식
제한 모니터링은 지정된 시간 동안 노드의 RSSI(수신 신호 강도 표시기)를 모니터링하여 채널이 제한되었는지 확인합니다.
잼 감지가 사용 설정된 경우:
- 잼 감지 상태가
false
로 설정됩니다. - 노드가 1초 간격마다 RSSI를 여러 번 샘플링합니다.
- 1초 전체 간격 동안의 RSSI가 모든 샘플에 대해 구성된 RSSI 기준점보다 높게 유지되면 해당 1초 간격은 혼잡으로 간주됩니다.
- 어떠한 시점에서든 방해되는 1초 간격의 집계 횟수가 이전에 구성된 감지 기간 초 내에 구성된 바쁨 기간 초의 집계 수 이상
이상이면 해당 시점의 잼 감지 상태가
true
로 설정됩니다. - 특정 시점에서 이전에 구성된 감지 기간 초 내에 구성된 대기 시간 초의 총 개수가 잼된 1초 간격의 총 개수보다 작으면 해당 시점의 잼 감지 상태는
false
로 설정됩니다.
기록 비트맵
OpenThread API 및 wpantund
속성에서 이전 63초의 비트맵을 검색할 수 있습니다. 이 비트맵은 이전 63초 동안 RSSI가 구성된 RSSI 임곗값을 초과했는지 여부를 나타냅니다.
예를 들어 다음과 같은 비트맵을 검색할 수 있습니다.
0xC248068C416E7FF0
바이너리로 변환하면 이전 63초 동안 RSSI가 구성된 RSSI 기준점을 초과하는 모든 인스턴스가 생성됩니다.
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000
감지 기간이 16초로 설정되고 사용 기간이 8초로 설정된 경우, 이전 16초 동안 RSSI 임계값이 8초 넘게 초과된 첫 번째 인스턴스이므로 51초에 혼잡 감지 상태가 true
이 됩니다. 이 예시에서 걸림 감지 상태는 다음 13초 동안 true
로 유지됩니다.
11000010 01001000 00000110 10001100 01000001 01101110 01111111 11110000 [00001 01101110 011] = 8 in 16
구성된 RSSI 임계값이 -45dBm인 경우 이 비트맵은 다음 그래프로 표시될 수 있습니다.
사용 설정 방법
이 기능은 기본적으로 사용 중지되어 있습니다.
정의별
혼잡 감지를 사용 설정하려면 OpenThread 빌드 전에 openthread/src/core/config/openthread-core-default-config.h
파일에서 OPENTHREAD_CONFIG_JAM_DETECTION_ENABLE
를 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
매개변수
간섭 감지 매개변수는 OpenThread API, 스피넬 프로토콜 또는 네트워크 코프로세서(NCP) 관리를 위한 wpantund
명령줄 도구인 wpanctl
를 통해서만 구성할 수 있습니다. 후속 구성 없이 기능이 사용 설정된 경우 기본값이 적용됩니다.
다음 매개변수를 사용하여 이 기능을 맞춤설정합니다.
매개변수 | |||||
---|---|---|---|---|---|
RSSI 기준점 |
|
||||
감지 기간 |
|
||||
대기 중인 문의가 많은 기간 |
|
API
OpenThread
Jam Detection API를 사용하여 OpenThread 애플리케이션에서 직접 Jam 감지 기능을 관리할 수 있습니다. OpenThread API는 다음과 같은 기능을 제공합니다.
- 기능 시작 및 중지
- Jam 감지 상태 보기
- 모든 매개변수 관리
- 현재 Jam 감지 기록 비트맵을 가져옵니다.
- 걸림이 감지될 때의 콜백 함수 등록
스피넬
Spinel 프로토콜을 사용하면 호스트 기기가 NCP와 직접 통신할 수 있습니다.
이 프로토콜은 다음 기능을 제공하는 openthread/src/lib/spinel/spinel.h
에 Jam 감지 속성을 노출합니다.
- 기능 시작 및 중지
- Jam 감지 상태 보기
- 모든 매개변수 관리
- 현재 재밍 감지 기록 비트맵 가져오기
CLI
OpenThread
이 기능과 관련된 OpenThread CLI 명령어는 없습니다.
wpantund
wpanctl
CLI를 사용하여 OpenThread NCP 구성의 잼 감지 기능을 관리합니다. wpantund
는 NCP 재설정 시 모든 Jam 감지 구성을 유지합니다.
wpanctl
는 다음 wpantund
속성에 대한 액세스를 제공합니다.
속성 | |||||
---|---|---|---|---|---|
JamDetection:Status |
|
||||
JamDetection:Enable |
|
||||
JamDetection:RssiThreshold |
|
||||
JamDetection:Window |
|
||||
JamDetection:BusyPeriod |
|
||||
JamDetection:Debug:HistoryBitmap |
|
예를 들어 NCP의 걸림 감지 상태를 가져오려면 다음을 실행합니다.
sudo wpanctl getprop JamDetection:Status
JamDetection:Status = false
NCP에서 간섭 감지 RSSI 임곗값을 -45dBm으로 설정하려면 다음 단계를 따르세요.
sudo wpanctl setprop JamDetection:RssiThreshold -45
sudo wpanctl getprop JamDetection:RssiThreshold
JamDetection:RssiThreshold = -45
wpantund
속성에 관한 자세한 내용은 wpantund
GitHub 저장소를 참고하세요.