18#if EFI_FILE_LOGGING || EFI_UNIT_TEST
20#define TIME_PRECISION 1000
23static scaled_channel<uint32_t, TIME_PRECISION>
packedTime;
35 uint16_t recLength = 0;
36 for (
size_t i = 0; i < efi::size(
fields); i++) {
49 char buffer[MLQ_HEADER_SIZE];
51 strncpy(
buffer,
"MLVLG", 6);
69 size_t headerSize = MLQ_HEADER_SIZE + efi::size(
fields) * MLQ_FIELD_HEADER_SIZE;
72 buffer[16] = (headerSize >> 24) & 0xFF;
73 buffer[17] = (headerSize >> 16) & 0xFF;
74 buffer[18] = (headerSize >> 8) & 0xFF;
75 buffer[19] = headerSize & 0xFF;
82 int fieldsCount = efi::size(
fields);
83 buffer[22] = fieldsCount >> 8;
87 writen += MLQ_HEADER_SIZE;
90 for (
size_t i = 0; i < efi::size(
fields); i++) {
111 uint16_t timestamp = nowUs / 10;
112 buffer[2] = timestamp >> 8;
113 buffer[3] = timestamp & 0xFF;
125 for (
size_t fieldIndex = 0; fieldIndex < efi::size(
fields); fieldIndex++) {
135 for (
size_t byteIndex = 0; byteIndex < entrySize; byteIndex++) {
int getSdCardFieldsCount()
static size_t writeFileHeader(Writer &outBuffer)
static scaled_channel< uint32_t, TIME_PRECISION > packedTime
static constexpr uint16_t computeFieldsRecordLength()
static size_t writeSdBlock(Writer &outBuffer)
size_t writeSdLogLine(Writer &bufferedWriter)
static uint64_t binaryLogCount
static uint8_t blockRollCounter
static const uint16_t recordLength
bool needsEngineOffsetHack(size_t size) const
size_t writeData(char *buffer, void *offset) const
constexpr size_t getSize() const
size_t writeHeader(Writer &outBuffer) const
efitimeus_t getTimeNowUs()
efitimems_t getTimeNowMs()
Returns the 32 bit number of milliseconds since the board initialization.
static EngineAccessor engine
static const LogField fields[]
virtual size_t write(const char *buffer, size_t count)=0
static BigBufferHandle buffer
void updateTunerStudioState()