ifw-ccf 4.0.0
Loading...
Searching...
No Matches
monitorThread.hpp
Go to the documentation of this file.
1
5#ifndef IFW_CCF_CTL_MONITOR_THREAD_HPP_
6#define IFW_CCF_CTL_MONITOR_THREAD_HPP_
7
8#include <boost/exception/diagnostic_information.hpp>
9
10#include <ccf/common/base.hpp>
12
13namespace ccf::control {
14
15 constexpr auto CFG_KEY_ADPT_ACTIVE = "mon_adpt_active";
16 constexpr auto CFG_KEY_ADPT_DISABLE_DURING_ACQ = "mon_adpt_disable_during_acq";
17 constexpr auto CFG_KEY_ADPT_PERIOD = "mon_adpt_period";
18 constexpr auto CFG_KEY_DISABLE_DURING_ACQ = "disable_during_acq";
19 constexpr auto CFG_KEY_NODES_LIST_DEF = "nodes_list";
20 constexpr auto CFG_KEY_NODES = "nodes";
21 constexpr auto CFG_KEY_OLDB_NODE = "oldb_node";
22
24 std::string m_name;
25 std::string m_oldb_node;
26 };
27
32 public:
34 MonitorThread(const std::string& thread_name,
35 ccf::mptk::MessageBus& message_bus,
36 const double period = 0.1);
37
38 virtual ~MonitorThread();
39
41 void Initialise();
42
44 virtual void UserLogic();
45
46 private:
47 void HandleTelemetry(const double time_now);
48 void CollectData();
49 void ComputePublishStatistics();
50 void CheckMessageBus();
51 void HandleNewSetup(ccf::Status status,
52 std::string& diagnostics);
53
54 void ComputeStatistics(const std::vector<double>& data_set,
55 uint16_t& samples_in_set,
56 double& mean,
57 double& min,
58 double& max,
59 double& stddev,
60 double& jitter,
61 const double theoretic_periodicty = INT_MIN);
62
63 std::list<std::string> m_thread_names;
64 std::map<std::string, ccf::common::FrameStatistics> m_thr_name_to_frame_stat;
65 std::map<std::string, double> m_thread_drift;
66 std::map<uint64_t, double> m_thread_drift_window;
67 uint64_t m_drift_count;
68 double m_mon_last_rec_wait_clean_up;
69
70 // Monitor Adapter parameters.
71 bool m_mon_adpt_active;
72 bool m_mon_adpt_disable_during_acq;
73 double m_mon_adpt_period;
74
75 double m_time_last_mon_adpt_exec;
76
77 bool m_tel_enabled{false};
78 double m_tel_period{0};
79 bool m_disable_during_acq{true};
80 std::map<std::string, TelemetryNode> m_tel_nodes;
81 std::vector<std::string> m_tel_names;
82 double m_time_last_tel_sampling_exec{0};
83 };
84
85}
86
87#endif // IFW_CCF_CTL_MONITOR_THREAD_HPP_
Monitor Thread MPTK class.
Definition: monitorThread.hpp:31
virtual void UserLogic()
Monitor Thread user logic.
Definition: monitorThread.cpp:73
void Initialise()
Initialise the thread. This is invoked after creation.
Definition: monitorThread.cpp:26
virtual ~MonitorThread()
Definition: monitorThread.cpp:22
IFW CTD Multiprocessing Toolkit Message Bus.
Definition: messageBus.hpp:91
IFW CTD Multiprocessing Toolkit Thread base class.
Definition: thread.hpp:29
Definition: acqThread.cpp:10
constexpr auto CFG_KEY_NODES_LIST_DEF
Definition: monitorThread.hpp:19
constexpr auto CFG_KEY_DISABLE_DURING_ACQ
Definition: monitorThread.hpp:18
constexpr auto CFG_KEY_ADPT_PERIOD
Definition: monitorThread.hpp:17
constexpr auto CFG_KEY_ADPT_ACTIVE
Definition: monitorThread.hpp:15
constexpr auto CFG_KEY_ADPT_DISABLE_DURING_ACQ
Definition: monitorThread.hpp:16
constexpr auto CFG_KEY_OLDB_NODE
Definition: monitorThread.hpp:21
constexpr auto CFG_KEY_NODES
Definition: monitorThread.hpp:20
Status
General status variable.
Definition: base.hpp:143
Definition: monitorThread.hpp:23
std::string m_name
Definition: monitorThread.hpp:24
std::string m_oldb_node
Definition: monitorThread.hpp:25