From e64df220e162132a5f349e6b5f793c271a97324b Mon Sep 17 00:00:00 2001 From: Abtin Keshavarzian Date: Thu, 25 Aug 2016 22:16:40 -0700 Subject: [PATCH] Ncp: Update the RESET_hanlder() to ensure a single spinel reset message goes out (#456) --- src/ncp/ncp_base.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/ncp/ncp_base.cpp b/src/ncp/ncp_base.cpp index 82aae57eb..850ddfadb 100644 --- a/src/ncp/ncp_base.cpp +++ b/src/ncp/ncp_base.cpp @@ -1008,6 +1008,8 @@ ThreadError NcpBase::CommandHandler_NOOP(uint8_t header, unsigned int command, c ThreadError NcpBase::CommandHandler_RESET(uint8_t header, unsigned int command, const uint8_t *arg_ptr, uint16_t arg_len) { + ThreadError errorCode = kThreadError_None; + // We aren't using any of the arguments to this function. (void)header; (void)command; @@ -1022,11 +1024,17 @@ ThreadError NcpBase::CommandHandler_RESET(uint8_t header, unsigned int command, // platform doesn't support resetting. // In such a case we fake it. - mChangedFlags |= NCP_PLAT_RESET_REASON; otDisable(); - mUpdateChangedPropsTask.Post(); - return SendLastStatus(SPINEL_HEADER_FLAG | SPINEL_HEADER_IID_0, SPINEL_STATUS_RESET_SOFTWARE); + errorCode = SendLastStatus(SPINEL_HEADER_FLAG | SPINEL_HEADER_IID_0, SPINEL_STATUS_RESET_SOFTWARE); + + if (errorCode != kThreadError_None) + { + mChangedFlags |= NCP_PLAT_RESET_REASON; + mUpdateChangedPropsTask.Post(); + } + + return errorCode; } ThreadError NcpBase::CommandHandler_PROP_VALUE_GET(uint8_t header, unsigned int command, const uint8_t *arg_ptr,