Erick / Mbed 2 deprecated ICE-F412

Dependencies:   mbed-rtos mbed

Revision:
0:61364762ee0e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ICE-Application/src/ConfigurationHandler/Controls/SetpointControl.h	Tue Jan 24 19:05:33 2017 +0000
@@ -0,0 +1,119 @@
+/******************************************************************************
+ *
+ * File:                SetpointControl.h
+ * Desciption:          ICE Timer Control Class
+ *
+ *****************************************************************************/
+#ifndef SETPOINTCONTROL_H
+#define SETPOINTCONTROL_H
+
+#include <string>
+#include <stdio.h>
+
+typedef enum {
+    SETPOINT_CONTROL_OK,
+    SETPOINT_CONTROL_UNK_STATE, 
+    SETPOINT_CONTROL_ERROR,
+    SETPOINT_CONTROL_DESTROY
+} SetpointControlError_t;
+
+// A setpoint control is a control based on a process variable with respect
+// to a user defined control band. The output of this control object is a 
+// true/false decision (for a relay, true means power on the relay).
+
+//! SetpointControl - implements a setpoint control
+class SetpointControl
+{
+private:
+    std::string     controlFile;        // name of the control file
+    std::string     id;                 // control identifier
+    int             priority;           // control priority
+    std::string     input;              // control input
+    std::string     output;             // control output
+    double          setpoint;           // setpoint value
+    double          productFactor;
+    bool            actingDir;          // acting direction, 1 direct - pH, 0 indirect - inhibitor
+#if 0 
+    double          highAlert;
+    double          lowAlert;
+    double          highFailsafe;
+    double          lowFailsafe;
+#endif
+    double          tolerance;          // the error margining
+    enum State {
+        STATE_INIT,
+        STATE_STARTUP,
+        STATE_CONTROL_OFF,
+        STATE_CONTROL_ON,
+        STATE_DISABLE,
+        STATE_RELOAD,
+        STATE_MAX
+    };
+    State           currentState;
+    
+    bool validateControlData(const char *buf);
+    void copyControlData(const char *buf);
+
+    bool underLimit();          // check if reading is under the limit
+    bool overLimit();           // check if reading is over the limit
+
+    void startFeed(void);       // start a feed
+    void stopFeed(void);        // stop a feed
+    
+    bool isVirtualOutput;       // output is virtual
+public:
+    /// create  a setpoint control
+    SetpointControl() {
+        currentState = STATE_INIT;
+    };
+    /// destroy a setpoint control
+    ~SetpointControl() {
+        printf("\r%s invoked\n", __func__);
+    }
+
+    /// load setpoint control data from a JSON configuration file
+    bool load(std::string filename);
+
+    /// unregister a setpoint control from the output thread
+    void unregisterControl(void);
+
+    /// start a setpoint control instance
+    void start(void);
+
+    /// update a setpoint control instance
+    SetpointControlError_t update(void);
+
+    //display the pertinents
+    void display(void);
+
+    std::string getControlFile(void) const {
+        return controlFile;
+    }
+    std::string getId(void) const {
+        return id;
+    }
+    unsigned int getPriority(void) const {
+        return priority;
+    }
+    std::string getInput(void) const {
+        return input;
+    }
+    std::string getOutput(void) const {
+        return output;
+    }
+    float getProductFactor(void) const {
+        return productFactor;
+    }
+    int getActingDir(void) const {
+        return actingDir;
+    }
+    float getSetpoint(void) const {
+        return setpoint;
+    }
+    
+    State getCurrentState(void) const {
+        return currentState;
+    }
+};
+
+#endif
\ No newline at end of file