STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
CalibrationMessage.hpp
Go to the documentation of this file.
1#ifndef CALIBRATION_MESSAGE_HPP
2#define CALIBRATION_MESSAGE_HPP
3
4#include <array>
5#include <cstdint>
6
7#include "CommsMessage.hpp"
8
9/**
10 * @brief Calibration Message
11 *
12 * Contains calibration status and results for sensors and encoders
13 */
15 comms::CommsMessage<double, // (0) timestamp (s) - timestamp
16 uint8_t, // (1) sensor_id - sensor identifier
17 uint8_t, // (2) sensor_type - sensor type (PT, RTD, TC, etc.)
18 uint8_t, // (3) calibration_status - calibration status
19 double, // (4) calibration_quality (0-1) - calibration quality
20 double, // (5) rmse - root mean square error
21 double, // (6) nrmse - normalized RMSE
22 double, // (7) coverage_95 - 95% confidence interval coverage
23 double, // (8) extrapolation_confidence - extrapolation confidence
24 uint32_t, // (9) num_calibration_points - number of calibration points
25 double, // (10) drift_detected - drift detection flag
26 bool, // (11) calibration_valid - calibration validity
27 double, // (12) last_calibration_time - last calibration timestamp
28 uint8_t, // (13) sensor_health - sensor health status
29 uint64_t>; // (14) time_monotonic (ns) - monotonic timestamp
30
31// Function to set calibration measurements
32static void set_calibration_measurement(CalibrationMessage& message, double timestamp,
33 uint8_t sensor_id, uint8_t sensor_type,
34 uint8_t calibration_status, double calibration_quality,
35 double rmse, double nrmse, double coverage_95,
36 double extrapolation_confidence,
37 uint32_t num_calibration_points, double drift_detected,
38 bool calibration_valid, double last_calibration_time,
39 uint8_t sensor_health, uint64_t time_monotonic) {
40 message.setField<0>(timestamp);
41 message.setField<1>(sensor_id);
42 message.setField<2>(sensor_type);
43 message.setField<3>(calibration_status);
44 message.setField<4>(calibration_quality);
45 message.setField<5>(rmse);
46 message.setField<6>(nrmse);
47 message.setField<7>(coverage_95);
48 message.setField<8>(extrapolation_confidence);
49 message.setField<9>(num_calibration_points);
50 message.setField<10>(drift_detected);
51 message.setField<11>(calibration_valid);
52 message.setField<12>(last_calibration_time);
53 message.setField<13>(sensor_health);
54 message.setField<14>(time_monotonic);
55}
56
58 CalibrationMessage message;
59 set_calibration_measurement(message, 0.0, 1, 0, 2, 0.95, 10.0, 0.01, 0.95, 0.9, 100, 0.0, true,
60 0.0, 0, 0);
61 return message;
62}
63
64#endif // CALIBRATION_MESSAGE_HPP
static CalibrationMessage generateTestMessageCalibration()
static void set_calibration_measurement(CalibrationMessage &message, double timestamp, uint8_t sensor_id, uint8_t sensor_type, uint8_t calibration_status, double calibration_quality, double rmse, double nrmse, double coverage_95, double extrapolation_confidence, uint32_t num_calibration_points, double drift_detected, bool calibration_valid, double last_calibration_time, uint8_t sensor_health, uint64_t time_monotonic)
comms::CommsMessage< double, uint8_t, uint8_t, uint8_t, double, double, double, double, double, uint32_t, double, bool, double, uint8_t, uint64_t > CalibrationMessage
Calibration Message.
CommsMessage - Template-based message serialization.