hlcc 2.0.0-beta2+pre1
Loading...
Searching...
No Matches
rousData.hpp
Go to the documentation of this file.
1
9#ifndef HLCC_TELIF_TELIFSIM_ROUSDATA_HPP
10#define HLCC_TELIF_TELIFSIM_ROUSDATA_HPP
11
12#include <cstdint>
13#include <queue>
14#include <mutex>
15#include <memory>
16
17#include <Ccsinsif.hpp>
18#include "Ccsinsifextref.hpp"
19#include "Ccsinsifstroke.hpp"
20#include "Ccsinsifao.hpp"
21
22
23namespace hlcc::telifsim {
24
25class DataContext;
26class OldbInterface;
27
28/*
29 * Class that manages data used by Rous activity
30 */
31class RousData {
32 public:
33
37 enum RousManeuverState { ROUS_INIT, /* Initial State*/
38 ROUS_WAITING, /* Waiting for the timer to finish*/
39 ROUS_MANEUVER_IN_PROGRESS, /* Processing ROUS Maneuver*/
40 ROUS_DISABLED }; /* Just Idling due to disablement*/
41
45 explicit RousData(OldbInterface& oldb_interface,
46 std::shared_ptr<elt::mal::Mal> entity_factory);
47
51 virtual ~RousData();
52
53 RousData() = delete ; // Disable default constructor
54 RousData(const RousData&) = delete; // Disable Copy constructor
55 RousData& operator=(const RousData&) = delete; // Disable Assignment operator
56
61 void SetRousState(const RousManeuverState &state);
62
68
73 void SetRousTimerSeconds(const std::uint16_t &time_s);
74
79 std::uint16_t GetRousTimerSeconds();
80
86
91 void SetRousDisableState(const bool &disabled);
92
98
106
112
120 bool SetRousTimerUpdateMessage(const uint16_t &time_s);
121
127 bool GetRousTimerUpdateMessage(uint16_t &time_s);
128
132 void PublishRous();
133
138 void SetPublishRousStatus(bool enable);
139
143 void ActivityEntryAction();
144
149 void ActivityExitAction();
150
151
152 private:
153 /* Pointer to Datacontext */
154 OldbInterface& m_oldb_interface;
155 /* Mal entity references */
156 std::shared_ptr<elt::mal::Mal> m_entity_factory; // Mal used for pub-sub
157 /* If Rous Data should be published */
158 bool m_publish_data;
159 /* Mutex to protect from race condition*/
160 mutable std::mutex m_mutex;
161 /* Current state of ROUS maneuver */
162 RousManeuverState m_rous_state;
163 /* Timer used to control ROUS execution */
164 uint16_t m_rous_timer_s;
165 /* Hold ROUS disable state */
166 bool m_rous_disabled;
167 /* Used to send rous_execute message to activity thread */
168 std::queue<bool> m_rous_execute_q;
169 /* Used to send rous_update_time message to activity thread */
170 std::queue<std::uint64_t> m_rous_update_time_q;
171 /* Data entity used to publish Rous data */
172 std::shared_ptr<::ccsinsif::rous::Maneuver> m_rous_maneuver_data_entity;
173};
174
175} // namespace hlcc::telifsim
176
177#endif // HLCC_TELIF_TELIFSIM_ROUSDATA_HPP
Definition: oldbInterface.hpp:35
Definition: rousData.hpp:31
void SetRousState(const RousManeuverState &state)
Definition: rousData.cpp:38
RousManeuverState
Definition: rousData.hpp:37
@ ROUS_DISABLED
Definition: rousData.hpp:40
@ ROUS_WAITING
Definition: rousData.hpp:38
@ ROUS_MANEUVER_IN_PROGRESS
Definition: rousData.hpp:39
@ ROUS_INIT
Definition: rousData.hpp:37
void SetRousExecuteMessage()
Definition: rousData.cpp:117
bool GetRousTimerUpdateMessage(uint16_t &time_s)
Definition: rousData.cpp:175
RousManeuverState GetRousState()
Definition: rousData.cpp:47
void SetRousDisableState(const bool &disabled)
Definition: rousData.cpp:93
RousData(const RousData &)=delete
std::uint16_t GetRousTimerSeconds()
Definition: rousData.cpp:65
void ActivityEntryAction()
Definition: rousData.cpp:220
virtual ~RousData()
Definition: rousData.cpp:34
RousData & operator=(const RousData &)=delete
bool GetRousExecuteMessage()
Definition: rousData.cpp:134
bool GetRousDisableState()
Definition: rousData.cpp:108
void PublishRous()
Definition: rousData.cpp:194
bool SetRousTimerUpdateMessage(const uint16_t &time_s)
Definition: rousData.cpp:150
void SetRousTimerSeconds(const std::uint16_t &time_s)
Definition: rousData.cpp:56
bool DecrementRousTimerSeconds()
Definition: rousData.cpp:74
void ActivityExitAction()
Definition: rousData.cpp:240
void SetPublishRousStatus(bool enable)
Definition: rousData.cpp:210
Definition: actionMgr.cpp:31