aboutsummaryrefslogtreecommitdiff
path: root/src/Machine.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Machine.h')
-rwxr-xr-xsrc/Machine.h72
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