ifw-sup 5.1.0
 
Loading...
Searching...
No Matches
config.hpp
Go to the documentation of this file.
1
7
8#ifndef SUP_SYSSUP_COMMON_CONFIG_HPP_
9#define SUP_SYSSUP_COMMON_CONFIG_HPP_
10
11// System headers
12#include <string>
13#include <any>
14
15// Third party headers
16#include <yaml-cpp/yaml.h>
17#include <boost/date_time/posix_time/posix_time.hpp>
18
19// Local headers
20#include <ifw/core/utils/bat/config.hpp>
21#include <ifw/sup/syssup/common/events.rad.hpp>
22
23
25
26 constexpr auto KEY_CONTROL_ESTIMATED_STATE = "estimated_state";
27 constexpr auto KEY_CONTROL_ESTIMATED_SUBSTATE = "estimated_substate";
28 constexpr auto KEY_CONFIG_SUBSYS = "subsystems";
29 constexpr auto KEY_CONFIG_OB_MODES = "ob_modes";
30 constexpr auto KEY_CONFIG_OP_MODES = "op_modes";
31
32 constexpr auto KEY_CONFIG_SUBSYS_NAME = "name";
33 constexpr auto KEY_CONFIG_SUBSYS_SCOPE = "scope";
34 constexpr auto KEY_CONFIG_SUBSYS_ACCESS = "access";
35 constexpr auto KEY_CONFIG_SUBSYS_RR_ENDPOINT = "rr_endpoint";
36 constexpr auto KEY_CONFIG_SUBSYS_PS_ENDPOINT = "ps_endpoint";
37 constexpr auto KEY_CONFIG_SUBSYS_TYPE = "type";
38
39
40
44
45 enum class ScopeEnum : short { EXTERNAL = 10,
47 };
48 const std::map<std::string, ScopeEnum> ScopeMap {
49 { "external", ScopeEnum::EXTERNAL },
50 { "internal", ScopeEnum::INTERNAL }
51 };
52
56 constexpr auto CONFIG_ENVVAR_DBHOST = "DB_HOST";
57
65
74 inline std::optional<ScopeEnum> GetScope(const std::string& scope_str) const;
75
80 inline ScopeEnum GetScope() const;
81
86 inline void SetScope(const ScopeEnum& scope);
87
92 inline std::string GetType() const;
93
98 inline void SetType(const std::string& type);
99
104 inline std::string GetRrEndPoint() const;
105
110 inline void SetRrEndPoint(const std::string& rr_endpoint);
111
116 inline std::string GetPsEndPoint() const;
117
122 inline void SetPsEndPoint(const std::string& ps_endpoint);
123
128 inline bool GetAccess() const;
129
134 inline void SetAccess(const bool& access);
135
140 inline int GetIndex() const;
141
146 inline void SetIndex(const int& index);
147
148 private:
149 int m_index;
151 std::string m_type{"Generic"};
152 std::string m_rr_endpoint{""};
153 std::string m_ps_endpoint{""};
154 bool m_access{false};
155 };
156
157
162 class Config : public ifw::core::utils::bat::Config {
163 public:
171 Config();
172
176 virtual ~Config();
177
186 void LoadConfig(const std::string& filename = "", bool reset = false) override;
187
191 int GetNumSubsystems() const;
192
197 int GetNumOpModes() const;
198
199 int GetNumObModes() const;
205 const std::string GetSubsysName(const int& subsys_index);
206
212 const std::string GetSubsysRrEndpoint(const std::string& name);
213
219
220 const std::string GetSubsysPsEndpoint(const std::string& name);
221
227 const std::string GetSubsysType(const std::string& name);
228
234 std::optional<ScopeEnum> GetSubsysScope(const std::string& name);
235
241 std::string GetSubsysScopeStr(const std::string& name);
242
248 bool GetSubsysAccess(const std::string& name);
249
250 void SetSubsysAccess(const std::string& name, const bool& access);
251
252 std::optional<std::vector<std::string>> GetObSubsystems(const std::string& mode) const;
253
262 virtual void GetConfigList(ifw::core::utils::bat::DbVector& cfg_list) override;
263
264
265 private:
266 Config(const Config&) = delete;
267 Config& operator=(const Config&) = delete;
268
269 private:
270 int m_num_subsystems{0};
271 int m_num_op_modes{0};
272 int m_num_ob_modes{0};
273
274 std::map<std::string, SubsystemConfig> m_subsys_map;
275
276 };
277
278}
279
280#include "config.ipp"
281
282#endif // SUP_SYSSUP_COMMON_CONFIG_HPP_
virtual void GetConfigList(ifw::core::utils::bat::DbVector &cfg_list) override
Get configuration list.
Definition config.cpp:322
bool GetSubsysAccess(const std::string &name)
GetSubsysAccess.
Definition config.cpp:241
int GetNumObModes() const
Definition config.cpp:172
int GetNumSubsystems() const
Definition config.cpp:158
const std::string GetSubsysRrEndpoint(const std::string &name)
Returs subsystem req/reply endpoint.
Definition config.cpp:286
std::optional< std::vector< std::string > > GetObSubsystems(const std::string &mode) const
Definition config.cpp:191
const std::string GetSubsysType(const std::string &name)
Returs subsystem type.
Definition config.cpp:270
int GetNumOpModes() const
The number of defined operational modes.
Definition config.cpp:166
const std::string GetSubsysPsEndpoint(const std::string &name)
Returs subsystem pub/sub endpoint.
Definition config.cpp:304
std::string GetSubsysScopeStr(const std::string &name)
GetSubsysScopeStr.
Definition config.cpp:226
void SetSubsysAccess(const std::string &name, const bool &access)
Definition config.cpp:257
Config()
Definition config.cpp:31
std::optional< ScopeEnum > GetSubsysScope(const std::string &name)
GetSubsysScope.
Definition config.cpp:206
void LoadConfig(const std::string &filename="", bool reset=false) override
Definition config.cpp:39
const std::string GetSubsysName(const int &subsys_index)
Returns a given subsystem name.
Definition config.cpp:179
virtual ~Config()
Definition config.cpp:35
ActionMgr class source file.
Definition actionMgr.cpp:30
constexpr auto KEY_CONFIG_OB_MODES
Definition config.hpp:29
const std::map< std::string, ScopeEnum > ScopeMap
Definition config.hpp:48
constexpr auto CONFIG_ENVVAR_DBHOST
Definition config.hpp:56
constexpr auto KEY_CONFIG_SUBSYS_TYPE
Definition config.hpp:37
constexpr auto KEY_CONFIG_SUBSYS_NAME
Definition config.hpp:32
constexpr auto KEY_CONFIG_SUBSYS_ACCESS
Definition config.hpp:34
constexpr auto KEY_CONTROL_ESTIMATED_STATE
Definition config.hpp:26
constexpr auto KEY_CONFIG_OP_MODES
Definition config.hpp:30
constexpr auto KEY_CONTROL_ESTIMATED_SUBSTATE
Definition config.hpp:27
ScopeEnum
Definition config.hpp:45
@ INTERNAL
Definition config.hpp:46
@ EXTERNAL
Definition config.hpp:45
constexpr auto KEY_CONFIG_SUBSYS
Definition config.hpp:28
constexpr auto KEY_CONFIG_SUBSYS_SCOPE
Definition config.hpp:33
constexpr auto KEY_CONFIG_SUBSYS_PS_ENDPOINT
Definition config.hpp:36
constexpr auto KEY_CONFIG_SUBSYS_RR_ENDPOINT
Definition config.hpp:35
std::optional< ScopeEnum > GetScope(const std::string &scope_str) const
Get associated subsystem scope.
void SetRrEndPoint(const std::string &rr_endpoint)
Set subsystem Req/Rep end point.
void SetAccess(const bool &access)
Set subsystem access flag.
std::string GetType() const
Get actual subsystem type.
bool GetAccess() const
Get actual saccess flag.
ScopeEnum GetScope() const
Get actual subsystem scope.
std::string GetRrEndPoint() const
Get actual subsystem Req/Rep end point.
void SetIndex(const int &index)
Set subsystem access flag.
void SetType(const std::string &type)
Set subsystem type.
void SetPsEndPoint(const std::string &ps_endpoint)
Set subsystem Pub/Sub end point.
std::string GetPsEndPoint() const
Get actual subsystem Pub/Sub end point.
void SetScope(const ScopeEnum &scope)
Set subsystem scope.