Line data Source code
1 : /** \file stateCodes.cpp
2 : * \brief MagAO-X Application States
3 : * \author Jared R. Males (jaredmales@gmail.com)
4 : *
5 : *
6 : * \ingroup app_files
7 : */
8 :
9 : #include "stateCodes.hpp"
10 :
11 : namespace MagAOX
12 : {
13 : namespace app
14 : {
15 :
16 96 : std::string stateCodes::codeText( const stateCodeT & stateCode )
17 : {
18 96 : switch(stateCode)
19 : {
20 15 : case stateCodes::FAILURE:
21 30 : return "FAILURE";
22 1 : case stateCodes::ERROR:
23 2 : return "ERROR";
24 11 : case stateCodes::UNINITIALIZED:
25 22 : return "UNINITIALIZED";
26 12 : case stateCodes::INITIALIZED:
27 24 : return "INITIALIZED";
28 5 : case stateCodes::NODEVICE:
29 10 : return "NODEVICE";
30 13 : case stateCodes::POWEROFF:
31 26 : return "POWEROFF";
32 14 : case stateCodes::POWERON:
33 28 : return "POWERON";
34 1 : case stateCodes::NOTCONNECTED:
35 2 : return "NOTCONNECTED";
36 1 : case stateCodes::CONNECTED:
37 2 : return "CONNECTED";
38 3 : case stateCodes::LOGGEDIN:
39 6 : return "LOGGEDIN";
40 1 : case stateCodes::CONFIGURING:
41 2 : return "CONFIGURING";
42 3 : case stateCodes::NOTHOMED:
43 6 : return "NOTHOMED";
44 3 : case stateCodes::HOMING:
45 6 : return "HOMING";
46 1 : case stateCodes::OPERATING:
47 2 : return "OPERATING";
48 4 : case stateCodes::READY:
49 8 : return "READY";
50 7 : case stateCodes::SHUTDOWN:
51 14 : return "SHUTDOWN";
52 1 : default:
53 2 : return "UNKNOWN";
54 : }
55 : }
56 :
57 35 : stateCodes::stateCodeT stateCodes::str2Code( const std::string & stateStr )
58 : {
59 :
60 35 : if(stateStr == "FAILURE")
61 : {
62 1 : return stateCodes::FAILURE;
63 : }
64 34 : else if(stateStr == "ERROR")
65 : {
66 1 : return stateCodes::ERROR;
67 : }
68 33 : else if(stateStr == "UNINITIALIZED")
69 : {
70 1 : return stateCodes::UNINITIALIZED;
71 : }
72 32 : else if(stateStr == "INITIALIZED" )
73 : {
74 1 : return stateCodes::INITIALIZED;
75 : }
76 31 : else if(stateStr == "NODEVICE" )
77 : {
78 1 : return stateCodes::NODEVICE;
79 : }
80 30 : else if(stateStr == "POWEROFF")
81 : {
82 1 : return stateCodes::POWEROFF;
83 : }
84 29 : else if(stateStr == "POWERON")
85 : {
86 1 : return stateCodes::POWERON;
87 : }
88 28 : else if(stateStr == "NOTCONNECTED")
89 : {
90 1 : return stateCodes::NOTCONNECTED;
91 : }
92 27 : else if(stateStr == "CONNECTED")
93 : {
94 1 : return stateCodes::CONNECTED;
95 : }
96 26 : else if(stateStr == "LOGGEDIN")
97 : {
98 1 : return stateCodes::LOGGEDIN;
99 : }
100 25 : else if(stateStr == "CONFIGURING")
101 : {
102 1 : return stateCodes::CONFIGURING;
103 : }
104 24 : else if(stateStr == "NOTHOMED")
105 : {
106 1 : return stateCodes::NOTHOMED;
107 : }
108 23 : else if(stateStr == "HOMING")
109 : {
110 1 : return stateCodes::HOMING;
111 : }
112 22 : else if(stateStr == "OPERATING")
113 : {
114 3 : return stateCodes::OPERATING;
115 : }
116 19 : else if(stateStr == "READY")
117 : {
118 2 : return stateCodes::READY;
119 : }
120 17 : else if(stateStr == "SHUTDOWN")
121 : {
122 1 : return stateCodes::SHUTDOWN;
123 : }
124 : else
125 : {
126 16 : return -999;
127 : }
128 :
129 : }
130 :
131 30 : stateCodes::stateCodeT stateCodes::str2CodeFast( const std::string & stateStr )
132 : {
133 30 : switch(stateStr[0])
134 : {
135 5 : case 'C':
136 5 : if(stateStr.size() < 4)
137 : {
138 2 : return -999;
139 : }
140 :
141 3 : if( stateStr[3] == 'F')
142 : {
143 1 : return stateCodes::CONFIGURING;
144 : }
145 2 : else if( stateStr[3] == 'N')
146 : {
147 1 : return stateCodes::CONNECTED;
148 : }
149 : else
150 : {
151 1 : return -999;
152 : }
153 1 : case 'E':
154 1 : return stateCodes::ERROR;
155 1 : case 'F':
156 1 : return stateCodes::FAILURE;
157 1 : case 'H':
158 1 : return stateCodes::HOMING;
159 1 : case 'I':
160 1 : return INITIALIZED;
161 1 : case 'L':
162 1 : return LOGGEDIN;
163 7 : case 'N':
164 7 : if(size(stateStr) < 4)
165 : {
166 3 : return -999;
167 : }
168 4 : if(stateStr[2] == 'D')
169 : {
170 1 : return stateCodes::NODEVICE;
171 : }
172 3 : else if(stateStr[3] == 'C')
173 : {
174 1 : return stateCodes::NOTCONNECTED;
175 : }
176 2 : else if(stateStr[3] == 'H')
177 : {
178 1 : return stateCodes::NOTHOMED;
179 : }
180 : else
181 : {
182 1 : return -999;
183 : }
184 2 : case 'O':
185 2 : return stateCodes::OPERATING;
186 5 : case 'P':
187 5 : if(stateStr.size() < 7)
188 : {
189 2 : return -999;
190 : }
191 :
192 3 : if(stateStr[6] == 'F')
193 : {
194 1 : return stateCodes::POWEROFF;
195 : }
196 2 : else if(stateStr[6] == 'N')
197 : {
198 1 : return stateCodes::POWERON;
199 : }
200 : else
201 : {
202 1 : return -999;
203 : }
204 3 : case 'R':
205 3 : return stateCodes::READY;
206 1 : case 'S':
207 1 : return stateCodes::SHUTDOWN;
208 1 : case 'U':
209 1 : return stateCodes::UNINITIALIZED;
210 1 : default:
211 1 : return -999;
212 : }
213 : }
214 :
215 : } //namespace app
216 : } //namespace MagAOX
217 :
|