HLCC Documentation 2.2.0
Loading...
Searching...
No Matches
rousData.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2020-2025 European Southern Observatory (ESO)
2//
3// SPDX-License-Identifier: LGPL-3.0-only
4
13#ifndef HLCC_TELIF_TELIF_ROUSDATA_HPP
14#define HLCC_TELIF_TELIF_ROUSDATA_HPP
15
16#include <cstdint>
17#include <queue>
18#include <mutex>
19#include <memory>
20
21#include <Ccsinsif.hpp>
22#include "Ccsinsifextref.hpp"
23#include "Ccsinsifstroke.hpp"
24#include "Ccsinsifao.hpp"
25
26
27namespace hlcc::telif {
28
29class DataContext;
30class OldbInterface;
31
32/*
33 * Class that manages data used by Rous activity
34 */
35class RousData {
36 public:
37
41 enum RousManeuverState { ROUS_INIT, /* Initial State*/
42 ROUS_WAITING, /* Waiting for the timer to finish*/
43 ROUS_MANEUVER_IN_PROGRESS, /* Processing ROUS Maneuver*/
44 ROUS_DISABLED }; /* Just Idling due to disablement*/
45
49 explicit RousData(OldbInterface& oldb_interface,
50 std::shared_ptr<elt::mal::Mal> entity_factory);
51
55 virtual ~RousData();
56
57 RousData() = delete ; // Disable default constructor
58 RousData(const RousData&) = delete; // Disable Copy constructor
59 RousData& operator=(const RousData&) = delete; // Disable Assignment operator
60
65 void SetRousState(const RousManeuverState &state);
66
72
77 void SetRousTimerSeconds(const std::uint16_t &time_s);
78
83 std::uint16_t GetRousTimerSeconds();
84
90
95 void SetRousDisableState(const bool &disabled);
96
101 bool GetRousDisableState();
102
110
116
124 bool SetRousTimerUpdateMessage(const uint16_t &time_s);
125
131 bool GetRousTimerUpdateMessage(uint16_t &time_s);
132
136 void PublishRous();
137
142 void SetPublishRousStatus(bool enable);
143
147 void ActivityEntryAction();
148
153 void ActivityExitAction();
154
155
156 private:
157 /* Pointer to Datacontext */
158 OldbInterface& m_oldb_interface;
159 /* Mal entity references */
160 std::shared_ptr<elt::mal::Mal> m_entity_factory; // Mal used for pub-sub
161 /* If Rous Data should be published */
162 bool m_publish_data;
163 /* Mutex to protect from race condition*/
164 mutable std::mutex m_mutex;
165 /* Current state of ROUS maneuver */
166 RousManeuverState m_rous_state;
167 /* Timer used to control ROUS execution */
168 uint16_t m_rous_timer_s;
169 /* Hold ROUS disable state */
170 bool m_rous_disabled;
171 /* Used to send rous_execute message to activity thread */
172 std::queue<bool> m_rous_execute_q;
173 /* Used to send rous_update_time message to activity thread */
174 std::queue<std::uint64_t> m_rous_update_time_q;
175 /* Data entity used to publish Rous data */
176 std::shared_ptr<::ccsinsif::rous::Maneuver> m_rous_maneuver_data_entity;
177};
178
179} // namespace hlcc::telif
180
181#endif // HLCC_TELIF_TELIF_ROUSDATA_HPP
Definition oldbInterface.hpp:47
Definition rousData.hpp:35
bool GetRousTimerUpdateMessage(uint16_t &time_s)
Definition rousData.cpp:179
void SetRousDisableState(const bool &disabled)
Definition rousData.cpp:97
RousManeuverState GetRousState()
Definition rousData.cpp:51
void SetPublishRousStatus(bool enable)
Definition rousData.cpp:214
bool GetRousDisableState()
Definition rousData.cpp:112
virtual ~RousData()
Definition rousData.cpp:38
bool SetRousTimerUpdateMessage(const uint16_t &time_s)
Definition rousData.cpp:154
std::uint16_t GetRousTimerSeconds()
Definition rousData.cpp:69
RousData(const RousData &)=delete
void SetRousState(const RousManeuverState &state)
Definition rousData.cpp:42
void PublishRous()
Definition rousData.cpp:198
void ActivityEntryAction()
Definition rousData.cpp:224
void SetRousTimerSeconds(const std::uint16_t &time_s)
Definition rousData.cpp:60
RousData & operator=(const RousData &)=delete
void ActivityExitAction()
Definition rousData.cpp:244
RousManeuverState
Definition rousData.hpp:41
@ ROUS_MANEUVER_IN_PROGRESS
Definition rousData.hpp:43
@ ROUS_INIT
Definition rousData.hpp:41
@ ROUS_DISABLED
Definition rousData.hpp:44
@ ROUS_WAITING
Definition rousData.hpp:42
void SetRousExecuteMessage()
Definition rousData.cpp:121
bool GetRousExecuteMessage()
Definition rousData.cpp:138
bool DecrementRousTimerSeconds()
Definition rousData.cpp:78
Definition configTest.cpp:22