diff --git a/doc/spinel-protocol-src/spinel-prop-mac.md b/doc/spinel-protocol-src/spinel-prop-mac.md index 4030c1463..5010f2414 100644 --- a/doc/spinel-protocol-src/spinel-prop-mac.md +++ b/doc/spinel-protocol-src/spinel-prop-mac.md @@ -202,3 +202,9 @@ Structure Parameters: * Packed-Encoding: `b` * Required capability: `CAP_MAC_WHITELIST` +### PROP 4873: PROP_MAC_CCA_FAILURE_RATE {#prop-mac-cca-failure-rate} + * Type: Read Only + * Packed-Encoding: `S` + +This property provides the current CCA (Clear Channel Assessment) failure rate. +Maximum value `0xffff` corresponding to 100% failure rate. diff --git a/src/ncp/ncp_base.cpp b/src/ncp/ncp_base.cpp index d69822575..889921c5e 100644 --- a/src/ncp/ncp_base.cpp +++ b/src/ncp/ncp_base.cpp @@ -92,6 +92,7 @@ const NcpBase::PropertyHandlerEntry NcpBase::mGetPropertyHandlerTable[] = NCP_GET_PROP_HANDLER_ENTRY(MAC_SCAN_STATE), NCP_GET_PROP_HANDLER_ENTRY(MAC_SCAN_MASK), NCP_GET_PROP_HANDLER_ENTRY(MAC_SCAN_PERIOD), + NCP_GET_PROP_HANDLER_ENTRY(MAC_CCA_FAILURE_RATE), #if OPENTHREAD_ENABLE_MAC_FILTER NCP_GET_PROP_HANDLER_ENTRY(MAC_BLACKLIST), NCP_GET_PROP_HANDLER_ENTRY(MAC_BLACKLIST_ENABLED), diff --git a/src/ncp/ncp_base.hpp b/src/ncp/ncp_base.hpp index 2c3a7ae05..fe033fe51 100644 --- a/src/ncp/ncp_base.hpp +++ b/src/ncp/ncp_base.hpp @@ -428,6 +428,7 @@ protected: NCP_SET_PROP_HANDLER(MAC_SCAN_PERIOD); NCP_GET_PROP_HANDLER(MAC_SCAN_STATE); NCP_SET_PROP_HANDLER(MAC_SCAN_STATE); + NCP_GET_PROP_HANDLER(MAC_CCA_FAILURE_RATE); #if OPENTHREAD_ENABLE_MAC_FILTER NCP_GET_PROP_HANDLER(MAC_WHITELIST_ENABLED); NCP_SET_PROP_HANDLER(MAC_WHITELIST_ENABLED); diff --git a/src/ncp/ncp_base_mtd.cpp b/src/ncp/ncp_base_mtd.cpp index 85e10491c..29dba5feb 100644 --- a/src/ncp/ncp_base_mtd.cpp +++ b/src/ncp/ncp_base_mtd.cpp @@ -1518,6 +1518,11 @@ exit: #endif // OPENTHREAD_ENABLE_CHANNEL_MONITOR +otError NcpBase::GetPropertyHandler_MAC_CCA_FAILURE_RATE(void) +{ + return mEncoder.WriteUint16(otLinkGetCcaFailureRate(mInstance)); +} + otError NcpBase::GetPropertyHandler_CNTR_TX_PKT_TOTAL(void) { return mEncoder.WriteUint32(otLinkGetCounters(mInstance)->mTxTotal); diff --git a/src/ncp/spinel.c b/src/ncp/spinel.c index a121fe669..6b46718a8 100644 --- a/src/ncp/spinel.c +++ b/src/ncp/spinel.c @@ -1289,6 +1289,10 @@ spinel_prop_key_to_cstr(spinel_prop_key_t prop_key) ret = "PROP_MAC_FIXED_RSS"; break; + case SPINEL_PROP_MAC_CCA_FAILURE_RATE: + ret = "PROP_MAC_CCA_FAILURE_RATE"; + break; + case SPINEL_PROP_NET_SAVED: ret = "PROP_NET_SAVED"; break; diff --git a/src/ncp/spinel.h b/src/ncp/spinel.h index db6eb8e80..28b8634ac 100644 --- a/src/ncp/spinel.h +++ b/src/ncp/spinel.h @@ -845,7 +845,17 @@ typedef enum * * `E`: Optional EUI64 address of node. Set default RSS if not included. * * `c`: Fixed RSS. OT_MAC_FILTER_FIXED_RSS_OVERRIDE_DISABLED(127) means not set. */ - SPINEL_PROP_MAC_FIXED_RSS = SPINEL_PROP_MAC_EXT__BEGIN + 8, + SPINEL_PROP_MAC_FIXED_RSS = SPINEL_PROP_MAC_EXT__BEGIN + 8, + + /// The CCA failure rate + /** Format: `S` + * + * This property provides the current CCA (Clear Channel Assessment) failure rate. + * + * Maximum value `0xffff` corresponding to 100% failure rate. + * + */ + SPINEL_PROP_MAC_CCA_FAILURE_RATE = SPINEL_PROP_MAC_EXT__BEGIN + 9, SPINEL_PROP_MAC_EXT__END = 0x1400,