GCC Code Coverage Report


Directory: ./
File: components/parking_system/include/events/Event.h
Date: 2025-12-16 19:41:02
Exec Total Coverage
Lines: 4 48 8.3%
Functions: 1 3 33.3%
Branches: 0 19 0.0%

Line Branch Exec Source
1 #pragma once
2
3 #include <cstdint>
4 #include <variant>
5
6 /**
7 * @brief Event types in the parking system
8 */
9 enum class EventType {
10 // Hardware Events (from GPIO interrupts)
11 EntryButtonPressed,
12 EntryButtonReleased,
13 EntryLightBarrierBlocked,
14 EntryLightBarrierCleared,
15 ExitLightBarrierBlocked,
16 ExitLightBarrierCleared,
17
18 // System Events
19 CapacityAvailable,
20 CapacityFull,
21 TicketIssued,
22 TicketValidated,
23 TicketRejected,
24
25 // State Events (for logging/monitoring)
26 EntryBarrierOpened,
27 EntryBarrierClosed,
28 ExitBarrierOpened,
29 ExitBarrierClosed,
30 CarEnteredParking,
31 CarExitedParking,
32
33 // Timer Events
34 BarrierTimeout
35 };
36
37 /**
38 * @brief Event payload types
39 */
40 using EventPayload = std::variant<std::monostate, uint32_t, bool>;
41
42 /**
43 * @brief Event structure
44 */
45 struct Event {
46 EventType type;
47 uint64_t timestamp;
48 EventPayload payload;
49
50 ✗ Event()
51 ✗ : type(EventType::EntryButtonPressed)
52 ✗ , timestamp(0)
53 ✗ , payload(std::monostate{}) {}
54
55 30 Event(EventType t, uint64_t ts = 0, EventPayload p = std::monostate{})
56 30 : type(t)
57 30 , timestamp(ts)
58 30 , payload(p) {}
59 };
60
61 /**
62 * @brief Get string representation of EventType
63 */
64 ✗ inline const char* eventTypeToString(EventType type) {
65 ✗ switch (type) {
66 ✗ case EventType::EntryButtonPressed:
67 ✗ return "EntryButtonPressed";
68 ✗ case EventType::EntryButtonReleased:
69 ✗ return "EntryButtonReleased";
70 ✗ case EventType::EntryLightBarrierBlocked:
71 ✗ return "EntryLightBarrierBlocked";
72 ✗ case EventType::EntryLightBarrierCleared:
73 ✗ return "EntryLightBarrierCleared";
74 ✗ case EventType::ExitLightBarrierBlocked:
75 ✗ return "ExitLightBarrierBlocked";
76 ✗ case EventType::ExitLightBarrierCleared:
77 ✗ return "ExitLightBarrierCleared";
78 ✗ case EventType::CapacityAvailable:
79 ✗ return "CapacityAvailable";
80 ✗ case EventType::CapacityFull:
81 ✗ return "CapacityFull";
82 ✗ case EventType::TicketIssued:
83 ✗ return "TicketIssued";
84 ✗ case EventType::TicketValidated:
85 ✗ return "TicketValidated";
86 ✗ case EventType::TicketRejected:
87 ✗ return "TicketRejected";
88 ✗ case EventType::EntryBarrierOpened:
89 ✗ return "EntryBarrierOpened";
90 ✗ case EventType::EntryBarrierClosed:
91 ✗ return "EntryBarrierClosed";
92 ✗ case EventType::ExitBarrierOpened:
93 ✗ return "ExitBarrierOpened";
94 ✗ case EventType::ExitBarrierClosed:
95 ✗ return "ExitBarrierClosed";
96 ✗ case EventType::CarEnteredParking:
97 ✗ return "CarEnteredParking";
98 ✗ case EventType::CarExitedParking:
99 ✗ return "CarExitedParking";
100 ✗ case EventType::BarrierTimeout:
101 ✗ return "BarrierTimeout";
102 ✗ default:
103 ✗ return "Unknown";
104 }
105 }
106