[spinel] handle new spinel net role DISABLED (#517)
diff --git a/src/ncp-spinel/SpinelNCPInstance.cpp b/src/ncp-spinel/SpinelNCPInstance.cpp
index d45530b..0ec5e89 100644
--- a/src/ncp-spinel/SpinelNCPInstance.cpp
+++ b/src/ncp-spinel/SpinelNCPInstance.cpp
@@ -5767,6 +5767,7 @@
if (ncp_state_is_joining_or_joined(get_ncp_state())
&& (value != SPINEL_NET_ROLE_DETACHED)
+ && (value != SPINEL_NET_ROLE_DISABLED)
) {
change_ncp_state(ASSOCIATED);
}
@@ -5784,7 +5785,7 @@
} else if (value == SPINEL_NET_ROLE_LEADER) {
update_node_type(LEADER);
- } else if (value == SPINEL_NET_ROLE_DETACHED) {
+ } else if (value == SPINEL_NET_ROLE_DETACHED || value == SPINEL_NET_ROLE_DISABLED) {
update_node_type(UNKNOWN);
if (ncp_state_is_associated(get_ncp_state())) {
change_ncp_state(ISOLATED);
diff --git a/third_party/openthread/src/ncp/spinel.h b/third_party/openthread/src/ncp/spinel.h
index 9c192d9..0d988b5 100644
--- a/third_party/openthread/src/ncp/spinel.h
+++ b/third_party/openthread/src/ncp/spinel.h
@@ -504,6 +504,7 @@
SPINEL_NET_ROLE_CHILD = 1,
SPINEL_NET_ROLE_ROUTER = 2,
SPINEL_NET_ROLE_LEADER = 3,
+ SPINEL_NET_ROLE_DISABLED = 4,
} spinel_net_role_t;
typedef enum
@@ -2090,6 +2091,7 @@
* SPINEL_NET_ROLE_CHILD = 1,
* SPINEL_NET_ROLE_ROUTER = 2,
* SPINEL_NET_ROLE_LEADER = 3,
+ * SPINEL_NET_ROLE_DISABLED = 4,
*
*/
SPINEL_PROP_NET_ROLE = SPINEL_PROP_NET__BEGIN + 3,