mirror of
https://github.com/espressif/openthread.git
synced 2026-10-07 00:07:42 +00:00
[notifier] update changed flags logging to use multiple lines (#3336)
This commit changes `Notifier::LogChangedFlags()` to allow it to use multiple lines when there are multiple flags.
This commit is contained in:
committed by
Jonathan Hui
parent
cd1e417750
commit
cc1c1a61ac
@@ -206,8 +206,9 @@ exit:
|
||||
|
||||
void Notifier::LogChangedFlags(otChangedFlags aFlags) const
|
||||
{
|
||||
otChangedFlags flags = aFlags;
|
||||
bool isFirst = true;
|
||||
otChangedFlags flags = aFlags;
|
||||
bool addSpace = false;
|
||||
bool didLog = false;
|
||||
String<kFlagsStringBufferSize> string;
|
||||
|
||||
for (uint8_t bit = 0; bit < sizeof(otChangedFlags) * CHAR_BIT; bit++)
|
||||
@@ -216,20 +217,34 @@ void Notifier::LogChangedFlags(otChangedFlags aFlags) const
|
||||
|
||||
if (flags & (1 << bit))
|
||||
{
|
||||
SuccessOrExit(string.Append("%s%s", isFirst ? "" : " ", FlagToString(1 << bit)));
|
||||
isFirst = false;
|
||||
if (string.GetLength() >= kFlagsStringLineLimit)
|
||||
{
|
||||
otLogInfoCore("Notifier: StateChanged (0x%08x) %s%s ...", aFlags, didLog ? "... " : "[",
|
||||
string.AsCString());
|
||||
string.Clear();
|
||||
didLog = true;
|
||||
addSpace = false;
|
||||
}
|
||||
|
||||
string.Append("%s%s", addSpace ? " " : "", FlagToString(1 << bit));
|
||||
addSpace = true;
|
||||
|
||||
flags ^= (1 << bit);
|
||||
}
|
||||
}
|
||||
|
||||
exit:
|
||||
otLogInfoCore("Notifier: StateChanged (0x%04x) [%s] ", aFlags, string.AsCString());
|
||||
otLogInfoCore("Notifier: StateChanged (0x%08x) %s%s] ", aFlags, didLog ? "... " : "[", string.AsCString());
|
||||
}
|
||||
|
||||
const char *Notifier::FlagToString(otChangedFlags aFlag) const
|
||||
{
|
||||
const char *retval = "(unknown)";
|
||||
|
||||
// To ensure no clipping of flag names in the logs, the returned
|
||||
// strings from this method should have shorter length than
|
||||
// `kMaxFlagNameLength` value.
|
||||
|
||||
switch (aFlag)
|
||||
{
|
||||
case OT_CHANGED_IP6_ADDRESS_ADDED:
|
||||
|
||||
@@ -187,7 +187,9 @@ private:
|
||||
enum
|
||||
{
|
||||
kMaxExternalHandlers = OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS,
|
||||
kFlagsStringBufferSize = 128,
|
||||
kFlagsStringLineLimit = 70, // Character limit to divide the log into multiple lines in `LogChangedFlags()`.
|
||||
kMaxFlagNameLength = 25, // Max length for string representation of a flag by `FlagToString()`.
|
||||
kFlagsStringBufferSize = kFlagsStringLineLimit + kMaxFlagNameLength,
|
||||
};
|
||||
|
||||
struct ExternalCallback
|
||||
|
||||
Reference in New Issue
Block a user