| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | #pragma once | |||
| 2 | ||||
| 3 | #define MAIN_LOOP_RATE 1000 | |||
| 4 | ||||
| 5 | void initMainLoop(); | |||
| 6 | ||||
| 7 | enum class LoopPeriod : uint8_t { | |||
| 8 | None = 0, | |||
| 9 | Period1000hz = 1 << 0, | |||
| 10 | Period500hz = 1 << 1, | |||
| 11 | Period250hz = 1 << 2, | |||
| 12 | Period200hz = 1 << 3, | |||
| 13 | Period20hz = 1 << 4, | |||
| 14 | }; | |||
| 15 | ||||
| 16 | 25 | inline constexpr LoopPeriod& operator|=(LoopPeriod& a, const LoopPeriod& b) { | ||
| 17 | 25 | a = static_cast<LoopPeriod>(static_cast<uint8_t>(a) | static_cast<uint8_t>(b)); | ||
| 18 | 25 | return a; | ||
| 19 | } | |||
| 20 | ||||
| 21 | 25 | inline constexpr bool operator&(LoopPeriod a, LoopPeriod b) { | ||
| 22 | 25 | return 0 != (static_cast<uint8_t>(a) & static_cast<uint8_t>(b)); | ||
| 23 | } | |||
| 24 | ||||
| 25 | 61138 | constexpr int hzForPeriod(LoopPeriod p) { | ||
| 26 |
4/7✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 60050 times.
✓ Branch 5 taken 1086 times.
✓ Branch 6 taken 1 time.
|
61138 | switch (p) { | |
| 27 | ✗ | case LoopPeriod::None: return 0; | ||
| 28 | ✗ | case LoopPeriod::Period1000hz: return 1000; | ||
| 29 |
1/1✓ Decision 'true' taken 1 time.
|
1 | case LoopPeriod::Period500hz: return 500; | |
| 30 | ✗ | case LoopPeriod::Period250hz: return 250; | ||
| 31 |
1/1✓ Decision 'true' taken 60050 times.
|
60050 | case LoopPeriod::Period200hz: return 200; | |
| 32 |
1/1✓ Decision 'true' taken 1086 times.
|
1086 | case LoopPeriod::Period20hz: return 20; | |
| 33 | } | |||
| 34 | ||||
| 35 | 1 | return 0; | ||
| 36 | } | |||
| 37 | ||||
| 38 | 61136 | constexpr float loopPeriodMs(LoopPeriod p) { | ||
| 39 | 61136 | return 1000.0f / hzForPeriod(p); | ||
| 40 | } | |||
| 41 | ||||
| 42 | #ifndef ADC_UPDATE_RATE | |||
| 43 | #define ADC_UPDATE_RATE LoopPeriod::Period500hz | |||
| 44 | #endif | |||
| 45 | ||||
| 46 | #define ETB_UPDATE_RATE LoopPeriod::Period500hz | |||
| 47 | #define FAST_CALLBACK_RATE LoopPeriod::Period200hz | |||
| 48 | #define SLOW_CALLBACK_RATE LoopPeriod::Period20hz | |||
| 49 | ||||
| 50 | #define FAST_CALLBACK_PERIOD_MS loopPeriodMs(FAST_CALLBACK_RATE) | |||
| 51 | #define SLOW_CALLBACK_PERIOD_MS loopPeriodMs(SLOW_CALLBACK_RATE) | |||
| 52 |