From d927a228477519bd3784650cefdceecbc500e75d Mon Sep 17 00:00:00 2001 From: codingjourney Date: Thu, 24 Oct 2024 21:49:42 +0200 Subject: lap storage as CircularBuffer, minor fixes --- src/components/stopwatch/StopWatchController.cpp | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) (limited to 'src/components/stopwatch/StopWatchController.cpp') diff --git a/src/components/stopwatch/StopWatchController.cpp b/src/components/stopwatch/StopWatchController.cpp index f9709e6b..d8e48588 100644 --- a/src/components/stopwatch/StopWatchController.cpp +++ b/src/components/stopwatch/StopWatchController.cpp @@ -27,35 +27,26 @@ void StopWatchController::Clear() { laps[i].time = 0; } lapCount = 0; - lapHead = 0; } // Lap void StopWatchController::PushLap() { TickType_t lapEnd = GetElapsedTime(); - laps[lapHead].time = lapEnd; - laps[lapHead].count = lapCount + 1; - lapCount += 1; - lapHead = lapCount % lapCapacity; + laps[0].time = lapEnd; + laps[0].count = ++lapCount; + laps--; } int StopWatchController::GetLapCount() { return lapCount; } -int Wrap(int index) { - return ((index % lapCapacity) + lapCapacity) % lapCapacity; -} - std::optional StopWatchController::LastLap(int lap) { - if (lap >= lapCapacity || lap >= lapCount) { + if (lap < 0 || lap >= lapCapacity || laps[lap].count == 0) { return {}; } - // Index backwards - int mostRecentLap = lapHead - 1; - int index = Wrap(mostRecentLap - lap); - return laps[index]; + return laps[lap]; } // Data / State acess -- cgit v1.2.3-70-g09d2