diff options
Diffstat (limited to 'src/Machine.h')
| -rwxr-xr-x | src/Machine.h | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/Machine.h b/src/Machine.h new file mode 100755 index 0000000..db7c9fd --- /dev/null +++ b/src/Machine.h @@ -0,0 +1,72 @@ +#ifndef Machine_h +#define Machine_h +#include "Configuration.h" +#include "Monitor.h" +#include "TaskScheduler.h" +// This stuff probably belongs in Machine.h + +#define STATENAMELEN 25 + +enum machine_states { + STATE_OFF, + STATE_SELF_TEST_INIT, + STATE_WARM_UP, + STATE_RUN_MODE, + STATE_SHUTDOWN, + STATE_POST_FAILURE, + STATE_E_SHUTDOWN, + STATE_MANUAL_MODE, + STATE_DIAGNOSTICS_MODE, + STATE_UNKNOWN_STATE, +}; + +#define NSTATES (STATE_UNKNOWN_STATE) + +#define STATENAMES \ +"OFF\000 ",\ +"SELF TEST INIT\000 ",\ +"WARMUP\000 ",\ +"NORMAL OPERATION\000 ",\ +"SHUT DOWN\000 ",\ +"POST FAILURE\000 ",\ +"EMERGENCY STOP\000 ",\ +"MANUAL MODE ",\ +"DIAGNOSTICS MODE\000 ",\ +"UNKNOWN\000 " + +class Machine; +extern Machine machine; + +static void STC (uint8_t kwIndex, uint8_t verb,char *args); +static void TMR (uint8_t kwIndex, uint8_t verb,char *args); +static void TMS (uint8_t kwIndex, uint8_t verb,char *args); +static void TRM (uint8_t kwIndex, uint8_t verb,char *args); +static void systemInCharge(); + +class Machine +{ +private: + Task monitorTask; + Task machineTask; + +public: + int previousState; + int currentState; + int timerSetting; + bool timerIsRunning; + int timeRemaining; + bool inSafeStateToRun; + + Machine() : currentState(STATE_OFF) {} + Scheduler todolist; + void init(); + void setPreviousState(int newState); // {currentState=newState;}; + void setState(int newState); // {currentState=newState;}; + int state() { return currentState; }; + const char * stateName(int) ; + +protected: + +}; + +#endif |
