mirror of
https://github.com/tbnobody/OpenDTU.git
synced 2025-12-11 17:30:37 +01:00
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:
committed by
Thomas Basler
parent
466f584737
commit
5c89460e14
@@ -11,12 +11,11 @@
|
|||||||
#include <queue>
|
#include <queue>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
class MessageOutputClass : public Print {
|
class MessageOutputClass {
|
||||||
public:
|
public:
|
||||||
MessageOutputClass();
|
MessageOutputClass();
|
||||||
void init(Scheduler& scheduler);
|
void init(Scheduler& scheduler);
|
||||||
size_t write(uint8_t c) override;
|
size_t write(const uint8_t* buffer, size_t size);
|
||||||
size_t write(const uint8_t* buffer, size_t size) override;
|
|
||||||
void register_ws_output(AsyncWebSocket* output);
|
void register_ws_output(AsyncWebSocket* output);
|
||||||
|
|
||||||
static int log_vprintf(const char *fmt, va_list arguments);
|
static int log_vprintf(const char *fmt, va_list arguments);
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ void MessageOutputClass::register_ws_output(AsyncWebSocket* output)
|
|||||||
int MessageOutputClass::log_vprintf(const char* fmt, va_list arguments)
|
int MessageOutputClass::log_vprintf(const char* fmt, va_list arguments)
|
||||||
{
|
{
|
||||||
char log_buffer[WS_CHUNK_SIZE_BYTES];
|
char log_buffer[WS_CHUNK_SIZE_BYTES];
|
||||||
vsnprintf(log_buffer, sizeof(log_buffer), fmt, arguments);
|
auto written = vsnprintf(log_buffer, sizeof(log_buffer), fmt, arguments);
|
||||||
return MessageOutput.print(log_buffer);
|
return MessageOutput.write(reinterpret_cast<uint8_t*>(log_buffer), written);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageOutputClass::serialWrite(MessageOutputClass::message_t const& m)
|
void MessageOutputClass::serialWrite(MessageOutputClass::message_t const& m)
|
||||||
@@ -53,25 +53,6 @@ void MessageOutputClass::serialWrite(MessageOutputClass::message_t const& m)
|
|||||||
Serial.flush();
|
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)
|
size_t MessageOutputClass::write(const uint8_t* buffer, size_t size)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lock(_msgLock);
|
std::lock_guard<std::mutex> lock(_msgLock);
|
||||||
|
|||||||
Reference in New Issue
Block a user