diff --git a/src/core/thread/network_diagnostic.cpp b/src/core/thread/network_diagnostic.cpp index df2ff26c6..4012f3ac0 100644 --- a/src/core/thread/network_diagnostic.cpp +++ b/src/core/thread/network_diagnostic.cpp @@ -106,12 +106,7 @@ otError NetworkDiagnostic::SendDiagnosticGet(const Ip6::Address &aDestination, if (aCount > 0) { - TypeListTlv tlv; - tlv.Init(); - tlv.SetLength(aCount); - - SuccessOrExit(error = message->Append(&tlv, sizeof(tlv))); - SuccessOrExit(error = message->Append(aTlvTypes, aCount)); + SuccessOrExit(error = Tlv::AppendTlv(*message, NetworkDataTlv::kTypeList, aTlvTypes, aCount)); } if (aDestination.IsLinkLocal() || aDestination.IsLinkLocalMulticast()) @@ -292,7 +287,7 @@ void NetworkDiagnostic::FillMacCountersTlv(MacCountersTlv &aMacCountersTlv) aMacCountersTlv.SetIfOutDiscards(macCounters.mTxErrBusyChannel); } -otError NetworkDiagnostic::FillRequestedTlvs(Message & aRequest, +otError NetworkDiagnostic::FillRequestedTlvs(const Message & aRequest, Message & aResponse, NetworkDiagnosticTlv &aNetworkDiagnosticTlv) { @@ -311,44 +306,25 @@ otError NetworkDiagnostic::FillRequestedTlvs(Message & aRequest, switch (type) { case NetworkDiagnosticTlv::kExtMacAddress: - { - ExtMacAddressTlv tlv; - tlv.Init(); - tlv.SetMacAddr(Get().GetExtAddress()); - SuccessOrExit(error = tlv.AppendTo(aResponse)); + SuccessOrExit( + error = Tlv::AppendTlv(aResponse, type, Get().GetExtAddress().m8, sizeof(Mac::ExtAddress))); break; - } case NetworkDiagnosticTlv::kAddress16: - { - Address16Tlv tlv; - tlv.Init(); - tlv.SetRloc16(Get().GetRloc16()); - SuccessOrExit(error = tlv.AppendTo(aResponse)); + SuccessOrExit(error = Tlv::AppendUint16Tlv(aResponse, type, Get().GetRloc16())); break; - } case NetworkDiagnosticTlv::kMode: - { - ModeTlv tlv; - tlv.Init(); - tlv.SetMode(Get().GetDeviceMode()); - SuccessOrExit(error = tlv.AppendTo(aResponse)); + SuccessOrExit(error = Tlv::AppendUint8Tlv(aResponse, type, Get().GetDeviceMode().Get())); break; - } case NetworkDiagnosticTlv::kTimeout: - { if (!Get().IsRxOnWhenIdle()) { - TimeoutTlv tlv; - tlv.Init(); - tlv.SetTimeout(Get().GetTimeout()); - SuccessOrExit(error = tlv.AppendTo(aResponse)); + SuccessOrExit(error = Tlv::AppendUint32Tlv(aResponse, type, Get().GetTimeout())); } break; - } #if OPENTHREAD_FTD case NetworkDiagnosticTlv::kConnectivity: @@ -388,17 +364,11 @@ otError NetworkDiagnostic::FillRequestedTlvs(Message & aRequest, case NetworkDiagnosticTlv::kNetworkData: { - NetworkDataTlv tlv; - uint8_t length; + uint8_t netData[NetworkData::NetworkData::kMaxSize]; + uint8_t length = sizeof(netData); - tlv.Init(); - - length = sizeof(NetworkDataTlv) - sizeof(Tlv); // sizeof( NetworkDataTlv::mNetworkData ) - IgnoreError( - Get().GetNetworkData(/* aStableOnly */ false, tlv.GetNetworkData(), length)); - tlv.SetLength(length); - - SuccessOrExit(error = tlv.AppendTo(aResponse)); + IgnoreError(Get().GetNetworkData(/* aStableOnly */ false, netData, length)); + SuccessOrExit(error = Tlv::AppendTlv(aResponse, type, netData, length)); break; } @@ -470,14 +440,11 @@ otError NetworkDiagnostic::FillRequestedTlvs(Message & aRequest, #if OPENTHREAD_FTD case NetworkDiagnosticTlv::kMaxChildTimeout: { - uint32_t maxTimeout = 0; + uint32_t maxTimeout; if (Get().GetMaxChildTimeout(maxTimeout) == OT_ERROR_NONE) { - MaxChildTimeoutTlv tlv; - tlv.Init(); - tlv.SetTimeout(maxTimeout); - SuccessOrExit(error = tlv.AppendTo(aResponse)); + SuccessOrExit(error = Tlv::AppendUint32Tlv(aResponse, type, maxTimeout)); } break; @@ -638,12 +605,7 @@ otError NetworkDiagnostic::SendDiagnosticReset(const Ip6::Address &aDestination, if (aCount > 0) { - TypeListTlv tlv; - tlv.Init(); - tlv.SetLength(aCount); - - SuccessOrExit(error = message->Append(&tlv, sizeof(tlv))); - SuccessOrExit(error = message->Append(aTlvTypes, aCount)); + SuccessOrExit(error = Tlv::AppendTlv(*message, NetworkDataTlv::kTypeList, aTlvTypes, aCount)); } if (aDestination.IsLinkLocal() || aDestination.IsLinkLocalMulticast()) diff --git a/src/core/thread/network_diagnostic.hpp b/src/core/thread/network_diagnostic.hpp index 3f268a6dc..aed96a45f 100644 --- a/src/core/thread/network_diagnostic.hpp +++ b/src/core/thread/network_diagnostic.hpp @@ -131,7 +131,7 @@ private: otError AppendIp6AddressList(Message &aMessage); otError AppendChildTable(Message &aMessage); void FillMacCountersTlv(MacCountersTlv &aMacCountersTlv); - otError FillRequestedTlvs(Message &aRequest, Message &aResponse, NetworkDiagnosticTlv &aNetworkDiagnosticTlv); + otError FillRequestedTlvs(const Message &aRequest, Message &aResponse, NetworkDiagnosticTlv &aNetworkDiagnosticTlv); static void HandleDiagnosticGetRequest(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo); void HandleDiagnosticGetRequest(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo);