GCC Code Coverage Report


Directory: ./
File: firmware/libfirmware/util/include/rusefi/timer.h
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 1 0 1
Functions: 100.0% 1 0 1
Branches: -% 0 0 0
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 /**
2 * @file timer.h
3 */
4
5 #pragma once
6
7 #include <rusefi/rusefi_time_types.h>
8
9 /**
10 * Helper class with "has X amount of time elapsed since most recent reset" methods
11 * Brand new instances have most recent reset time far in the past, i.e. "hasElapse" is true for any reasonable range
12 */
13 class Timer final {
14 public:
15 55483 Timer() = default;
16
17 void reset();
18
19 // Reset the timer to a known timestamp (don't take a timestamp internally)
20 void reset(efitick_t nowNt);
21
22 // returns timer to the most original-as-constructed state
23 void init();
24
25 [[nodiscard]] bool hasElapsedSec(float seconds) const;
26 [[nodiscard]] bool hasElapsedMs(float ms) const;
27 [[nodiscard]] bool hasElapsedUs(float us) const;
28
29 // Return the elapsed time since the last reset.
30 // If the elapsed time is longer than 2^32 timer tick counts,
31 // then a time period representing 2^32 counts will be returned.
32 [[nodiscard]] float getElapsedSeconds() const;
33 [[nodiscard]] float getElapsedSeconds(efitick_t nowNt) const;
34 [[nodiscard]] float getElapsedUs() const;
35 // WOW yes returns US while parameter is NT
36 [[nodiscard]] float getElapsedUs(efitick_t nowNt) const;
37 // too many options for the API probably?
38 [[nodiscard]] uint32_t getElapsedNt(efitick_t nowNt) const;
39
40 // Perform an atomic update event based on the passed timestamp,
41 // returning the delta between the last reset and the provided timestamp
42 [[nodiscard]] float getElapsedSecondsAndReset(efitick_t nowNt);
43
44 [[nodiscard]] efitick_t get() const;
45
46 static constexpr efitick_t InitialState = INT64_MIN / 8;
47
48 private:
49 efitick_t m_lastReset{InitialState};
50 };
51