STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
CalibratedSensorMessages.hpp
Go to the documentation of this file.
1#ifndef CALIBRATED_SENSOR_MESSAGES_HPP
2#define CALIBRATED_SENSOR_MESSAGES_HPP
3
4#include <array>
5#include <cstdint>
6
8
9namespace comms {
10namespace messages {
11namespace sensor {
12
13// ── CalibratedPTMessage already in CalibratedPTMessage.hpp ──────────────
14
15/**
16 * @brief Calibrated Thermocouple message for Elodin
17 *
18 * Layout: uint64_t(8) + uint8_t(1) + pad[3](3) + float(4) + uint32_t(4) + uint8_t(1) = 21 bytes
19 */
20using CalibratedTCMessage = CommsMessage<uint64_t, // (0) timestamp_ns
21 uint8_t, // (1) channel_id
22 std::array<uint8_t, 3>, // (2) padding
23 float, // (3) calibrated_temperature_c — degrees Celsius
24 uint32_t, // (4) raw_adc_counts — for reference
25 uint8_t // (5) calibration_status — 0=uncal, 1=cal
26 >;
27
28/**
29 * @brief Calibrated RTD message for Elodin
30 *
31 * Layout: uint64_t(8) + uint8_t(1) + pad[3](3) + float(4) + uint32_t(4) + uint8_t(1) = 21 bytes
32 */
33using CalibratedRTDMessage = CommsMessage<uint64_t, // (0) timestamp_ns
34 uint8_t, // (1) channel_id
35 std::array<uint8_t, 3>, // (2) padding
36 float, // (3) calibrated_temperature_c — degrees Celsius
37 uint32_t, // (4) raw_resistance_counts — for reference
38 uint8_t // (5) calibration_status — 0=uncal, 1=cal
39 >;
40
41/**
42 * @brief Calibrated Load Cell message for Elodin
43 *
44 * Layout: uint64_t(8) + uint8_t(1) + pad[3](3) + float(4) + uint32_t(4) + uint8_t(1) = 21 bytes
45 */
46using CalibratedLCMessage = CommsMessage<uint64_t, // (0) timestamp_ns
47 uint8_t, // (1) channel_id
48 std::array<uint8_t, 3>, // (2) padding
49 float, // (3) calibrated_force_lbf — force in pounds-force
50 uint32_t, // (4) raw_adc_counts — for reference
51 uint8_t // (5) calibration_status — 0=uncal, 1=cal
52 >;
53
54/**
55 * @brief Calibrated Actuator current-sense message for Elodin
56 *
57 * 12-bit ADC, 3.3V ref, V-to-I transfer = 1:1.
58 * Layout: uint64_t(8) + uint8_t(1) + pad[3](3) + float(4) + uint32_t(4) + uint8_t(1) = 21 bytes
59 */
60using CalibratedACTMessage = CommsMessage<uint64_t, // (0) timestamp_ns
61 uint8_t, // (1) channel_id
62 std::array<uint8_t, 3>, // (2) padding
63 float, // (3) current_a — current in amps
64 uint32_t, // (4) raw_adc_counts — for reference
65 uint8_t // (5) calibration_status — 0=uncal, 1=cal
66 >;
67
68/**
69 * @brief Calibrated ball valve position message for Elodin
70 *
71 * 4-20 mA position across a 100 ohm shunt, 12-bit ADC (see calibration/ValvePosition.hpp).
72 * Same 21-byte layout as the other calibrated messages.
73 */
75 CommsMessage<uint64_t, // (0) timestamp_ns
76 uint8_t, // (1) channel_id
77 std::array<uint8_t, 3>, // (2) padding
78 float, // (3) position_pct — 0 closed, 100 open
79 uint32_t, // (4) raw_adc_counts — for reference
80 uint8_t // (5) status — 1=ok, 2=no signal (< 2 mA)
81 >;
82
83} // namespace sensor
84} // namespace messages
85} // namespace comms
86
87#endif // CALIBRATED_SENSOR_MESSAGES_HPP
CommsMessage< uint64_t, uint8_t, std::array< uint8_t, 3 >, float, uint32_t, uint8_t > CalibratedRTDMessage
Calibrated RTD message for Elodin.
CommsMessage< uint64_t, uint8_t, std::array< uint8_t, 3 >, float, uint32_t, uint8_t > CalibratedLCMessage
Calibrated Load Cell message for Elodin.
CommsMessage< uint64_t, uint8_t, std::array< uint8_t, 3 >, float, uint32_t, uint8_t > CalibratedTCMessage
Calibrated Thermocouple message for Elodin.
CommsMessage< uint64_t, uint8_t, std::array< uint8_t, 3 >, float, uint32_t, uint8_t > CalibratedACTMessage
Calibrated Actuator current-sense message for Elodin.
CommsMessage< uint64_t, uint8_t, std::array< uint8_t, 3 >, float, uint32_t, uint8_t > CalibratedValvePositionMessage
Calibrated ball valve position message for Elodin.
Central message header for all communication messages.
CommsMessage - Template-based message serialization.