Skip to content

Commit 60f6e13

Browse files
[Silabs] Fix RTT logs (project-chip#43617)
* Silabs Fix RTT logs * apply comments * apply comments
1 parent e193194 commit 60f6e13

1 file changed

Lines changed: 20 additions & 19 deletions

File tree

src/platform/silabs/Logging.cpp

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ size_t AddTimeStampAndPrefixStr(char * logBuffer, const char * prefix, size_t ma
109109
{
110110
return 0; // Likely a snprintf error
111111
}
112-
return snprintf(logBuffer + timestampLen, maxSize - timestampLen, "%s", prefix);
112+
int chWritten = snprintf(logBuffer + timestampLen, maxSize - timestampLen, "%s", prefix);
113+
return (chWritten > 0) ? static_cast<size_t>(chWritten) + timestampLen : timestampLen;
113114
}
114115
size_t FormatTimestamp(char * buffer, size_t maxSize, uint64_t timestampMillis)
115116
{
@@ -124,7 +125,8 @@ size_t FormatTimestamp(char * buffer, size_t maxSize, uint64_t timestampMillis)
124125
uint8_t minutes = totalSeconds % 60;
125126
uint32_t hours = totalSeconds / 60;
126127

127-
return snprintf(buffer, maxSize, "[%04lu:%02u:%02u.%03u]", hours, minutes, seconds, milliseconds);
128+
int chWritten = snprintf(buffer, maxSize, "[%04lu:%02u:%02u.%03u]", hours, minutes, seconds, milliseconds);
129+
return (chWritten > 0) ? static_cast<size_t>(chWritten) : 0;
128130
}
129131

130132
void HandleLog(const char * module, LogCategory category, const char * aFormat, va_list v)
@@ -135,17 +137,22 @@ void HandleLog(const char * module, LogCategory category, const char * aFormat,
135137
kTimeStampStringSize + kMaxCategoryStrLen); // Greater than to at least accommodate a ending Null Character
136138

137139
size_t prefixLen = 0;
140+
#if !SILABS_LOG_OUT_UART
141+
prefixLen += chip::Logging::Platform::AddTimeStampAndPrefixStr(
142+
formattedMsg, reinterpret_cast<const char *>(GetCategoryString(category)), CHIP_CONFIG_LOG_MESSAGE_MAX_SIZE);
143+
#endif // SILABS_LOG_OUT_UART
144+
138145
size_t moduleLen = strlen(module);
139-
if ((moduleLen > 0) && (moduleLen < CHIP_CONFIG_LOG_MESSAGE_MAX_SIZE))
146+
if (moduleLen > 0)
140147
{
141148
// Prepend module name if available
142-
prefixLen = snprintf(formattedMsg, sizeof(formattedMsg), "[%s] ", module);
149+
int moduleNameLen = snprintf(formattedMsg + prefixLen, sizeof(formattedMsg) - prefixLen, "[%s] ", module);
150+
if (moduleNameLen > 0)
151+
{
152+
prefixLen += static_cast<size_t>(moduleNameLen);
153+
}
143154
}
144155

145-
#if !SILABS_LOG_OUT_UART
146-
prefixLen += chip::Logging::Platform::AddTimeStampAndPrefixStr(
147-
formattedMsg, reinterpret_cast<const char *>(GetCategoryString(category)), CHIP_CONFIG_LOG_MESSAGE_MAX_SIZE);
148-
#endif // SILABS_LOG_OUT_UART
149156
if (prefixLen >= sizeof formattedMsg)
150157
{
151158
prefixLen = sizeof formattedMsg - 1; // prevent overflow
@@ -183,21 +190,15 @@ static void PrintLog(const char * msg)
183190
if (sLogInitialized)
184191
{
185192
size_t sz;
186-
sz = strlen(msg);
187-
193+
sz = strlen(msg);
194+
const char * newline = "\r\n";
188195
#if defined(PW_RPC_ENABLED) && PW_RPC_ENABLED
189196
PigweedLogger::putString(msg, sz);
190-
#endif // PW_RPC_ENABLED
197+
PigweedLogger::putString(newline, 2);
198+
#else
191199
SEGGER_RTT_WriteNoLock(LOG_RTT_BUFFER_INDEX, msg, sz);
192-
193-
#if defined(PW_RPC_ENABLED) && PW_RPC_ENABLED
194-
const char * newline = "\r\n";
195-
sz = strlen(newline);
196-
#if defined(PW_RPC_ENABLED) && PW_RPC_ENABLED
197-
PigweedLogger::putString(newline, sz);
200+
SEGGER_RTT_WriteNoLock(LOG_RTT_BUFFER_INDEX, newline, 2);
198201
#endif // PW_RPC_ENABLED
199-
SEGGER_RTT_WriteNoLock(LOG_RTT_BUFFER_INDEX, newline, sz);
200-
#endif
201202
}
202203
}
203204
#endif // !SILABS_LOG_OUT_UART

0 commit comments

Comments
 (0)