swimtracker-firmware/firmware/lib/logging/Logger.cpp

50 lines
1006 B
C++
Raw Normal View History

2021-08-10 22:47:47 +02:00
#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_);
}