Keep hardware CDC packet log lines whole under congestion

This commit is contained in:
mikecarper committed 2026-10-04 21:40:43 -07:00
1 parent 1ec9234d3c
commit 8a7fe7ff42
5 files changed
+150 -9

No files matched your search

+12
View File
@@ -32,6 +32,17 @@ inline bool& serialLogPortSeen() {
template <class T>
bool serialLogEmit(T& out, const char* data, size_t len) {
#if defined(ESP32_PLATFORM) && defined(ARDUINO_USB_CDC_ON_BOOT) && \
(ARDUINO_USB_CDC_ON_BOOT == 1) && defined(ARDUINO_USB_MODE) && \
(ARDUINO_USB_MODE == 1)
// The HWCDC logging view checks this complete record again under the shared
// producer guard. Never leave a line prefix behind when its host stalls.
const int space = out.availableForWrite();
if (space <= 0 || static_cast<size_t>(space) < len) return false;
if (out.write(reinterpret_cast<const uint8_t*>(data), len) != len) return false;
serialLogPortSeen() = true;
return true;
#else
if (out.availableForWrite() <= 0) return false;
const uint32_t start = millis();
@@ -55,6 +66,7 @@ bool serialLogEmit(T& out, const char* data, size_t len) {
}
serialLogPortSeen() = true;
return true;
#endif
}
template <size_t CAP = SERIAL_LOG_LINE_MAX>