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:
Robert Quattlebaum
2016-11-03 18:14:12 -07:00
committed by Jonathan Hui
parent e399632aa5
commit 6f2f7ce49c
7 changed files with 1183 additions and 811 deletions
File diff suppressed because it is too large Load Diff
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
View File
@@ -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:
+55
View File
@@ -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)]