mirror of
https://github.com/espressif/openthread.git
synced 2026-10-31 03:26:37 +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
|
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:
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user