safer/clearer index management (#4543)

This commit is contained in:
Matthew Kennedy 2022-09-06 16:19:16 -07:00 committed by GitHub
parent 5be4586b95
commit 3112fc25de
1 changed files with 16 additions and 12 deletions

View File

@ -196,23 +196,27 @@ static void SetNextCompositeEntry(efitick_t timestamp) {
return;
}
composite_logger_s* entry = &buffer->buffer[buffer->nextIdx];
size_t idx = buffer->nextIdx;
auto nextIdx = idx + 1;
buffer->nextIdx = nextIdx;
uint32_t nowUs = NT2US(timestamp);
if (idx < efi::size(buffer->buffer)) {
composite_logger_s* entry = &buffer->buffer[idx];
// TS uses big endian, grumble
entry->timestamp = SWAP_UINT32(nowUs);
entry->priLevel = currentTrigger1;
entry->secLevel = currentTrigger2;
entry->trigger = currentTdc;
entry->sync = engine->triggerCentral.triggerState.getShaftSynchronized();
entry->coil = currentCoilState;
entry->injector = currentInjectorState;
uint32_t nowUs = NT2US(timestamp);
buffer->nextIdx++;
// TS uses big endian, grumble
entry->timestamp = SWAP_UINT32(nowUs);
entry->priLevel = currentTrigger1;
entry->secLevel = currentTrigger2;
entry->trigger = currentTdc;
entry->sync = engine->triggerCentral.triggerState.getShaftSynchronized();
entry->coil = currentCoilState;
entry->injector = currentInjectorState;
}
// if the buffer is full...
bool bufferFull = buffer->nextIdx >= efi::size(buffer->buffer);
bool bufferFull = nextIdx >= efi::size(buffer->buffer);
// ... or it's been too long since the last flush
bool bufferTimedOut = buffer->startTime.hasElapsedSec(5);