mirror of
https://github.com/espressif/openthread.git
synced 2026-06-06 05:24:51 +00:00
spinel: Updated documentation for signal jamming detection (#929)
This commit outlines new Spinel properties for implementing a signal jamming detection feature into an NCP.
This commit is contained in:
committed by
Jonathan Hui
parent
e399632aa5
commit
6f2f7ce49c
+359
-249
File diff suppressed because it is too large
Load Diff
+659
-555
File diff suppressed because it is too large
Load Diff
@@ -336,6 +336,8 @@ by (Miek Gieben) and [xml2rfc (version 2)](http://xml2rfc.ietf.org/).
|
||||
|
||||
{{spinel-feature-host-buffer-offload.md}}
|
||||
|
||||
{{spinel-feature-jam-detect.md}}
|
||||
|
||||
{{spinel-tech-thread.md}}
|
||||
|
||||
{{spinel-test-vectors.md}}
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
# Feature: Jam Detection {#feature-jam-detect}
|
||||
|
||||
Jamming detection is a feature that allows the NCP to report when it
|
||||
detects high levels of interference that are characteristic of intentional
|
||||
signal jamming.
|
||||
|
||||
The presence of this feature can be detected by checking for the
|
||||
presence of the `CAP_JAM_DETECT` (value 6) capability in `PROP_CAPS`.
|
||||
|
||||
## Properties
|
||||
|
||||
### PROP 4608: PROP_JAM_DETECT_ENABLE {#prop-jam-detect-enable}
|
||||
|
||||
* Type: Read-Write
|
||||
* Packed-Encoding: `b`
|
||||
* Default Value: false
|
||||
* REQUIRED for `CAP_JAM_DETECT`
|
||||
|
||||
Octets: | 1
|
||||
--------|-----------------
|
||||
Fields: | `PROP_JAM_DETECT_ENABLE`
|
||||
|
||||
Indicates if jamming detection is enabled or disabled. Set to true
|
||||
to enable jamming detection.
|
||||
|
||||
This property is only available if the `CAP_JAM_DETECT`
|
||||
capability is present in `PROP_CAPS`.
|
||||
|
||||
### PROP 4609: PROP_JAM_DETECTED {#prop-jam-detected}
|
||||
|
||||
* Type: Read-Only
|
||||
* Packed-Encoding: `b`
|
||||
* REQUIRED for `CAP_JAM_DETECT`
|
||||
|
||||
Octets: | 1
|
||||
--------|-----------------
|
||||
Fields: | `PROP_JAM_DETECTED`
|
||||
|
||||
Set to true if radio jamming is detected. Set to false otherwise.
|
||||
|
||||
When jamming detection is enabled, changes to the value of this
|
||||
property are emitted asynchronously via `CMD_PROP_VALUE_IS`.
|
||||
|
||||
This property is only available if the `CAP_JAM_DETECT`
|
||||
capability is present in `PROP_CAPS`.
|
||||
|
||||
### PROP 4610: PROP_JAM_DETECT_RSSI_THRESHOLD
|
||||
|
||||
* Type: Read-Write
|
||||
* Packed-Encoding: `c`
|
||||
* Units: dBm
|
||||
* Default Value: Implementation-specific
|
||||
* RECOMMENDED for `CAP_JAM_DETECT`
|
||||
|
||||
This parameter describes the threshold RSSI level (measured in
|
||||
dBm) above which the jamming detection will consider the
|
||||
channel blocked.
|
||||
|
||||
### PROP 4611: PROP_JAM_DETECT_WINDOW
|
||||
|
||||
* Type: Read-Write
|
||||
* Packed-Encoding: `c`
|
||||
* Units: Seconds (1-64)
|
||||
* Default Value: Implementation-specific
|
||||
* RECOMMENDED for `CAP_JAM_DETECT`
|
||||
|
||||
This parameter describes the window period for signal jamming
|
||||
detection.
|
||||
|
||||
### PROP 4612: PROP_JAM_DETECT_BUSY
|
||||
|
||||
* Type: Read-Write
|
||||
* Packed-Encoding: `i`
|
||||
* Units: Seconds (1-64)
|
||||
* Default Value: Implementation-specific
|
||||
* RECOMMENDED for `CAP_JAM_DETECT`
|
||||
|
||||
This parameter describes the number of aggregate seconds within
|
||||
the detection window where the RSSI must be above
|
||||
`PROP_JAM_DETECT_RSSI_THRESHOLD` to trigger detection.
|
||||
|
||||
The behavior of the jamming detection feature when `PROP_JAM_DETECT_BUSY`
|
||||
is larger than `PROP_JAM_DETECT_WINDOW` is undefined.
|
||||
@@ -127,6 +127,8 @@ Currently defined values are:
|
||||
* 2: `CAP_NET_SAVE`
|
||||
* 3: `CAP_HBO`: Host Buffer Offload. See (#feature-host-buffer-offload).
|
||||
* 4: `CAP_POWER_SAVE`
|
||||
* 5: `CAP_COUNTERS`
|
||||
* 6: `CAP_JAM_DETECT`: Jamming detection. See (#feature-jam-detect)
|
||||
* 16: `CAP_802_15_4_2003`
|
||||
* 17: `CAP_802_15_4_2006`
|
||||
* 18: `CAP_802_15_4_2011`
|
||||
|
||||
+23
-7
@@ -1166,31 +1166,47 @@ spinel_prop_key_to_cstr(spinel_prop_key_t prop_key)
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_NEST_STREAM_MFG:
|
||||
ret = "SPINEL_PROP_NEST_STREAM_MFG";
|
||||
ret = "PROP_NEST_STREAM_MFG";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT:
|
||||
ret = "SPINEL_PROP_THREAD_NETWORK_ID_TIMEOUT";
|
||||
ret = "PROP_THREAD_NETWORK_ID_TIMEOUT";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_ACTIVE_ROUTER_IDS:
|
||||
ret = "SPINEL_PROP_THREAD_ACTIVE_ROUTER_IDS";
|
||||
ret = "PROP_THREAD_ACTIVE_ROUTER_IDS";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD:
|
||||
ret = "SPINEL_PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD";
|
||||
ret = "PROP_THREAD_ROUTER_DOWNGRADE_THRESHOLD";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER:
|
||||
ret = "SPINEL_PROP_THREAD_ROUTER_SELECTION_JITTER";
|
||||
ret = "PROP_THREAD_ROUTER_SELECTION_JITTER";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_PREFERRED_ROUTER_ID:
|
||||
ret = "SPINEL_PROP_THREAD_PREFERRED_ROUTER_ID";
|
||||
ret = "PROP_THREAD_PREFERRED_ROUTER_ID";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_THREAD_NEIGHBOR_TABLE:
|
||||
ret = "SPINEL_PROP_THREAD_NEIGHBOR_TABLE";
|
||||
ret = "PROP_THREAD_NEIGHBOR_TABLE";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_JAM_DETECT_ENABLE:
|
||||
ret = "PROP_JAM_DETECT_ENABLE";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_JAM_DETECTED:
|
||||
ret = "PROP_JAM_DETECTED";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_JAM_DETECT_RSSI_THRESHOLD:
|
||||
ret = "PROP_JAM_DETECT_RSSI_THRESHOLD";
|
||||
break;
|
||||
|
||||
case SPINEL_PROP_JAM_DETECT_WINDOW:
|
||||
ret = "PROP_JAM_DETECT_WINDOW";
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -283,6 +283,7 @@ enum
|
||||
SPINEL_CAP_POWER_SAVE = 4,
|
||||
|
||||
SPINEL_CAP_COUNTERS = 5,
|
||||
SPINEL_CAP_JAM_DETECT = 6,
|
||||
|
||||
SPINEL_CAP_802_15_4__BEGIN = 16,
|
||||
SPINEL_CAP_802_15_4_2003 = (SPINEL_CAP_802_15_4__BEGIN + 0),
|
||||
@@ -349,6 +350,60 @@ typedef enum
|
||||
SPINEL_PROP_PHY_RSSI = SPINEL_PROP_PHY__BEGIN + 6, ///< dBm [c]
|
||||
SPINEL_PROP_PHY__END = 0x30,
|
||||
|
||||
SPINEL_PROP_PHY_EXT__BEGIN = 0x1200,
|
||||
|
||||
/// Signal Jamming Detection Enable
|
||||
/** Format: `b`
|
||||
*
|
||||
* Indicates if jamming detection is enabled or disabled. Set to true
|
||||
* to enable jamming detection.
|
||||
*/
|
||||
SPINEL_PROP_JAM_DETECT_ENABLE = SPINEL_PROP_PHY_EXT__BEGIN + 0,
|
||||
|
||||
/// Signal Jamming Detected Indicator
|
||||
/** Format: `b` (Read-Only)
|
||||
*
|
||||
* Set to true if radio jamming is detected. Set to false otherwise.
|
||||
*
|
||||
* When jamming detection is enabled, changes to the value of this
|
||||
* property are emitted asynchronously via `CMD_PROP_VALUE_IS`.
|
||||
*/
|
||||
SPINEL_PROP_JAM_DETECTED = SPINEL_PROP_PHY_EXT__BEGIN + 1,
|
||||
|
||||
/// Jamming detection RSSI threshold
|
||||
/** Format: `c`
|
||||
* Units: dBm
|
||||
*
|
||||
* This parameter describes the threshold RSSI level (measured in
|
||||
* dBm) above which the jamming detection will consider the
|
||||
* channel blocked.
|
||||
*/
|
||||
SPINEL_PROP_JAM_DETECT_RSSI_THRESHOLD = SPINEL_PROP_PHY_EXT__BEGIN + 2,
|
||||
|
||||
/// Jamming detection window size
|
||||
/** Format: `c`
|
||||
* Units: Seconds (1-64)
|
||||
*
|
||||
* This parameter describes the window period for signal jamming
|
||||
* detection.
|
||||
*/
|
||||
SPINEL_PROP_JAM_DETECT_WINDOW = SPINEL_PROP_PHY_EXT__BEGIN + 3,
|
||||
|
||||
/// Jamming detection busy period
|
||||
/** Format: `c`
|
||||
* Units: Seconds (1-64)
|
||||
*
|
||||
* This parameter describes the number of aggregate seconds within
|
||||
* the detection window where the RSSI must be above
|
||||
* `PROP_JAM_DETECT_RSSI_THRESHOLD` to trigger detection.
|
||||
*
|
||||
* The behavior of the jamming detection feature when `PROP_JAM_DETECT_BUSY`
|
||||
* is larger than `PROP_JAM_DETECT_WINDOW` is undefined.
|
||||
*/
|
||||
SPINEL_PROP_JAM_DETECT_BUSY = SPINEL_PROP_PHY_EXT__BEGIN + 4,
|
||||
|
||||
SPINEL_PROP_PHY_EXT__END = 0x1300,
|
||||
|
||||
SPINEL_PROP_MAC__BEGIN = 0x30,
|
||||
SPINEL_PROP_MAC_SCAN_STATE = SPINEL_PROP_MAC__BEGIN + 0, ///< [C]
|
||||
SPINEL_PROP_MAC_SCAN_MASK = SPINEL_PROP_MAC__BEGIN + 1, ///< [A(C)]
|
||||
|
||||
Reference in New Issue
Block a user