diff --git a/src/core/thread/energy_scan_server.cpp b/src/core/thread/energy_scan_server.cpp index aacc900dd..4e3df02d7 100644 --- a/src/core/thread/energy_scan_server.cpp +++ b/src/core/thread/energy_scan_server.cpp @@ -46,7 +46,6 @@ EnergyScanServer::EnergyScanServer(Instance &aInstance) , mPeriod(0) , mScanDuration(0) , mCount(0) - , mReportMessage(nullptr) , mTimer(aInstance) { } @@ -68,8 +67,7 @@ void EnergyScanServer::HandleTmf(Coap::Message &aMessage, const SuccessOrExit(MeshCoP::ChannelMaskTlv::FindIn(aMessage, mask)); - FreeMessage(mReportMessage); - mReportMessage = Get().NewPriorityConfirmablePostMessage(kUriEnergyReport); + mReportMessage.Reset(Get().NewPriorityConfirmablePostMessage(kUriEnergyReport)); VerifyOrExit(mReportMessage != nullptr); SuccessOrExit(MeshCoP::ChannelMaskTlv::AppendTo(*mReportMessage, mask)); @@ -130,8 +128,7 @@ void EnergyScanServer::HandleScanResult(Mac::EnergyScanResult *aResult) { if (mReportMessage->Append(aResult->mMaxRssi) != kErrorNone) { - FreeMessage(mReportMessage); - mReportMessage = nullptr; + mReportMessage.Free(); ExitNow(); } @@ -184,13 +181,13 @@ void EnergyScanServer::SendReport(void) messageInfo.SetSockAddrToRlocPeerAddrTo(mCommissioner); SuccessOrExit(error = Get().SendMessage(*mReportMessage, messageInfo)); + mReportMessage.Release(); LogInfo("Sent %s", UriToString()); exit: - FreeMessageOnError(mReportMessage, error); LogWarnOnError(error, "send scan results"); - mReportMessage = nullptr; + mReportMessage.Free(); } void EnergyScanServer::HandleNotifierEvents(Events aEvents) @@ -200,8 +197,7 @@ void EnergyScanServer::HandleNotifierEvents(Events aEvents) if (aEvents.Contains(kEventThreadNetdataChanged) && (mReportMessage != nullptr) && Get().FindBorderAgentRloc(borderAgentRloc) != kErrorNone) { - mReportMessage->Free(); - mReportMessage = nullptr; + mReportMessage.Free(); mTimer.Stop(); } } diff --git a/src/core/thread/energy_scan_server.hpp b/src/core/thread/energy_scan_server.hpp index 606f862ea..6278621f2 100644 --- a/src/core/thread/energy_scan_server.hpp +++ b/src/core/thread/energy_scan_server.hpp @@ -39,6 +39,7 @@ #include "common/locator.hpp" #include "common/non_copyable.hpp" #include "common/notifier.hpp" +#include "common/owned_ptr.hpp" #include "common/timer.hpp" #include "mac/mac.hpp" #include "net/ip6_address.hpp" @@ -79,15 +80,15 @@ private: using ScanTimer = TimerMilliIn; - Ip6::Address mCommissioner; - uint32_t mChannelMask; - uint32_t mChannelMaskCurrent; - uint16_t mPeriod; - uint16_t mScanDuration; - uint8_t mCount; - uint8_t mNumScanResults; - Coap::Message *mReportMessage; - ScanTimer mTimer; + Ip6::Address mCommissioner; + uint32_t mChannelMask; + uint32_t mChannelMaskCurrent; + uint16_t mPeriod; + uint16_t mScanDuration; + uint8_t mCount; + uint8_t mNumScanResults; + OwnedPtr mReportMessage; + ScanTimer mTimer; }; DeclareTmfHandler(EnergyScanServer, kUriEnergyScan);