STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
SystemHealthMessage.hpp
Go to the documentation of this file.
1#ifndef SYSTEM_HEALTH_MESSAGE_HPP
2#define SYSTEM_HEALTH_MESSAGE_HPP
3
4#include <array>
5#include <cstdint>
6
7#include "CommsMessage.hpp"
8
9/**
10 * @brief System Health Message
11 *
12 * Contains overall system health status, fault information, and performance metrics
13 */
15 comms::CommsMessage<double, // (0) timestamp (s) - timestamp
16 uint8_t, // (1) system_status - overall system status
17 double, // (2) system_health (0-1) - overall system health
18 uint32_t, // (3) active_faults - number of active faults
19 uint32_t, // (4) total_faults - total number of faults
20 double, // (5) cpu_usage (%) - CPU usage percentage
21 double, // (6) memory_usage (%) - memory usage percentage
22 double, // (7) network_quality (0-1) - network communication quality
23 double, // (8) control_performance (0-1) - control system performance
24 double, // (9) navigation_accuracy (m) - navigation accuracy
25 double, // (10) calibration_quality (0-1) - overall calibration quality
26 uint8_t, // (11) emergency_status - emergency system status
27 bool, // (12) safety_systems_ok - safety systems status
28 bool, // (13) communication_ok - communication systems status
29 uint64_t>; // (14) time_monotonic (ns) - monotonic timestamp
30
31// Function to set system health measurements
32static void set_system_health_measurement(SystemHealthMessage& message, double timestamp,
33 uint8_t system_status, double system_health,
34 uint32_t active_faults, uint32_t total_faults,
35 double cpu_usage, double memory_usage,
36 double network_quality, double control_performance,
37 double navigation_accuracy, double calibration_quality,
38 uint8_t emergency_status, bool safety_systems_ok,
39 bool communication_ok, uint64_t time_monotonic) {
40 message.setField<0>(timestamp);
41 message.setField<1>(system_status);
42 message.setField<2>(system_health);
43 message.setField<3>(active_faults);
44 message.setField<4>(total_faults);
45 message.setField<5>(cpu_usage);
46 message.setField<6>(memory_usage);
47 message.setField<7>(network_quality);
48 message.setField<8>(control_performance);
49 message.setField<9>(navigation_accuracy);
50 message.setField<10>(calibration_quality);
51 message.setField<11>(emergency_status);
52 message.setField<12>(safety_systems_ok);
53 message.setField<13>(communication_ok);
54 message.setField<14>(time_monotonic);
55}
56
58 SystemHealthMessage message;
59 set_system_health_measurement(message, 0.0, 0, 0.95, 0, 0, 25.0, 45.0, 0.98, 0.92, 0.1, 0.94, 0,
60 true, true, 0);
61 return message;
62}
63
64#endif // SYSTEM_HEALTH_MESSAGE_HPP
static void set_system_health_measurement(SystemHealthMessage &message, double timestamp, uint8_t system_status, double system_health, uint32_t active_faults, uint32_t total_faults, double cpu_usage, double memory_usage, double network_quality, double control_performance, double navigation_accuracy, double calibration_quality, uint8_t emergency_status, bool safety_systems_ok, bool communication_ok, uint64_t time_monotonic)
static SystemHealthMessage generateTestMessageSystemHealth()
comms::CommsMessage< double, uint8_t, double, uint32_t, uint32_t, double, double, double, double, double, double, uint8_t, bool, bool, uint64_t > SystemHealthMessage
System Health Message.
CommsMessage - Template-based message serialization.