[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:
Abtin Keshavarzian
2018-12-01 08:22:30 -08:00
committed by Jonathan Hui
parent cd1e417750
commit cc1c1a61ac
2 changed files with 23 additions and 6 deletions
+20 -5
View File
@@ -206,8 +206,9 @@ exit:
void Notifier::LogChangedFlags(otChangedFlags aFlags) const void Notifier::LogChangedFlags(otChangedFlags aFlags) const
{ {
otChangedFlags flags = aFlags; otChangedFlags flags = aFlags;
bool isFirst = true; bool addSpace = false;
bool didLog = false;
String<kFlagsStringBufferSize> string; String<kFlagsStringBufferSize> string;
for (uint8_t bit = 0; bit < sizeof(otChangedFlags) * CHAR_BIT; bit++) 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)) if (flags & (1 << bit))
{ {
SuccessOrExit(string.Append("%s%s", isFirst ? "" : " ", FlagToString(1 << bit))); if (string.GetLength() >= kFlagsStringLineLimit)
isFirst = false; {
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); flags ^= (1 << bit);
} }
} }
exit: 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 *Notifier::FlagToString(otChangedFlags aFlag) const
{ {
const char *retval = "(unknown)"; 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) switch (aFlag)
{ {
case OT_CHANGED_IP6_ADDRESS_ADDED: case OT_CHANGED_IP6_ADDRESS_ADDED:
+3 -1
View File
@@ -187,7 +187,9 @@ private:
enum enum
{ {
kMaxExternalHandlers = OPENTHREAD_CONFIG_MAX_STATECHANGE_HANDLERS, 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 struct ExternalCallback