Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: ICE-Application/src/ConfigurationHandler/Controls/SetpointControl.h
- Revision:
- 0:61364762ee0e
diff -r 000000000000 -r 61364762ee0e ICE-Application/src/ConfigurationHandler/Controls/SetpointControl.h
--- /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