STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
RTDMessage.hpp
Go to the documentation of this file.
1#ifndef RTD_MESSAGE_HPP
2#define RTD_MESSAGE_HPP
3
4#include <array>
5#include <cstdint>
6
7#include "CommsMessage.hpp"
8
9/**
10 * @brief RTD Temperature Sensor Message
11 *
12 * Contains temperature measurements from RTD sensors with calibration data
13 */
15 comms::CommsMessage<double, // (0) timestamp (s) - timestamp
16 uint8_t, // (1) sensor_id - RTD sensor identifier
17 double, // (2) raw_resistance (Ohm) - raw resistance reading
18 double, // (3) temperature (°C) - calibrated temperature
19 double, // (4) temperature_uncertainty (°C) - measurement uncertainty
20 double, // (5) reference_temperature (°C) - reference temperature
21 double, // (6) calibration_quality (0-1) - calibration quality
22 bool, // (7) calibration_valid - calibration validity
23 uint8_t, // (8) rtd_type - RTD type (PT100, PT1000, etc.)
24 double, // (9) self_heating_correction (°C) - self-heating correction
25 uint8_t, // (10) sensor_health - sensor health status
26 double, // (11) environmental_factor - environmental correction factor
27 uint64_t>; // (12) time_monotonic (ns) - monotonic timestamp
28
29// Function to set RTD sensor measurements
30static void set_rtd_measurement(RTDMessage& message, double timestamp, uint8_t sensor_id,
31 double raw_resistance, double temperature,
32 double temperature_uncertainty, double reference_temperature,
33 double calibration_quality, bool calibration_valid,
34 uint8_t rtd_type, double self_heating_correction,
35 uint8_t sensor_health, double environmental_factor,
36 uint64_t time_monotonic) {
37 message.setField<0>(timestamp);
38 message.setField<1>(sensor_id);
39 message.setField<2>(raw_resistance);
40 message.setField<3>(temperature);
41 message.setField<4>(temperature_uncertainty);
42 message.setField<5>(reference_temperature);
43 message.setField<6>(calibration_quality);
44 message.setField<7>(calibration_valid);
45 message.setField<8>(rtd_type);
46 message.setField<9>(self_heating_correction);
47 message.setField<10>(sensor_health);
48 message.setField<11>(environmental_factor);
49 message.setField<12>(time_monotonic);
50}
51
53 RTDMessage message;
54 set_rtd_measurement(message, 0.0, 1, 109.7, 25.0, 0.1, 25.0, 0.98, true, 0, 0.05, 0, 1.0, 0);
55 return message;
56}
57
58// Specialized RTD messages for different locations
59using RTDChamberWallMessage = RTDMessage; // Chamber wall RTD
60using RTDFuelTempMessage = RTDMessage; // Fuel temperature RTD
61using RTDOxTempMessage = RTDMessage; // Oxidizer temperature RTD
62using RTDCoolantTempMessage = RTDMessage; // Coolant temperature RTD
63
64#endif // RTD_MESSAGE_HPP
comms::CommsMessage< double, uint8_t, double, double, double, double, double, bool, uint8_t, double, uint8_t, double, uint64_t > RTDMessage
RTD Temperature Sensor Message.
static void set_rtd_measurement(RTDMessage &message, double timestamp, uint8_t sensor_id, double raw_resistance, double temperature, double temperature_uncertainty, double reference_temperature, double calibration_quality, bool calibration_valid, uint8_t rtd_type, double self_heating_correction, uint8_t sensor_health, double environmental_factor, uint64_t time_monotonic)
RTDMessage RTDChamberWallMessage
RTDMessage RTDFuelTempMessage
static RTDMessage generateTestMessageRTD()
RTDMessage RTDCoolantTempMessage
RTDMessage RTDOxTempMessage
CommsMessage - Template-based message serialization.