Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
jmarkel44
Date:
Wed Oct 19 23:44:38 2016 +0000
Revision:
239:cfb1a917e7f7
Parent:
217:d5a2ff093319
Child:
242:3b0086a6d625
generic failsafe;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 5:5e77a1db4d45 1 /******************************************************************************
jmarkel44 5:5e77a1db4d45 2 *
jmarkel44 5:5e77a1db4d45 3 * File: SetpointControl.h
jmarkel44 5:5e77a1db4d45 4 * Desciption: ICE Timer Control Class
jmarkel44 5:5e77a1db4d45 5 *
jmarkel44 5:5e77a1db4d45 6 *****************************************************************************/
jmarkel44 5:5e77a1db4d45 7 #ifndef SETPOINTCONTROL_H
jmarkel44 5:5e77a1db4d45 8 #define SETPOINTCONTROL_H
jmarkel44 5:5e77a1db4d45 9
jmarkel44 28:c410a61238bb 10 #include "MbedJSONValue.h"
jmarkel44 5:5e77a1db4d45 11 #include <string>
jmarkel44 46:4cb96ab2d1c8 12
jmarkel44 13:c80c283f9db2 13 using namespace std;
jmarkel44 5:5e77a1db4d45 14
jmarkel44 5:5e77a1db4d45 15 class SetpointControl
jmarkel44 5:5e77a1db4d45 16 {
jmarkel44 5:5e77a1db4d45 17 private:
jmarkel44 5:5e77a1db4d45 18 string controlFile; // name of the control file
jmarkel44 20:653923c2f37a 19 string id; // control identifier
jmarkel44 28:c410a61238bb 20 int priority; // control priority
jmarkel44 20:653923c2f37a 21 string input; // control input
jmarkel44 28:c410a61238bb 22 string output; // control output
jmarkel44 89:55ac65d7f206 23 double setpoint; // setpoint value
jmarkel44 30:738359dfdab1 24 double productFactor;
davidjhoward 91:0e8d76030598 25 bool actingDir; // acting direction, 1 direct - pH, 0 indirect - inhibitor
jmarkel44 30:738359dfdab1 26 double highAlert;
jmarkel44 30:738359dfdab1 27 double lowAlert;
jmarkel44 30:738359dfdab1 28 double highFailsafe;
jmarkel44 30:738359dfdab1 29 double lowFailsafe;
jmarkel44 96:807f04bd5256 30 double tolerance; // the error margining
jmarkel44 51:66b820f203a5 31 enum State {
jmarkel44 131:a290a3934132 32 STATE_INIT,
jmarkel44 51:66b820f203a5 33 STATE_STARTUP,
jmarkel44 51:66b820f203a5 34 STATE_CONTROL_OFF,
jmarkel44 51:66b820f203a5 35 STATE_CONTROL_ON,
jmarkel44 239:cfb1a917e7f7 36 STATE_FAILSAFE_ON,
jmarkel44 239:cfb1a917e7f7 37 STATE_FAILSAFE_OFF,
jmarkel44 51:66b820f203a5 38 STATE_DISABLE,
jmarkel44 207:55aabde2d4bf 39 STATE_RELOAD,
jmarkel44 51:66b820f203a5 40 STATE_MAX
jmarkel44 51:66b820f203a5 41 };
jmarkel44 51:66b820f203a5 42 State currentState;
jmarkel44 28:c410a61238bb 43
jmarkel44 5:5e77a1db4d45 44 public:
jmarkel44 51:66b820f203a5 45 // ctor
jmarkel44 131:a290a3934132 46 SetpointControl() { currentState = STATE_INIT; };
jmarkel44 51:66b820f203a5 47 // dtor
jmarkel44 12:ea87887ca7ad 48 ~SetpointControl() {
jmarkel44 12:ea87887ca7ad 49 printf("\r%s destructor invoked\n", __func__);
jmarkel44 86:189c125d8878 50 // TODO: unregister the control with the output task
jmarkel44 28:c410a61238bb 51 }
jmarkel44 28:c410a61238bb 52
jmarkel44 86:189c125d8878 53 // load the control data
jmarkel44 28:c410a61238bb 54 bool load(string filename);
jmarkel44 86:189c125d8878 55
jmarkel44 51:66b820f203a5 56 // unregister the control with the output task
jmarkel44 86:189c125d8878 57 void unregisterControl(void);
jmarkel44 86:189c125d8878 58
jmarkel44 86:189c125d8878 59 // start the control
jmarkel44 51:66b820f203a5 60 void start(void);
jmarkel44 86:189c125d8878 61
jmarkel44 51:66b820f203a5 62 // update the control
jmarkel44 86:189c125d8878 63 void update(void);
jmarkel44 86:189c125d8878 64
jmarkel44 51:66b820f203a5 65 bool underLimit();
jmarkel44 51:66b820f203a5 66 bool overLimit();
jmarkel44 239:cfb1a917e7f7 67 bool underFailsafeLimit();
jmarkel44 239:cfb1a917e7f7 68 bool overFailsafeLimit();
jmarkel44 86:189c125d8878 69
jmarkel44 86:189c125d8878 70 // state transition functions
jmarkel44 93:1553fb156915 71 void startFeed(void);
jmarkel44 93:1553fb156915 72 void stopFeed(void);
jmarkel44 93:1553fb156915 73
jmarkel44 93:1553fb156915 74 void display(void);
jmarkel44 28:c410a61238bb 75
jmarkel44 86:189c125d8878 76 string getControlFile(void) const {
jmarkel44 12:ea87887ca7ad 77 return controlFile;
jmarkel44 12:ea87887ca7ad 78 }
jmarkel44 86:189c125d8878 79 string getId(void) const {
jmarkel44 28:c410a61238bb 80 return id;
jmarkel44 28:c410a61238bb 81 }
jmarkel44 86:189c125d8878 82 unsigned int getPriority(void) const {
jmarkel44 28:c410a61238bb 83 return priority;
jmarkel44 28:c410a61238bb 84 }
jmarkel44 86:189c125d8878 85 string getInput(void) const {
jmarkel44 28:c410a61238bb 86 return input;
jmarkel44 28:c410a61238bb 87 }
jmarkel44 86:189c125d8878 88 string getOutput(void) const {
jmarkel44 28:c410a61238bb 89 return output;
jmarkel44 28:c410a61238bb 90 }
jmarkel44 86:189c125d8878 91 float getProductFactor(void) const {
jmarkel44 28:c410a61238bb 92 return productFactor;
jmarkel44 28:c410a61238bb 93 }
jmarkel44 90:7d9731dec0da 94 int getActingDir(void) const {
jmarkel44 90:7d9731dec0da 95 return actingDir;
jmarkel44 90:7d9731dec0da 96 }
jmarkel44 86:189c125d8878 97 float getSetpoint(void) const {
jmarkel44 86:189c125d8878 98 return setpoint;
jmarkel44 86:189c125d8878 99 }
jmarkel44 86:189c125d8878 100 float getHighAlert(void) const {
jmarkel44 28:c410a61238bb 101 return highAlert;
jmarkel44 28:c410a61238bb 102 }
jmarkel44 86:189c125d8878 103 float getLowAlert(void) const {
jmarkel44 28:c410a61238bb 104 return lowAlert;
jmarkel44 28:c410a61238bb 105 }
jmarkel44 86:189c125d8878 106 float getHighFailsafe(void) const {
jmarkel44 28:c410a61238bb 107 return highFailsafe;
jmarkel44 28:c410a61238bb 108 }
jmarkel44 86:189c125d8878 109 float getLowFailsafe(void) const {
jmarkel44 28:c410a61238bb 110 return lowFailsafe;
jmarkel44 28:c410a61238bb 111 }
jmarkel44 89:55ac65d7f206 112
jmarkel44 86:189c125d8878 113 State getCurrentState(void) const {
jmarkel44 51:66b820f203a5 114 return currentState;
jmarkel44 51:66b820f203a5 115 }
jmarkel44 5:5e77a1db4d45 116 };
jmarkel44 5:5e77a1db4d45 117
jmarkel44 51:66b820f203a5 118 #endif