GCC Code Coverage Report


Directory: ./
File: firmware/controllers/sensors/core/function_pointer_sensor.h
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 80.0% 8 0 10
Functions: 66.7% 2 0 3
Branches: 66.7% 2 0 3
Decisions: 50.0% 1 - 2

Line Branch Decision Exec Source
1 /**
2 * @file function_pointer_sensor.h
3 * @brief A sensor to provide a bridge from old getX()-style functions to the new sensor registry.
4 *
5 * @date September 12, 2019
6 * @author Matthew Kennedy, (c) 2019
7 */
8
9 #pragma once
10
11 #include "sensor.h"
12
13 /* This class is intended as a bridge to bridge from old getMySensor() functions
14 * to the new system. This way, producers and consumers can be independently
15 * updated to the new system, with sensors being usable either way for some time.
16 */
17 class FunctionPointerSensor final : public Sensor {
18 public:
19 3 FunctionPointerSensor(SensorType type, float (*func)())
20 3 : Sensor(type)
21 3 , m_func(func) {}
22
23 1 SensorResult get() const final {
24
1/1
✓ Branch 2 taken 1 time.
1 float result = m_func();
25
26 // check for NaN
27 1 bool valid = !(result != result);
28
29
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
1/2
✗ Decision 'true' not taken.
✓ Decision 'false' taken 1 time.
1 if (!valid) {
30 return unexpected;
31 }
32
33 1 return result;
34 }
35
36 void showInfo(const char* /*sensorName*/) const override {}
37
38 private:
39 float (*m_func)();
40 };
41