do not derive MessageOutput from Print

force us to use ESP_LOGx macros to log messages. print*() functions are
no longer available through MessageOutput.
This commit is contained in:
Bernhard Kirchen
2025-05-21 23:02:59 +02:00
committed by Thomas Basler
parent 466f584737
commit 5c89460e14
2 changed files with 4 additions and 24 deletions

View File

@@ -11,12 +11,11 @@
#include <queue>
#include <memory>
class MessageOutputClass : public Print {
class MessageOutputClass {
public:
MessageOutputClass();
void init(Scheduler& scheduler);
size_t write(uint8_t c) override;
size_t write(const uint8_t* buffer, size_t size) override;
size_t write(const uint8_t* buffer, size_t size);
void register_ws_output(AsyncWebSocket* output);
static int log_vprintf(const char *fmt, va_list arguments);

View File

@@ -32,8 +32,8 @@ void MessageOutputClass::register_ws_output(AsyncWebSocket* output)
int MessageOutputClass::log_vprintf(const char* fmt, va_list arguments)
{
char log_buffer[WS_CHUNK_SIZE_BYTES];
vsnprintf(log_buffer, sizeof(log_buffer), fmt, arguments);
return MessageOutput.print(log_buffer);
auto written = vsnprintf(log_buffer, sizeof(log_buffer), fmt, arguments);
return MessageOutput.write(reinterpret_cast<uint8_t*>(log_buffer), written);
}
void MessageOutputClass::serialWrite(MessageOutputClass::message_t const& m)
@@ -53,25 +53,6 @@ void MessageOutputClass::serialWrite(MessageOutputClass::message_t const& m)
Serial.flush();
}
size_t MessageOutputClass::write(uint8_t c)
{
std::lock_guard<std::mutex> lock(_msgLock);
auto res = _task_messages.emplace(xTaskGetCurrentTaskHandle(), message_t());
auto iter = res.first;
auto& message = iter->second;
message.push_back(c);
if (c == '\n') {
serialWrite(message);
_lines.emplace(std::move(message));
_task_messages.erase(iter);
}
return 1;
}
size_t MessageOutputClass::write(const uint8_t* buffer, size_t size)
{
std::lock_guard<std::mutex> lock(_msgLock);