GCC Code Coverage Report


Directory: ./
File: firmware/init/sensor/init_vbatt.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 42.1% 8 0 19
Functions: 50.0% 1 0 2
Branches: 42.9% 6 0 14
Decisions: 50.0% 3 - 6

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "init.h"
4 #include "adc_subscription.h"
5 #include "functional_sensor.h"
6 #include "linear_func.h"
7
8 static FunctionalSensor vbattSensor(SensorType::BatteryVoltage, /* timeout = */ MS2NT(100));
9 static FunctionalSensor ignBattSensor(SensorType::IgnKeyVoltage, /* timeout = */ MS2NT(100));
10
11 3 void initVbatt() {
12 {
13
3/4
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
3 static LinearFunc vbattFunc; // static with scoped visibility just to reduce change of code defect
14 3 vbattFunc.configure(0, 0, 1, engineConfiguration->vbattDividerCoeff, 0, 50);
15 3 vbattSensor.setFunction(vbattFunc);
16 }
17
18
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
1/2
✗ Decision 'true' not taken.
✓ Decision 'false' taken 3 times.
3 if (engineConfiguration->ignKeyAdcDivider > 0) {
19 static LinearFunc ignBattFunc; // static with scoped visibility just to reduce change of code defect
20 ignBattFunc.configure(0, 0, 1, engineConfiguration->ignKeyAdcDivider, 0, 50);
21 ignBattSensor.setFunction(ignBattFunc);
22 }
23
24
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
1/2
✗ Decision 'true' not taken.
✓ Decision 'false' taken 3 times.
3 if (isAdcChannelValid(engineConfiguration->vbattAdcChannel)) {
25 // adcVoltsPerVolt is set to 1.0 because vbatt doesn't go thru the analog input divider
26 AdcSubscription::SubscribeSensor(vbattSensor, engineConfiguration->vbattAdcChannel, /* filter HZ = */ 20, /* adcVoltsPerVolt = */ 1.0f);
27 vbattSensor.Register();
28 }
29
30
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
1/2
✗ Decision 'true' not taken.
✓ Decision 'false' taken 3 times.
3 if (isAdcChannelValid(engineConfiguration->ignKeyAdcChannel)) {
31 AdcSubscription::SubscribeSensor(ignBattSensor, engineConfiguration->ignKeyAdcChannel, /* filter HZ = */ 20, /* adcVoltsPerVolt = */ 1.0f);
32 ignBattSensor.Register();
33 }
34 3 }
35
36 void deinitVbatt() {
37 AdcSubscription::UnsubscribeSensor(vbattSensor, engineConfiguration->vbattAdcChannel);
38 AdcSubscription::UnsubscribeSensor(ignBattSensor, engineConfiguration->ignKeyAdcChannel);
39 }
40