ifw-sup  1.0.0
states.hpp
Go to the documentation of this file.
1 
9 #ifndef SUP_SYSSUP_COMMON_STATES_HPP
10 #define SUP_SYSSUP_COMMON_STATES_HPP
11 
12 #include <boost/signals2.hpp>
13 #include <boost/bimap.hpp>
14 #include <boost/assign.hpp>
15 
16 namespace sup::syssup::common {
17 
18  constexpr auto KEY_STATUS_SUBSYS_STATE = "state";
19  constexpr auto KEY_STATUS_SUBSYS_SUBSTATE = "substate";
20 
21  constexpr auto STATE_UNDEFINED_STR = "Undefined";
22  constexpr auto STATE_NOT_OP_ERROR_STR = "NotOpError";
23  constexpr auto STATE_ERROR_STR = "Error";
24  constexpr auto STATE_OFF_STR = "Off";
25  constexpr auto STATE_NOT_OPERATIONAL_STR = "NotOperational";
26  constexpr auto STATE_OPERATIONAL_STR = "Operational";
27 
28  constexpr auto SUBSTATE_NOTREADY_STR = "NotReady";
29  constexpr auto SUBSTATE_INITIALISING_STR = "Initialising";
30  constexpr auto SUBSTATE_READY_STR = "Ready";
31  constexpr auto SUBSTATE_ENABLING_STR = "Enabling";
32  constexpr auto SUBSTATE_RECOVERING_STR = "Recovering";
33  constexpr auto SUBSTATE_IDLE_STR = "Idle";
34  constexpr auto SUBSTATE_BUSY_STR = "Busy";
35 
36  //FCF Substates
37  constexpr auto SUBSTATE_SETTING_UP_STR = "SettingUp";
38 
39  //CCF Substates
40  constexpr auto SUBSTATE_NOT_RECORDING_STR = "NotRecording";
41  constexpr auto SUBSTATE_RECORDING_STR = "Recording";
42  constexpr auto SUBSTATE_REC_PAUSED_STR = "RecPaused";
43 
44 
52  struct State {
53  public:
54 
55  enum class StateEnum : short {
56  OFF = -8,
57  UNDEFINED = -7,
58  NOT_OPERATIONAL = 1,
59  OPERATIONAL = 2
60  };
61  enum class SubstateEnum : short {
62  UNDEFINED = 90,
63  ERROR = 95,
64  NOT_OP_NOT_READY = 100,
65  INITIALISING = 101,
66  NOT_OP_READY = 102,
67  ENABLING = 103,
68  RECOVERING = 106,
69  IDLE = 110,
70  BUSY = 115,
71  SETTING_UP = 130,
72  NOT_RECORDING = 200,
73  RECORDING = 201,
74  REC_PAUSED = 202
75  };
76 
77  using StateNumMap_t = boost::bimap<std::string, StateEnum>;
78  using SubstateNumMap_t = boost::bimap<std::string, SubstateEnum>;
79 
80 
81  //C++17 feature: you can define static members when they are inline.
82  //Used BOOST bidirectional maps.
83  inline static StateNumMap_t StateMap = boost::assign::list_of<State::StateNumMap_t::relation >
88 
89  inline static SubstateNumMap_t SubstateMap = boost::assign::list_of<State::SubstateNumMap_t::relation >
103 
109  inline static StateEnum GetState(const std::string& state);
115  inline static std::optional<std::string> GetStateStr(const StateEnum state);
121  inline static SubstateEnum GetSubstate(const std::string& substate);
127  inline static std::optional<std::string> GetSubstateStr(const SubstateEnum substate);
128 
129  };
130 
131 }
132 
133 #include "states.ipp"
134 
135 #endif //SUP_SYSSUP_COMMON_STATES_HPP
sup::syssup::common::State::SubstateEnum::SETTING_UP
@ SETTING_UP
sup::syssup::common::State::GetStateStr
static std::optional< std::string > GetStateStr(const StateEnum state)
Get state as an optional string.
sup::syssup::common::State::StateEnum::UNDEFINED
@ UNDEFINED
sup::syssup::common::State::SubstateEnum::IDLE
@ IDLE
sup::syssup::common::State::SubstateMap
static SubstateNumMap_t SubstateMap
Definition: states.hpp:89
sup::syssup::common::State::StateEnum::NOT_OPERATIONAL
@ NOT_OPERATIONAL
sup::syssup::common::STATE_NOT_OP_ERROR_STR
constexpr auto STATE_NOT_OP_ERROR_STR
Definition: states.hpp:22
sup::syssup::common::State::SubstateNumMap_t
boost::bimap< std::string, SubstateEnum > SubstateNumMap_t
Definition: states.hpp:78
sup::syssup::common::State::GetSubstateStr
static std::optional< std::string > GetSubstateStr(const SubstateEnum substate)
Get substate as an optional string.
sup::syssup::common::State::GetState
static StateEnum GetState(const std::string &state)
Get state as an enumeration.
sup::syssup::common::STATE_NOT_OPERATIONAL_STR
constexpr auto STATE_NOT_OPERATIONAL_STR
Definition: states.hpp:25
sup::syssup::common::State::SubstateEnum::ERROR
@ ERROR
sup::syssup::common::SUBSTATE_NOTREADY_STR
constexpr auto SUBSTATE_NOTREADY_STR
Definition: states.hpp:28
sup::syssup::common::KEY_STATUS_SUBSYS_STATE
constexpr auto KEY_STATUS_SUBSYS_STATE
Definition: states.hpp:18
sup::syssup::common
Definition: actionMgr.cpp:33
sup::syssup::common::SUBSTATE_BUSY_STR
constexpr auto SUBSTATE_BUSY_STR
Definition: states.hpp:34
sup::syssup::common::State::SubstateEnum::NOT_OP_NOT_READY
@ NOT_OP_NOT_READY
sup::syssup::common::SUBSTATE_ENABLING_STR
constexpr auto SUBSTATE_ENABLING_STR
Definition: states.hpp:31
sup::syssup::common::State::StateEnum::OPERATIONAL
@ OPERATIONAL
sup::syssup::common::SUBSTATE_REC_PAUSED_STR
constexpr auto SUBSTATE_REC_PAUSED_STR
Definition: states.hpp:42
sup::syssup::common::State::SubstateEnum::NOT_RECORDING
@ NOT_RECORDING
sup::syssup::common::State::SubstateEnum::INITIALISING
@ INITIALISING
sup::syssup::common::SUBSTATE_IDLE_STR
constexpr auto SUBSTATE_IDLE_STR
Definition: states.hpp:33
sup::syssup::common::SUBSTATE_RECORDING_STR
constexpr auto SUBSTATE_RECORDING_STR
Definition: states.hpp:41
sup::syssup::common::SUBSTATE_SETTING_UP_STR
constexpr auto SUBSTATE_SETTING_UP_STR
Definition: states.hpp:37
sup::syssup::common::State::GetSubstate
static SubstateEnum GetSubstate(const std::string &substate)
Get state as an enumeration.
sup::syssup::common::State::SubstateEnum::RECOVERING
@ RECOVERING
sup::syssup::common::STATE_OPERATIONAL_STR
constexpr auto STATE_OPERATIONAL_STR
Definition: states.hpp:26
sup::syssup::common::SUBSTATE_RECOVERING_STR
constexpr auto SUBSTATE_RECOVERING_STR
Definition: states.hpp:32
sup::syssup::common::State::StateEnum
StateEnum
Definition: states.hpp:55
sup::syssup::common::SUBSTATE_READY_STR
constexpr auto SUBSTATE_READY_STR
Definition: states.hpp:30
sup::syssup::common::State::SubstateEnum::RECORDING
@ RECORDING
sup::syssup::common::State::SubstateEnum::REC_PAUSED
@ REC_PAUSED
sup::syssup::common::STATE_ERROR_STR
constexpr auto STATE_ERROR_STR
Definition: states.hpp:23
sup::syssup::common::State::SubstateEnum::NOT_OP_READY
@ NOT_OP_READY
sup::syssup::common::State::SubstateEnum
SubstateEnum
Definition: states.hpp:61
sup::syssup::common::State::SubstateEnum::ENABLING
@ ENABLING
sup::syssup::common::STATE_OFF_STR
constexpr auto STATE_OFF_STR
Definition: states.hpp:24
sup::syssup::common::State::SubstateEnum::BUSY
@ BUSY
sup::syssup::common::State::StateNumMap_t
boost::bimap< std::string, StateEnum > StateNumMap_t
Definition: states.hpp:77
sup::syssup::common::SUBSTATE_INITIALISING_STR
constexpr auto SUBSTATE_INITIALISING_STR
Definition: states.hpp:29
sup::syssup::common::State::SubstateEnum::UNDEFINED
@ UNDEFINED
sup::syssup::common::SUBSTATE_NOT_RECORDING_STR
constexpr auto SUBSTATE_NOT_RECORDING_STR
Definition: states.hpp:40
sup::syssup::common::State::StateEnum::OFF
@ OFF
sup::syssup::common::KEY_STATUS_SUBSYS_SUBSTATE
constexpr auto KEY_STATUS_SUBSYS_SUBSTATE
Definition: states.hpp:19
sup::syssup::common::STATE_UNDEFINED_STR
constexpr auto STATE_UNDEFINED_STR
Definition: states.hpp:21
sup::syssup::common::State::StateMap
static StateNumMap_t StateMap
Definition: states.hpp:83
sup::syssup::common::State
The State struct.
Definition: states.hpp:52