microCOR Lab SDK  1.7
 All Classes Files Functions Enumerations Enumerator Modules
States.h
Go to the documentation of this file.
1 /* Copyright (C) 2015 Infron Ltd. - All Rights Reserved
2  *
3  * Redistribution of this file without permission is prohibited.
4  *
5  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
6  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
7  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
8  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
9  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
10  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
11  * IN THE SOFTWARE.
12  */
13 
23 #ifndef STATE_H
24 #define STATE_H
25 
26 #include <QObject>
27 #include "microCORLabGlobal.h"
28 
29 class QString;
30 
39 class MICROCORLABSHARED_EXPORT State : public QObject
40 {
41  Q_OBJECT
42 public:
43  explicit State() {}
44 
45  virtual QString getCurrentStatus() const = 0;
46  virtual QString getClassName() const = 0;
47 };
48 
49 
50 
55 class MICROCORLABSHARED_EXPORT BatteryState : public State
56 {
57  Q_OBJECT
58 
59 public:
60  enum BatteryStateEnum { Reliable, Unreliable };
61 
62 private:
63  enum BatteryStateEnum state, prev_state;
64  void setState(enum BatteryStateEnum _state)
65  {
66  if(state != _state){
67  prev_state = state;
68  state = _state;
69  emit stateChanged();
70  if(isUnreliable())
71  emit unreliable();
72  }
73  }
74 
75 signals:
76  void stateChanged();
77  void unreliable();
78 
79 public slots:
80  void setReliable() { setState(Reliable); }
81  void setUnreliable() { setState(Unreliable); }
82 
83 public:
84  explicit BatteryState() : state(Unreliable) {}
85 
86  static QString getStateName(int id) {
87  BatteryStateEnum s = (BatteryStateEnum) id;
88  if(s == Reliable)
89  return QString("Reliable");
90  else if(s == Unreliable)
91  return QString("Unreliable");
92  else
93  return QString("Unknown");
94  }
95  QString getCurrentStatus() const {
96  return getClassName() + "=" + getStateName(state);
97  }
98  QString getClassName() const { return QString("BatteryState"); }
99  const enum BatteryStateEnum & getCurrentState() const { return state; }
100 
101  bool isReliable() const { return state == Reliable; }
102  bool isUnreliable() const { return state == Unreliable; }
103 };
104 
105 
106 
111 class MICROCORLABSHARED_EXPORT UsbDevState : public State
112 {
113  Q_OBJECT
114 
115 public:
116  enum UsbDevStateEnum { Available, Unavailable};
117 
118 private:
119  enum UsbDevStateEnum state, prev_state;
120  void setState(enum UsbDevStateEnum _state)
121  {
122  if(state != _state){
123  prev_state = state;
124  state = _state;
125  emit stateChanged();
126  if(isUnavailable())
127  emit unavailable();
128  }
129  }
130 
131 signals:
132  void stateChanged();
133  void unavailable();
134 
135 public slots:
136  void setAvailable() { setState(Available); }
137  void setUnavailable() { setState(Unavailable); }
138 
139 public:
140  explicit UsbDevState() : state(Unavailable) {}
141 
142  static QString getStateName(int id) {
143  UsbDevStateEnum s = (UsbDevStateEnum) id;
144  if(s == Available)
145  return QString("Available");
146  else if(s == Unavailable)
147  return QString("Unavailable");
148  else
149  return QString("Unknown");
150  }
151  QString getCurrentStatus() const {
152  return getClassName() + "=" + getStateName(state);
153  }
154  QString getClassName() const { return QString("UsbDevState"); }
155  const enum UsbDevStateEnum & getCurrentState() const { return state; }
156 
157  bool isAvailable() const { return state == Available; }
158  bool isUnavailable() const { return state == Unavailable; }
159 };
160 
161 
162 
167 class MICROCORLABSHARED_EXPORT ConnectionBaseState : public State
168 {
169  Q_OBJECT
170 
171 public:
172  enum ConnectionBaseStateEnum { Connecting, ConnectionLoosing, Connected, NotConnected };
173 
174 private:
175  enum ConnectionBaseStateEnum state, prev_state;
176  void setState(enum ConnectionBaseStateEnum _state)
177  {
178  if(state != _state){
179  prev_state = state;
180  state = _state;
181  emit stateChanged();
182  if(isNotConnected())
183  emit notConnected();
184  if(isConnected())
185  emit connected();
186  }
187  }
188 
189 signals:
190  void stateChanged();
191  void connected();
192  void notConnected();
193 
194 public slots:
195  void setConnecting() { setState(Connecting); }
196  void setConnectionLoosing() { setState(ConnectionLoosing); }
197  void setConnected() { setState(Connected); }
198  void setNotConnected() { setState(NotConnected); }
199 
200 public:
201  explicit ConnectionBaseState() : state(NotConnected) {}
202 
203  static QString getStateName(int id) {
204  ConnectionBaseStateEnum s = (ConnectionBaseStateEnum) id;
205  if(s == Connecting)
206  return QString("Connecting");
207  else if(s == ConnectionLoosing)
208  return QString("ConnectionLoosing");
209  else if(s == Connected)
210  return QString("Connected");
211  else if(s == NotConnected)
212  return QString("NotConnected");
213  else
214  return QString("Unknown");
215  }
216  QString getCurrentStatus() const {
217  return getClassName() + "=" + getStateName(state);
218  }
219  const enum ConnectionBaseStateEnum & getCurrentState() const { return state; }
220 
221  bool isConnecting() const { return state == Connecting; }
222  bool isConnectionLoosing() const { return state == ConnectionLoosing; }
223  bool isConnected() const { return state == Connected; }
224  bool isNotConnected() const { return state == NotConnected; }
225 };
226 
227 
228 
233 class MICROCORLABSHARED_EXPORT GatewayState : public ConnectionBaseState
234 {
235  Q_OBJECT
236 public:
237  explicit GatewayState() : ConnectionBaseState() {}
238  QString getClassName() const { return QString("Gateway"); }
239 };
240 
241 
242 
247 class MICROCORLABSHARED_EXPORT TerminalState : public ConnectionBaseState
248 {
249  Q_OBJECT
250 public:
251  explicit TerminalState() : ConnectionBaseState() {}
252  QString getClassName() const { return QString("Terminal"); }
253 };
254 
255 
256 
261 class MICROCORLABSHARED_EXPORT SamplingState : public State
262 {
263  Q_OBJECT
264 
265 public:
266  enum SamplingStateEnum { Starting, Started, Stopping, Stopped, Restarting};
267 
268 private:
269  enum SamplingStateEnum state, prev_state;
270  void setState(enum SamplingStateEnum _state)
271  {
272  if(state != _state){
273  prev_state = state;
274  state = _state;
275  emit stateChanged();
276  if(isStopped())
277  emit stopped();
278  }
279  }
280 
281 signals:
282  void stateChanged();
283  void stopped();
284 
285 public slots:
286  void setStarting() { setState(Starting); }
287  void setStarted() { setState(Started); }
288  void setStopping() { setState(Stopping); }
289  void setStopped() { setState(Stopped); }
290  void setRestarting() { setState(Restarting); }
291 
292 public:
293  explicit SamplingState() : state(Stopped) {}
294 
295  static QString getStateName(int id) {
296  SamplingStateEnum s = (SamplingStateEnum) id;
297  if(s == Starting)
298  return QString("Starting");
299  else if(s == Started)
300  return QString("Started");
301  else if(s == Stopping)
302  return QString("Stopping");
303  else if(s == Stopped)
304  return QString("Stopped");
305  else if(s == Restarting)
306  return QString("Restarting");
307  else
308  return QString("Unknown");
309  }
310  QString getCurrentStatus() const {
311  return getClassName() + "=" + getStateName(state);
312  }
313  QString getClassName() const { return QString("SamplingState"); }
314  const enum SamplingStateEnum & getCurrentState() const { return state; }
315 
316  bool isStarting() const { return state == Starting; }
317  bool isStarted() const { return state == Started; }
318  bool isStopping() const { return state == Stopping; }
319  bool isStopped() const { return state == Stopped; }
320  bool isRestarting() const { return state == Restarting; }
321 };
322 
323 
324 
329 class MICROCORLABSHARED_EXPORT TerminalRunningState : public State
330 {
331  Q_OBJECT
332 
333 public:
334  enum RunningStateEnum {
335  Unknown,
336  Firmware,
337  BootLoader
338  };
339 
340 private:
341  enum RunningStateEnum state, prev_state;
342  void setState(enum RunningStateEnum _state)
343  {
344  if(state != _state){
345  prev_state = state;
346  state = _state;
347  emit stateChanged();
348  if(isUnknown())
349  emit unknown();
350  else if(isFirmware())
351  emit firmware();
352  else if(isBootLoader())
353  emit bootLoader();
354  }
355  }
356 
357 signals:
358  void stateChanged();
359  void unknown();
360  void firmware();
361  void bootLoader();
362 
363 
364 public slots:
365  void setUnknown() { setState(Unknown); }
366  void setFirmware() { setState(Firmware); }
367  void setBootLoader() { setState(BootLoader); }
368 
369 public:
370  explicit TerminalRunningState() : state(Unknown), prev_state(BootLoader) {}
371 
372  static QString getStateName(int id) {
373  RunningStateEnum s = (RunningStateEnum) id;
374  if(s == Unknown)
375  return QString("Unknown");
376  else if(s == Firmware)
377  return QString("Firmware");
378  else if(s == BootLoader)
379  return QString("BootLoader");
380  else
381  return QString("Unknown");
382  }
383  QString getCurrentStatus() const {
384  return getClassName() + "=" + getStateName(state);
385  }
386  QString getClassName() const { return QString("TerminalRunningState"); }
387  const enum RunningStateEnum & getCurrentState() const { return state; }
388 
389  bool isUnknown() const { return state == Unknown; }
390  bool isFirmware() const { return state == Firmware; }
391  bool isBootLoader() const { return state == BootLoader; }
392 
393 };
394  // end of States Group
396 
397 #endif // STATE_H
398  // end of microCORLabCPPApi
The Abstract State class.
Definition: States.h:39
The Gateway State class.
Definition: States.h:233
The Terminal State class.
Definition: States.h:247
The Sampling State class.
Definition: States.h:261
The Battery State class.
Definition: States.h:55
The Connection Base State class.
Definition: States.h:167
The Usb Device State class.
Definition: States.h:111
The Terminal Running State class.
Definition: States.h:329