| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | /** | |||
| 2 | * @file deadband.h | |||
| 3 | * | |||
| 4 | * @date April 6, 2020 | |||
| 5 | * @author Matthew Kennedy, (c) 2020 | |||
| 6 | */ | |||
| 7 | ||||
| 8 | #pragma once | |||
| 9 | ||||
| 10 | #include "efilib.h" | |||
| 11 | ||||
| 12 | template <int TDeadband> | |||
| 13 | class Deadband { | |||
| 14 | public: | |||
| 15 | 466 | bool gt(float lhs, float rhs) { | ||
| 16 | // If we're within the deadband, be "sticky" with the previous value | |||
| 17 | 466 | float absError = std::abs(lhs - rhs); | ||
| 18 | ||||
| 19 | // If there's enough error, actually compare values | |||
| 20 |
6/8Deadband<5>::gt(float, float):
✓ Branch 0 taken 258 times.
✓ Branch 1 taken 17 times.
Deadband<200>::gt(float, float):
✓ Branch 0 taken 156 times.
✓ Branch 1 taken 8 times.
Deadband<25>::gt(float, float):
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
Deadband<2>::gt(float, float):
✓ Branch 0 taken 15 times.
✗ Branch 1 not taken.
|
0/2✗ Decision 'true' not taken.
✗ Decision 'false' not taken.
|
466 | if (absError > TDeadband) { |
| 21 | 441 | m_lastState = lhs > rhs; | ||
| 22 | } | |||
| 23 | ||||
| 24 | 466 | return m_lastState; | ||
| 25 | } | |||
| 26 | ||||
| 27 | // Deadband has no concept of equal - only greater and less, so to compute gt, we just swap args | |||
| 28 | 27 | bool lt(float lhs, float rhs) { | ||
| 29 | 27 | return gt(rhs, lhs); | ||
| 30 | } | |||
| 31 | ||||
| 32 | private: | |||
| 33 | bool m_lastState =false; | |||
| 34 | }; | |||
| 35 |