diff --git a/src/ncp/changed_props_set.cpp b/src/ncp/changed_props_set.cpp index 00020071d..5a93fa2ee 100644 --- a/src/ncp/changed_props_set.cpp +++ b/src/ncp/changed_props_set.cpp @@ -94,6 +94,7 @@ const ChangedPropsSet::Entry ChangedPropsSet::mSupportedProps[] = { #if OPENTHREAD_CONFIG_ENABLE_TIME_SYNC {SPINEL_PROP_THREAD_NETWORK_TIME, SPINEL_STATUS_OK, false}, // 34 #endif + {SPINEL_PROP_PARENT_RESPONSE_INFO, SPINEL_STATUS_OK, true}, // 35 }; uint8_t ChangedPropsSet::GetNumEntries(void) const diff --git a/src/ncp/ncp_base.hpp b/src/ncp/ncp_base.hpp index df2c6a903..340de70d6 100644 --- a/src/ncp/ncp_base.hpp +++ b/src/ncp/ncp_base.hpp @@ -280,7 +280,7 @@ protected: void HandleChildTableChanged(otThreadChildTableEvent aEvent, const otChildInfo &aChildInfo); static void HandleParentResponseInfo(otThreadParentResponseInfo *aInfo, void *aContext); - void HandleParentResponseInfo(const otThreadParentResponseInfo *aInfo); + void HandleParentResponseInfo(const otThreadParentResponseInfo &aInfo); #endif static void HandleDatagramFromStack(otMessage *aMessage, void *aContext); diff --git a/src/ncp/ncp_base_ftd.cpp b/src/ncp/ncp_base_ftd.cpp index 88a11631b..7b8cff10c 100644 --- a/src/ncp/ncp_base_ftd.cpp +++ b/src/ncp/ncp_base_ftd.cpp @@ -87,27 +87,27 @@ void NcpBase::HandleParentResponseInfo(otThreadParentResponseInfo *aInfo, void * { VerifyOrExit(aInfo && aContext); - static_cast(aContext)->HandleParentResponseInfo(aInfo); + static_cast(aContext)->HandleParentResponseInfo(*aInfo); exit: return; } -void NcpBase::HandleParentResponseInfo(const otThreadParentResponseInfo *aInfo) +void NcpBase::HandleParentResponseInfo(const otThreadParentResponseInfo &aInfo) { - VerifyOrExit(aInfo); + VerifyOrExit(!mChangedPropsSet.IsPropertyFiltered(SPINEL_PROP_PARENT_RESPONSE_INFO)); SuccessOrExit(mEncoder.BeginFrame(SPINEL_HEADER_FLAG | SPINEL_HEADER_IID_0, SPINEL_CMD_PROP_VALUE_IS, SPINEL_PROP_PARENT_RESPONSE_INFO)); - SuccessOrExit(mEncoder.WriteEui64(aInfo->mExtAddr)); - SuccessOrExit(mEncoder.WriteUint16(aInfo->mRloc16)); - SuccessOrExit(mEncoder.WriteInt8(aInfo->mRssi)); - SuccessOrExit(mEncoder.WriteInt8(aInfo->mPriority)); - SuccessOrExit(mEncoder.WriteUint8(aInfo->mLinkQuality3)); - SuccessOrExit(mEncoder.WriteUint8(aInfo->mLinkQuality2)); - SuccessOrExit(mEncoder.WriteUint8(aInfo->mLinkQuality1)); - SuccessOrExit(mEncoder.WriteBool(aInfo->mIsAttached)); + SuccessOrExit(mEncoder.WriteEui64(aInfo.mExtAddr)); + SuccessOrExit(mEncoder.WriteUint16(aInfo.mRloc16)); + SuccessOrExit(mEncoder.WriteInt8(aInfo.mRssi)); + SuccessOrExit(mEncoder.WriteInt8(aInfo.mPriority)); + SuccessOrExit(mEncoder.WriteUint8(aInfo.mLinkQuality3)); + SuccessOrExit(mEncoder.WriteUint8(aInfo.mLinkQuality2)); + SuccessOrExit(mEncoder.WriteUint8(aInfo.mLinkQuality1)); + SuccessOrExit(mEncoder.WriteBool(aInfo.mIsAttached)); SuccessOrExit(mEncoder.EndFrame());