ifw-ccf 5.0.2
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
12
13
14namespace ifw::ccf::control {
15
16 constexpr auto CFG_KEY_ADPT_ACTIVE = "mon_adpt_active";
17 constexpr auto CFG_KEY_ADPT_DISABLE_DURING_ACQ = "mon_adpt_disable_during_acq";
18 constexpr auto CFG_KEY_ADPT_PERIOD = "mon_adpt_period";
19 constexpr auto CFG_KEY_DISABLE_DURING_ACQ = "disable_during_acq";
20 constexpr auto CFG_KEY_NODES_LIST_DEF = "nodes_list";
21 constexpr auto CFG_KEY_NODES = "nodes";
22 constexpr auto CFG_KEY_OLDB_NODE = "oldb_node";
23 constexpr auto CFG_KEY_META_KEY = "meta_key";
24
26 std::string m_name;
27 std::string m_oldb_node;
28 std::string m_metadata_key;
29 };
30
33 ifw::core::utils::param::Parameter par;
34 };
35
40 public:
42 MonitorThread(const std::string& thread_name,
43 ifw::ccf::mptk::MessageBus& message_bus,
44 const double period = 0.1);
45
46 virtual ~MonitorThread();
47
49 void Initialise();
50
52 virtual void UserLogic();
53
54 private:
55 //void HandleTelemetry(const double time_now);
56 void CollectData();
57 void ComputePublishStatistics();
58 void CheckMessageBus();
59 void HandleNewSetup(ifw::ccf::Status status,
60 std::string& diagnostics);
61
62 void ComputeStatistics(const std::vector<double>& data_set,
63 uint16_t& samples_in_set,
64 double& mean,
65 double& min,
66 double& max,
67 double& stddev,
68 double& jitter,
69 const double theoretic_periodicty = INT_MIN);
70
71 std::list<std::string> m_thread_names;
72 std::map<std::string, ifw::ccf::common::FrameStatistics> m_thr_name_to_frame_stat;
73 std::map<std::string, double> m_thread_drift;
74 std::map<uint64_t, double> m_thread_drift_window;
75 uint64_t m_drift_count;
76 double m_mon_last_rec_wait_clean_up;
77
78 // Monitor Adapter parameters.
79 bool m_mon_adpt_active;
80 bool m_mon_adpt_disable_during_acq;
81 double m_mon_adpt_period;
82
83 double m_time_last_mon_adpt_exec;
84
85 // bool m_tel_enabled{false};
86 // double m_tel_period{0};
87 // bool m_disable_during_acq{true};
88 // std::map<std::string, ifw::ccf::control::TelemetryNode> m_tel_nodes;
89 // std::vector<std::string> m_tel_names;
90 // double m_time_last_tel_sampling_exec{0};
91 };
92
93}
94
95#endif // IFW_CCF_CTL_MONITOR_THREAD_HPP_
Monitor Thread MPTK class.
Definition monitorThread.hpp:39
virtual ~MonitorThread()
Definition monitorThread.cpp:24
virtual void UserLogic()
Monitor Thread user logic.
Definition monitorThread.cpp:39
void Initialise()
Initialise the thread. This is invoked after creation.
Definition monitorThread.cpp:28
MonitorThread(const std::string &thread_name, ifw::ccf::mptk::MessageBus &message_bus, const double period=0.1)
See ifw::ccf::mptk::Thread.
Definition monitorThread.cpp:14
IFW CTD Multiprocessing Toolkit Message Bus.
Definition messageBus.hpp:91
IFW CTD Multiprocessing Toolkit Thread base class.
Definition thread.hpp:30
Definition acqThread.cpp:10
constexpr auto CFG_KEY_ADPT_DISABLE_DURING_ACQ
Definition monitorThread.hpp:17
constexpr auto CFG_KEY_NODES_LIST_DEF
Definition monitorThread.hpp:20
constexpr auto CFG_KEY_OLDB_NODE
Definition monitorThread.hpp:22
constexpr auto CFG_KEY_DISABLE_DURING_ACQ
Definition monitorThread.hpp:19
constexpr auto CFG_KEY_NODES
Definition monitorThread.hpp:21
constexpr auto CFG_KEY_ADPT_PERIOD
Definition monitorThread.hpp:18
constexpr auto CFG_KEY_ADPT_ACTIVE
Definition monitorThread.hpp:16
constexpr auto CFG_KEY_META_KEY
Definition monitorThread.hpp:23
Status
General status variable.
Definition base.hpp:156
Definition monitorThread.hpp:31
ifw::core::utils::param::Parameter par
Definition monitorThread.hpp:33
TelemetryNode node
Definition monitorThread.hpp:32
Definition monitorThread.hpp:25
std::string m_metadata_key
Definition monitorThread.hpp:28
std::string m_name
Definition monitorThread.hpp:26
std::string m_oldb_node
Definition monitorThread.hpp:27