ifw-fgf 2.0.0
 
Loading...
Searching...
No Matches
state.hpp
Go to the documentation of this file.
1
8
9#pragma once
10
11#include <boost/signals2.hpp>
12#include <boost/bimap.hpp>
13#include <boost/assign.hpp>
14#include <boost/algorithm/string.hpp>
15
16namespace ifw::fgf::common {
17
18 // State and substate definitions
19 constexpr auto KEY_STATUS_SUBSYS_STATE = "state";
20 constexpr auto KEY_STATUS_SUBSYS_SUBSTATE = "substate";
21
22 constexpr auto STATE_UNDEFINED_STR = "Undefined";
23 constexpr auto STATE_NOT_OP_ERROR_STR = "NotOpError";
24 constexpr auto STATE_ERROR_STR = "Error";
25 constexpr auto STATE_OFF_STR = "Off";
26 constexpr auto STATE_NOT_OPERATIONAL_STR = "NotOperational";
27 constexpr auto STATE_OPERATIONAL_STR = "Operational";
28
29 constexpr auto SUBSTATE_NOTREADY_STR = "NotReady";
30 constexpr auto SUBSTATE_INITIALISING_STR = "Initialising";
31 constexpr auto SUBSTATE_READY_STR = "Ready";
32 constexpr auto SUBSTATE_ENABLING_STR = "Enabling";
33 constexpr auto SUBSTATE_RECOVERING_STR = "Recovering";
34 constexpr auto SUBSTATE_IDLE_STR = "Idle";
35 constexpr auto SUBSTATE_BUSY_STR = "Busy";
36
37 constexpr auto SUBSTATE_ACQUIRING_STR = "Acquiring";
38
46 struct State {
47 public:
48
52 enum class StateEnum : short {
53 OFF = -8,
57 };
58
62 enum class SubstateEnum : short {
64 ERROR = 95,
68 ENABLING = 103,
69 IDLE = 110,
70 BUSY = 115,
72
73 };
74
75 using StateNumMap_t = boost::bimap<std::string, StateEnum>;
76 using SubstateNumMap_t = boost::bimap<std::string, SubstateEnum>;
77
78 // C++17 feature: you can define static members when they are inline.
79 // Used BOOST bidirectional maps.
80 inline static StateNumMap_t StateMap =
81 boost::assign::list_of<State::StateNumMap_t::relation>
86
87 inline static SubstateNumMap_t SubstateMap =
88 boost::assign::list_of<State::SubstateNumMap_t::relation>
98
104 inline static std::optional<StateEnum> GetState(const std::string& state);
105
111 inline static std::optional<std::string> GetStateStr(const StateEnum state);
112
118 inline static std::optional<SubstateEnum> GetSubstate(const std::string& substate);
119
125 inline static std::optional<std::string> GetSubstateStr(const SubstateEnum substate);
126
127 };
128
129}
130
131#include "state.ipp"
Definition binarySemaphore.hpp:45
constexpr auto SUBSTATE_READY_STR
Definition state.hpp:32
constexpr auto KEY_STATUS_SUBSYS_STATE
Definition state.hpp:20
constexpr auto SUBSTATE_RECOVERING_STR
Definition state.hpp:34
constexpr auto SUBSTATE_NOTREADY_STR
Definition state.hpp:30
constexpr auto KEY_STATUS_SUBSYS_SUBSTATE
Definition state.hpp:21
constexpr auto STATE_ERROR_STR
Definition state.hpp:25
constexpr auto SUBSTATE_BUSY_STR
Definition state.hpp:36
constexpr auto STATE_NOT_OPERATIONAL_STR
Definition state.hpp:27
constexpr auto STATE_OFF_STR
Definition state.hpp:26
constexpr auto SUBSTATE_ENABLING_STR
Definition state.hpp:33
constexpr auto SUBSTATE_INITIALISING_STR
Definition state.hpp:31
constexpr auto STATE_NOT_OP_ERROR_STR
Definition state.hpp:24
constexpr auto SUBSTATE_IDLE_STR
Definition state.hpp:35
constexpr auto SUBSTATE_ACQUIRING_STR
Definition state.hpp:38
constexpr auto STATE_UNDEFINED_STR
Definition state.hpp:23
constexpr auto STATE_OPERATIONAL_STR
Definition state.hpp:28
State struct defining enums to handle states/substates.
Definition state.hpp:47
StateEnum
State enums definition.
Definition state.hpp:53
@ UNDEFINED
Definition state.hpp:55
@ NOT_OPERATIONAL
Definition state.hpp:56
@ OFF
Definition state.hpp:54
@ OPERATIONAL
Definition state.hpp:57
static std::optional< std::string > GetSubstateStr(const SubstateEnum substate)
Get substate as an optional string.
static std::optional< SubstateEnum > GetSubstate(const std::string &substate)
Get state as an enumeration.
static SubstateNumMap_t SubstateMap
Definition state.hpp:88
SubstateEnum
Substate enums definition.
Definition state.hpp:63
@ UNDEFINED
Definition state.hpp:64
@ INITIALISING
Definition state.hpp:67
@ ENABLING
Definition state.hpp:69
@ BUSY
Definition state.hpp:71
@ IDLE
Definition state.hpp:70
@ ACQUIRING
Definition state.hpp:72
@ ERROR
Definition state.hpp:65
@ NOT_OP_READY
Definition state.hpp:68
@ NOT_OP_NOT_READY
Definition state.hpp:66
static std::optional< StateEnum > GetState(const std::string &state)
Get state as an enumeration.
static std::optional< std::string > GetStateStr(const StateEnum state)
Get state as an optional string.
static StateNumMap_t StateMap
Definition state.hpp:81
boost::bimap< std::string, StateEnum > StateNumMap_t
Definition state.hpp:76
boost::bimap< std::string, SubstateEnum > SubstateNumMap_t
Definition state.hpp:77