GCC Code Coverage Report


Directory: ./
File: firmware/controllers/lua/can_filter.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 90.0% 18 0 20
Functions: 100.0% 3 0 3
Branches: 50.0% 6 0 12
Decisions: 62.5% 5 - 8

Line Branch Decision Exec Source
1 #include "pch.h"
2 #include "can_filter.h"
3 #include "can_hw.h"
4
5 #ifndef LUA_RX_MAX_FILTER_COUNT
6 #define LUA_RX_MAX_FILTER_COUNT 48
7 #endif
8
9 static size_t filterCount = 0;
10 static CanFilter filters[LUA_RX_MAX_FILTER_COUNT];
11
12 4 CanFilter* getFilterForId(size_t busIndex, int Id) {
13
1/2
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
1/2
✓ Decision 'true' taken 5 times.
✗ Decision 'false' not taken.
5 for (size_t i = 0; i < filterCount; i++) {
14 5 auto& filter = filters[i];
15
16
2/2
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 1 time.
2/2
✓ Decision 'true' taken 4 times.
✓ Decision 'false' taken 1 time.
5 if (filter.accept(Id)) {
17
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
1/2
✓ Decision 'true' taken 4 times.
✗ Decision 'false' not taken.
4 if (filter.Bus == ANY_BUS || filter.Bus == (int)busIndex) {
18 4 return &filter;
19 }
20 }
21 }
22
23 return nullptr;
24 }
25
26 2 void resetLuaCanRx() {
27 // Clear all lua filters - reloading the script will reinit them
28 2 filterCount = 0;
29 2 }
30
31 4 void addLuaCanRxFilter(int32_t eid, uint32_t mask, int bus, int callback) {
32
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
1/2
✗ Decision 'true' not taken.
✓ Decision 'false' taken 4 times.
4 if (filterCount >= LUA_RX_MAX_FILTER_COUNT) {
33 criticalError("Too many Lua CAN RX filters");
34 }
35
36
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
4 efiPrintf("Added Lua CAN RX filter id 0x%x mask 0x%x with%s custom function", (unsigned int)eid, (unsigned int)mask, (callback == -1 ? "out" : ""));
37
38 4 filters[filterCount].Id = eid;
39 4 filters[filterCount].Mask = mask;
40 4 filters[filterCount].Bus = bus;
41 4 filters[filterCount].Callback = callback;
42
43 4 filterCount++;
44 4 }
45