STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
ControllerMessages.hpp
Go to the documentation of this file.
1#ifndef DAQ_CONTROLLER_MESSAGES_HPP
2#define DAQ_CONTROLLER_MESSAGES_HPP
3
4#include <cstdint>
5
7
8namespace comms {
9namespace messages {
10namespace control {
11
12// Import CommsMessage from parent namespace
14
15/**
16 * @brief Controller actuation command message
17 *
18 * Contains PWM duty cycles and on/off states from RobustDDPController.
19 * Written to Elodin DB for logging and replay.
20 */
22 CommsMessage<uint64_t, // (0) timestamp_ns - monotonic timestamp
23 float, // (1) duty_F - Fuel duty cycle [0,1]
24 float, // (2) duty_O - Oxidizer duty cycle [0,1]
25 uint8_t, // (3) u_F_on - Fuel solenoid on/off (0=OFF, 1=ON)
26 uint8_t, // (4) u_O_on - Oxidizer solenoid on/off (0=OFF, 1=ON)
27 uint8_t // (5) valid - Command validity flag
28 >;
29
30/**
31 * @brief Controller diagnostics message
32 *
33 * Contains controller internal state and diagnostics for monitoring and replay.
34 */
35// Field order: U64 + 6xF64 + I32 + 2xU8
36// I32 is at byte offset 56 (4-byte aligned); U8s follow at 60, 61.
38 CommsMessage<uint64_t, // (0) timestamp_ns offset=0 (8 bytes)
39 double, // (1) F_ref offset=8 (8 bytes)
40 double, // (2) MR_ref offset=16 (8 bytes)
41 double, // (3) F_estimated offset=24 (8 bytes)
42 double, // (4) MR_estimated offset=32 (8 bytes)
43 double, // (5) P_ch offset=40 (8 bytes)
44 double, // (6) cost offset=48 (8 bytes)
45 int32_t, // (7) solver_iters offset=56 (4 bytes, 4-byte aligned)
46 uint8_t, // (8) safety_filtered offset=60 (1 byte)
47 uint8_t // (9) cutoff_active offset=61 (1 byte)
48 >;
49
50/**
51 * @brief Controller measurement input message
52 *
53 * Contains sensor measurements fed to the controller.
54 * Written to DB for replay/debugging.
55 */
57 CommsMessage<uint64_t, // (0) timestamp_ns - monotonic timestamp
58 double, // (1) P_copv - COPV pressure [Pa]
59 double, // (2) P_reg - Regulator pressure [Pa]
60 double, // (3) P_u_fuel - Fuel upstream pressure [Pa]
61 double, // (4) P_u_ox - Oxidizer upstream pressure [Pa]
62 double, // (5) P_d_fuel - Fuel downstream pressure [Pa]
63 double, // (6) P_d_ox - Oxidizer downstream pressure [Pa]
64 double, // (7) P_ch_mp1 - Chamber mid-PT 1 [Pa] (0.0 if absent)
65 double // (8) P_ch_mp2 - Chamber mid-PT 2 [Pa] (0.0 if absent)
66 >;
67
68/**
69 * @brief PSM state transition event message [0x43, 0x00]
70 *
71 * Written by PressureStateMachine on every executeStateEntryActions call.
72 * Layout: U64(8) + U8(1) + U8(1) + U8(1) = 11 bytes
73 */
75 CommsMessage<uint64_t, // (0) timestamp_ns
76 uint8_t, // (1) from_state
77 uint8_t, // (2) to_state
78 uint8_t // (3) reason (0=auto-transition, 1=manual, 2=abort)
79 >;
80
81/**
82 * @brief Fire state / PWM event message [0x44, 0x00]
83 *
84 * Written by ControllerService::setFireActive on every change.
85 * Layout: U64(8) + U8(1) + F32(4) + F32(4) = 17 bytes
86 */
87using ControllerFireStateMessage = CommsMessage<uint64_t, // (0) timestamp_ns
88 uint8_t, // (1) fire_active (0=inactive, 1=active)
89 float, // (2) duty_F at activation/deactivation
90 float // (3) duty_O at activation/deactivation
91 >;
92
93} // namespace control
94} // namespace messages
95} // namespace comms
96
97#endif // DAQ_CONTROLLER_MESSAGES_HPP
CommsMessage< uint64_t, double, double, double, double, double, double, double, double > ControllerMeasurementMessage
Controller measurement input message.
CommsMessage< uint64_t, double, double, double, double, double, double, int32_t, uint8_t, uint8_t > ControllerDiagnosticsMessage
Controller diagnostics message.
CommsMessage< uint64_t, float, float, uint8_t, uint8_t, uint8_t > ControllerActuationMessage
Controller actuation command message.
CommsMessage< uint64_t, uint8_t, float, float > ControllerFireStateMessage
Fire state / PWM event message [0x44, 0x00].
CommsMessage< uint64_t, uint8_t, uint8_t, uint8_t > ControllerStateTransitionMessage
PSM state transition event message [0x43, 0x00].
Central message header for all communication messages.
CommsMessage - Template-based message serialization.