50 lines
1006 B
C++
50 lines
1006 B
C++
|
#include "Logger.h"
|
||
|
|
||
|
constexpr size_t LOG_SIZE = 1024 * 1024 * 2;
|
||
|
|
||
|
static Logger *theLogger = nullptr;
|
||
|
|
||
|
Logger *Logger::getInstance()
|
||
|
{
|
||
|
return theLogger;
|
||
|
}
|
||
|
|
||
|
void Logger::init()
|
||
|
{
|
||
|
theLogger = new Logger();
|
||
|
Serial.begin(115200);
|
||
|
while (!Serial)
|
||
|
{
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Logger::Logger()
|
||
|
{
|
||
|
data_ = (char *)heap_caps_malloc(LOG_SIZE, MALLOC_CAP_SPIRAM);
|
||
|
totalSize_ = LOG_SIZE;
|
||
|
currentSize_ = 0;
|
||
|
|
||
|
// write header placeholder
|
||
|
const auto millisPlaceholder = 0;
|
||
|
memcpy(&data_[currentSize_], &millisPlaceholder, sizeof(millisPlaceholder));
|
||
|
currentSize_ += sizeof(millisPlaceholder);
|
||
|
|
||
|
NtpTimeT ntpPlaceholder = 0;
|
||
|
memcpy(&data_[currentSize_], &ntpPlaceholder, sizeof(ntpPlaceholder));
|
||
|
currentSize_ += sizeof(ntpPlaceholder);
|
||
|
}
|
||
|
|
||
|
void Logger::setNtpTime(NtpTimeT ntpTime)
|
||
|
{
|
||
|
auto data = getInstance()->data_;
|
||
|
|
||
|
const auto millisTime = millis();
|
||
|
memcpy(&data[0], &millisTime, sizeof(millisTime));
|
||
|
memcpy(&data[sizeof(millisTime)], &ntpTime, sizeof(ntpTime));
|
||
|
}
|
||
|
|
||
|
|
||
|
Logger::~Logger()
|
||
|
{
|
||
|
free(data_);
|
||
|
}
|