18#if EFI_FILE_LOGGING || EFI_UNIT_TEST
20#define TIME_PRECISION 1000
27static scaled_channel<uint32_t, TIME_PRECISION>
packedTime;
42 uint16_t recLength = 0;
43 for (
size_t i = 0; i < efi::size(
fields); i++) {
58 strncpy(
buffer,
"MLVLG", 6);
79 buffer[16] = (headerSize >> 24) & 0xFF;
80 buffer[17] = (headerSize >> 16) & 0xFF;
81 buffer[18] = (headerSize >> 8) & 0xFF;
82 buffer[19] = headerSize & 0xFF;
89 int fieldsCount = efi::size(
fields);
90 buffer[22] = fieldsCount >> 8;
97 for (
size_t i = 0; i < efi::size(
fields); i++) {
118 uint16_t timestamp = nowUs / 10;
119 buffer[2] = timestamp >> 8;
120 buffer[3] = timestamp & 0xFF;
132 for (
size_t fieldIndex = 0; fieldIndex < efi::size(
fields); fieldIndex++) {
135 throw std::runtime_error{
"Engine pointer is nullptr in writeSdBlock"};
150 constexpr auto engineObjectSize{
sizeof(
Engine) };
151 static_assert(engineObjectSize < 0x400000);
153 auto const currentFieldAddress{
reinterpret_cast<uintptr_t
>(
fields[fieldIndex].
getAddr()) };
154 auto const fieldNeedsOffset{ currentFieldAddress < engineObjectSize };
155 void*
const offset{ fieldNeedsOffset ?
engine :
nullptr };
157 void*
const offset{
nullptr };
162 for (
size_t byteIndex = 0; byteIndex < entrySize; byteIndex++) {
static scaled_channel< uint32_t, TIME_PRECISION > packedTime
constexpr const void * getAddr() const
size_t writeHeader(Writer &outBuffer) const
size_t writeData(char *buffer, void *offset) const
constexpr size_t getSize() const
efitimeus_t getTimeNowUs()
efitimems_t getTimeNowMs()
Returns the 32 bit number of milliseconds since the board initialization.
static EngineAccessor engine
static LOG_FIELD_CONSTNESS_SPECIFIER_STORAGE MLG::Entries::Field fields[]
constexpr size_t DescriptorSize
static uint64_t binaryLogCount
static const uint16_t recordLength
static uint8_t blockRollCounter
static size_t writeSdBlock(Writer &outBuffer)
static size_t writeFileHeader(Writer &outBuffer)
int getSdCardFieldsCount()
size_t writeSdLogLine(Writer &bufferedWriter)
static constexpr uint16_t computeFieldsRecordLength()
virtual size_t write(const char *buffer, size_t count)=0
static BigBufferHandle buffer
void updateTunerStudioState()