GCC Code Coverage Report


Directory: components/
File: brightness_controller/src/brightness_controller.c
Date: 2025-10-25 23:13:53
Coverage Exec Excl Total
Lines: 100.0% 21 0 21
Functions: 100.0% 3 0 3
Branches: 100.0% 4 0 4

Line Branch Exec Source
1 /**
2 * @file brightness_controller.c
3 * @brief Module to control the brightness.
4 */
5
6 #include "brightness_controller.h"
7 #include "rte.h"
8
9 #ifdef CONFIG_BRIGHTNESS_ADJUSTMENT_AUTOMATIC
10
11 #define BRIGHTNESS_PERIOD_TICKS ((unsigned int)((CONFIG_BRIGHTNESS_ADJUSTMENT_PERIOD * 1000) / BRIGHTNESS_TASK_PERIOD))
12
13 /**
14 * ```{impl} Periodic Brightness Adjustment
15 * :id: SWIMPL_BC-001
16 * :implements: SWDD_BC-100, SWDD_BC-102
17 * ```
18 */
19 510 SPLE_TESTABLE_STATIC brightness_t periodicBrightnessAdjustment(BrightnessAdjustmentData *data)
20 {
21 510 brightness_t brightnessValue = 0;
22
23
2/2
✓ Branch 2 → 3 taken 506 times.
✓ Branch 2 → 4 taken 4 times.
510 if (data->ticksCounter < data->halfPeriod)
24 {
25 // Ramp up linearly from min to max
26 506 brightnessValue = data->minBrightness + ((data->maxBrightness - data->minBrightness) * data->ticksCounter) / data->halfPeriod;
27 }
28 else
29 {
30 // Ramp down linearly from max to min
31 4 brightnessValue = data->maxBrightness - ((data->maxBrightness - data->minBrightness) * (data->ticksCounter - data->halfPeriod)) / data->halfPeriod;
32 }
33
34 // Increment and reset ticksCounter based on the period
35 510 data->ticksCounter = (data->ticksCounter + 1) % data->period;
36
37 510 return brightnessValue;
38 }
39
40 #else /* CONFIG_BRIGHTNESS_ADJUSTMENT_AUTOMATIC */
41
42 /**
43 * ```{impl} Manual Brightness Adjustment
44 * :id: SWIMPL_BC-002
45 * :implements: SWDD_BC-100, SWDD_BC-101, SWDD_BC-201
46 * ```
47 */
48 4 static brightness_t manualBrightnessAdjustment(void)
49 {
50 4 percentage_t mainKnobValue = RteGetMainKnobValue();
51 4 brightness_t brightnessValue = 0;
52
53
2/2
✓ Branch 3 → 4 taken 2 times.
✓ Branch 3 → 5 taken 2 times.
4 if (mainKnobValue == 0)
54 {
55 2 brightnessValue = 0;
56 }
57 else
58 {
59 2 brightnessValue = (mainKnobValue * 255) / 100;
60 }
61 4 return brightnessValue;
62 }
63
64 #endif /* CONFIG_BRIGHTNESS_ADJUSTMENT_AUTOMATIC */
65
66 /**
67 * ```{impl} Brightness Controller runnable
68 * :id: SWIMPL_BC-003
69 * :implements: SWDD_BC-200, SWDD_BC-202, SWDD_BC-203
70 * ```
71 */
72 504 void brightnessController(void)
73 {
74 504 brightness_t brightnessValue = 0;
75 #ifdef CONFIG_BRIGHTNESS_ADJUSTMENT_AUTOMATIC
76 static BrightnessAdjustmentData data = {
77 .ticksCounter = 0,
78 .period = BRIGHTNESS_PERIOD_TICKS,
79 .halfPeriod = BRIGHTNESS_PERIOD_TICKS / 2,
80 .maxBrightness = 200,
81 .minBrightness = 50};
82
83 500 brightnessValue = periodicBrightnessAdjustment(&data);
84 500 RteSetBrightnessAdjustmentCounter(data.ticksCounter);
85 #elif defined(CONFIG_BRIGHTNESS_ADJUSTMENT_MANUAL)
86 4 brightnessValue = manualBrightnessAdjustment();
87 #endif
88 504 RteSetBrightnessValue(brightnessValue);
89 504 }
90