STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
TCMessage.hpp
Go to the documentation of this file.
1#ifndef TC_MESSAGE_HPP
2#define TC_MESSAGE_HPP
3
4#include <array>
5#include <cstdint>
6
7#include "CommsMessage.hpp"
8
9/**
10 * @brief Thermocouple Temperature Sensor Message
11 *
12 * Contains temperature measurements from thermocouple sensors with calibration data
13 */
14using TCMessage =
15 comms::CommsMessage<double, // (0) timestamp (s) - timestamp
16 uint8_t, // (1) sensor_id - TC sensor identifier
17 double, // (2) raw_voltage (mV) - raw voltage reading
18 double, // (3) temperature (°C) - calibrated temperature
19 double, // (4) temperature_uncertainty (°C) - measurement uncertainty
20 double, // (5) cold_junction_temp (°C) - cold junction temperature
21 double, // (6) calibration_quality (0-1) - calibration quality
22 bool, // (7) calibration_valid - calibration validity
23 uint8_t, // (8) tc_type - thermocouple type (K, J, T, etc.)
24 double, // (9) linearity_correction (°C) - linearity 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 TC sensor measurements
30static void set_tc_measurement(TCMessage& message, double timestamp, uint8_t sensor_id,
31 double raw_voltage, double temperature,
32 double temperature_uncertainty, double cold_junction_temp,
33 double calibration_quality, bool calibration_valid, uint8_t tc_type,
34 double linearity_correction, uint8_t sensor_health,
35 double environmental_factor, uint64_t time_monotonic) {
36 message.setField<0>(timestamp);
37 message.setField<1>(sensor_id);
38 message.setField<2>(raw_voltage);
39 message.setField<3>(temperature);
40 message.setField<4>(temperature_uncertainty);
41 message.setField<5>(cold_junction_temp);
42 message.setField<6>(calibration_quality);
43 message.setField<7>(calibration_valid);
44 message.setField<8>(tc_type);
45 message.setField<9>(linearity_correction);
46 message.setField<10>(sensor_health);
47 message.setField<11>(environmental_factor);
48 message.setField<12>(time_monotonic);
49}
50
52 TCMessage message;
53 set_tc_measurement(message, 0.0, 1, 1.0, 25.0, 0.2, 25.0, 0.97, true, 0, 0.1, 0, 1.0, 0);
54 return message;
55}
56
57// Specialized TC messages for different locations
58using TCExhaustMessage = TCMessage; // Exhaust gas TC
59using TCChamberMessage = TCMessage; // Chamber gas TC
60using TCCoolantMessage = TCMessage; // Coolant TC
61
62#endif // TC_MESSAGE_HPP
comms::CommsMessage< double, uint8_t, double, double, double, double, double, bool, uint8_t, double, uint8_t, double, uint64_t > TCMessage
Thermocouple Temperature Sensor Message.
Definition TCMessage.hpp:14
static void set_tc_measurement(TCMessage &message, double timestamp, uint8_t sensor_id, double raw_voltage, double temperature, double temperature_uncertainty, double cold_junction_temp, double calibration_quality, bool calibration_valid, uint8_t tc_type, double linearity_correction, uint8_t sensor_health, double environmental_factor, uint64_t time_monotonic)
Definition TCMessage.hpp:30
TCMessage TCCoolantMessage
Definition TCMessage.hpp:60
TCMessage TCExhaustMessage
Definition TCMessage.hpp:58
static TCMessage generateTestMessageTC()
Definition TCMessage.hpp:51
TCMessage TCChamberMessage
Definition TCMessage.hpp:59
CommsMessage - Template-based message serialization.