[mesh-forwarder] fix and enhance LogMessage() (#7556)

This commit updates `LogMessage()` in `MeshForwarder`:
- Fixes `MessageActionToString()` so when there is a passed-in error
  it correctly returns the related action string (and only when
  `aAction == kMessageTransmit` it returned "Failed to send").
- Changes the order of parameters in `LogMessage()` and uses default
  value for parameters to simplify its use.
This commit is contained in:
Abtin Keshavarzian
2022-03-31 22:03:52 -07:00
committed by GitHub
parent c6a767579f
commit 7dfde1f129
5 changed files with 29 additions and 17 deletions
+1 -1
View File
@@ -1214,7 +1214,7 @@ start:
{
// Remove encapsulating header and start over.
aMessage.RemoveHeader(aMessage.GetOffset());
Get<MeshForwarder>().LogMessage(MeshForwarder::kMessageReceive, aMessage, nullptr, kErrorNone);
Get<MeshForwarder>().LogMessage(MeshForwarder::kMessageReceive, aMessage);
goto start;
}
+2 -2
View File
@@ -320,7 +320,7 @@ void IndirectSender::UpdateIndirectMessage(Child &aChild)
mDataPollHandler.HandleNewFrame(aChild);
aChild.GetMacAddress(childAddress);
Get<MeshForwarder>().LogMessage(MeshForwarder::kMessagePrepareIndirect, *message, &childAddress, kErrorNone);
Get<MeshForwarder>().LogMessage(MeshForwarder::kMessagePrepareIndirect, *message, kErrorNone, &childAddress);
}
}
@@ -519,7 +519,7 @@ void IndirectSender::HandleSentFrameToChild(const Mac::TxFrame &aFrame,
if (!aFrame.IsEmpty())
{
IgnoreError(aFrame.GetDstAddr(macDest));
Get<MeshForwarder>().LogMessage(MeshForwarder::kMessageTransmit, *message, &macDest, txError);
Get<MeshForwarder>().LogMessage(MeshForwarder::kMessageTransmit, *message, txError, &macDest);
}
if (message->GetType() == Message::kTypeIp6)
+18 -10
View File
@@ -224,7 +224,7 @@ void MeshForwarder::RemoveMessage(Message &aMessage)
}
}
LogMessage(kMessageEvict, aMessage, nullptr, kErrorNoBufs);
LogMessage(kMessageEvict, aMessage, kErrorNoBufs);
queue->DequeueAndFree(aMessage);
}
@@ -320,7 +320,7 @@ Message *MeshForwarder::PrepareNextDirectTransmission(void)
#endif
default:
LogMessage(kMessageDrop, *curMessage, nullptr, error);
LogMessage(kMessageDrop, *curMessage, error);
mSendQueue.DequeueAndFree(*curMessage);
continue;
}
@@ -1071,7 +1071,7 @@ void MeshForwarder::UpdateSendMessage(Error aFrameTxError, Mac::Address &aMacDes
Get<Utils::HistoryTracker>().RecordTxMessage(*mSendMessage, aMacDest);
#endif
LogMessage(kMessageTransmit, *mSendMessage, &aMacDest, txError);
LogMessage(kMessageTransmit, *mSendMessage, txError, &aMacDest);
if (mSendMessage->GetType() == Message::kTypeIp6)
{
@@ -1348,7 +1348,7 @@ void MeshForwarder::ClearReassemblyList(void)
{
for (Message &message : mReassemblyList)
{
LogMessage(kMessageReassemblyDrop, message, nullptr, kErrorNoFrameReceived);
LogMessage(kMessageReassemblyDrop, message, kErrorNoFrameReceived);
if (message.GetType() == Message::kTypeIp6)
{
@@ -1385,7 +1385,7 @@ bool MeshForwarder::UpdateReassemblyList(void)
}
else
{
LogMessage(kMessageReassemblyDrop, message, nullptr, kErrorReassemblyTimeout);
LogMessage(kMessageReassemblyDrop, message, kErrorReassemblyTimeout);
if (message.GetType() == Message::kTypeIp6)
{
@@ -1475,7 +1475,7 @@ Error MeshForwarder::HandleDatagram(Message &aMessage, const ThreadLinkInfo &aLi
Get<Utils::HistoryTracker>().RecordRxMessage(aMessage, aMacSource);
#endif
LogMessage(kMessageReceive, aMessage, &aMacSource, kErrorNone);
LogMessage(kMessageReceive, aMessage, kErrorNone, &aMacSource);
if (aMessage.GetType() == Message::kTypeIp6)
{
@@ -1713,6 +1713,8 @@ const char *MeshForwarder::MessageActionToString(MessageAction aAction, Error aE
"Evicting", // (5) kMessageEvict
};
const char *string = kMessageActionStrings[aAction];
static_assert(kMessageReceive == 0, "kMessageReceive value is incorrect");
static_assert(kMessageTransmit == 1, "kMessageTransmit value is incorrect");
static_assert(kMessagePrepareIndirect == 2, "kMessagePrepareIndirect value is incorrect");
@@ -1720,7 +1722,12 @@ const char *MeshForwarder::MessageActionToString(MessageAction aAction, Error aE
static_assert(kMessageReassemblyDrop == 4, "kMessageReassemblyDrop value is incorrect");
static_assert(kMessageEvict == 5, "kMessageEvict value is incorrect");
return (aError == kErrorNone) ? kMessageActionStrings[aAction] : "Failed to send";
if ((aAction == kMessageTransmit) && (aError != kErrorNone))
{
string = "Failed to send";
}
return string;
}
const char *MeshForwarder::MessagePriorityToString(const Message &aMessage)
@@ -1803,8 +1810,9 @@ exit:
void MeshForwarder::LogMessage(MessageAction aAction,
const Message & aMessage,
const Mac::Address *aMacAddress,
Error aError)
Error aError,
const Mac::Address *aMacAddress)
{
LogLevel logLevel = kLogLevelInfo;
@@ -1882,7 +1890,7 @@ void MeshForwarder::LogLowpanHcFrameDrop(Error aError,
#else // #if OT_SHOULD_LOG_AT( OT_LOG_LEVEL_NOTE)
void MeshForwarder::LogMessage(MessageAction, const Message &, const Mac::Address *, Error)
void MeshForwarder::LogMessage(MessageAction, const Message &, Error, const Mac::Address *)
{
}
+5 -1
View File
@@ -512,7 +512,11 @@ private:
void PauseMessageTransmissions(void) { mTxPaused = true; }
void ResumeMessageTransmissions(void);
void LogMessage(MessageAction aAction, const Message &aMessage, const Mac::Address *aAddress, Error aError);
void LogMessage(MessageAction aAction,
const Message & aMessage,
Error aError = kErrorNone,
const Mac::Address *aAddress = nullptr);
void LogFrame(const char *aActionText, const Mac::Frame &aFrame, Error aError);
void LogFragmentFrameDrop(Error aError,
uint16_t aFrameLength,
+3 -3
View File
@@ -169,7 +169,7 @@ void MeshForwarder::HandleResolved(const Ip6::Address &aEid, Error aError)
}
else
{
LogMessage(kMessageDrop, message, nullptr, aError);
LogMessage(kMessageDrop, message, aError);
message.Free();
}
}
@@ -349,7 +349,7 @@ void MeshForwarder::RemoveDataResponseMessages(void)
mSendMessage = nullptr;
}
LogMessage(kMessageDrop, message, nullptr, kErrorNone);
LogMessage(kMessageDrop, message);
mSendQueue.DequeueAndFree(message);
}
}
@@ -807,7 +807,7 @@ void MeshForwarder::HandleMesh(uint8_t * aFrame,
message->SetRadioType(static_cast<Mac::RadioType>(aLinkInfo.mRadioType));
#endif
LogMessage(kMessageReceive, *message, &aMacSource, kErrorNone);
LogMessage(kMessageReceive, *message, kErrorNone, &aMacSource);
#if OPENTHREAD_CONFIG_MULTI_RADIO
// Since the message will be forwarded, we clear the radio