Erick / Mbed 2 deprecated ICE-F412

Dependencies:   mbed-rtos mbed

Committer:
jmarkel44
Date:
Tue Jan 24 19:05:33 2017 +0000
Revision:
0:61364762ee0e
Port from IAR to Nucleo-F412 board

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 0:61364762ee0e 1 /******************************************************************************
jmarkel44 0:61364762ee0e 2 *
jmarkel44 0:61364762ee0e 3 * File: TimerControl.h
jmarkel44 0:61364762ee0e 4 * Desciption: ICE Timer Control Class
jmarkel44 0:61364762ee0e 5 *
jmarkel44 0:61364762ee0e 6 *****************************************************************************/
jmarkel44 0:61364762ee0e 7 #ifndef TIMERCONTROL_H
jmarkel44 0:61364762ee0e 8 #define TIMERCONTROL_H
jmarkel44 0:61364762ee0e 9
jmarkel44 0:61364762ee0e 10 //#include "ConfigurationHandler.h"
jmarkel44 0:61364762ee0e 11 #include <string>
jmarkel44 0:61364762ee0e 12 #include <stdio.h>
jmarkel44 0:61364762ee0e 13 #include <vector>
jmarkel44 0:61364762ee0e 14
jmarkel44 0:61364762ee0e 15 typedef enum {
jmarkel44 0:61364762ee0e 16 TIMER_CONTROL_OK,
jmarkel44 0:61364762ee0e 17 TIMER_CONTROL_UNK_STATE,
jmarkel44 0:61364762ee0e 18 TIMER_CONTROL_ERROR,
jmarkel44 0:61364762ee0e 19 TIMER_CONTROL_DESTROY
jmarkel44 0:61364762ee0e 20 } TimerControlError_t;
jmarkel44 0:61364762ee0e 21
jmarkel44 0:61364762ee0e 22
jmarkel44 0:61364762ee0e 23 //! Timer Control - implements a timer control.
jmarkel44 0:61364762ee0e 24 /// @code
jmarkel44 0:61364762ee0e 25 /// #include "TimerControl.h"
jmarkel44 0:61364762ee0e 26 ///
jmarkel44 0:61364762ee0e 27 /// int main(void)
jmarkel44 0:61364762ee0e 28 /// {
jmarkel44 0:61364762ee0e 29 /// TimerControl *t = new TimerControl();
jmarkel44 0:61364762ee0e 30 /// bool rc = t->load(controlFile);
jmarkel44 0:61364762ee0e 31 /// if ( rc != true ) {
jmarkel44 0:61364762ee0e 32 /// logError("%s: failed to load the manual control\n");
jmarkel44 0:61364762ee0e 33 /// delete t;
jmarkel44 0:61364762ee0e 34 /// exit(-1);
jmarkel44 0:61364762ee0e 35 /// }
jmarkel44 0:61364762ee0e 36 ///
jmarkel44 0:61364762ee0e 37 /// t->start();
jmarkel44 0:61364762ee0e 38 /// for ( ;; ) {
jmarkel44 0:61364762ee0e 39 /// t->update();
jmarkel44 0:61364762ee0e 40 /// }
jmarkel44 0:61364762ee0e 41 /// }
jmarkel44 0:61364762ee0e 42 /// @endcode
jmarkel44 0:61364762ee0e 43 class TimerControl
jmarkel44 0:61364762ee0e 44 {
jmarkel44 0:61364762ee0e 45 private:
jmarkel44 0:61364762ee0e 46 std::string controlFile; // file containing control data
jmarkel44 0:61364762ee0e 47 std::string id; // timer identifier
jmarkel44 0:61364762ee0e 48 std::string output; // output to control
jmarkel44 0:61364762ee0e 49 unsigned int priority; // control priority
jmarkel44 0:61364762ee0e 50 unsigned int day;
jmarkel44 0:61364762ee0e 51 unsigned int startHour; // start hour (0-23)
jmarkel44 0:61364762ee0e 52 unsigned int startMin; // start minute (0-59)
jmarkel44 0:61364762ee0e 53 unsigned int startSec; // start second (0-59)
jmarkel44 0:61364762ee0e 54 unsigned int duration; // duration in seconds
jmarkel44 0:61364762ee0e 55 unsigned int week; // every week, first week, ...
jmarkel44 0:61364762ee0e 56
jmarkel44 0:61364762ee0e 57 enum State {
jmarkel44 0:61364762ee0e 58 STATE_INIT,
jmarkel44 0:61364762ee0e 59 STATE_OFF,
jmarkel44 0:61364762ee0e 60 STATE_RUNNING,
jmarkel44 0:61364762ee0e 61 STATE_FINISHED,
jmarkel44 0:61364762ee0e 62 STATE_DISABLED
jmarkel44 0:61364762ee0e 63 };
jmarkel44 0:61364762ee0e 64 State currentState;
jmarkel44 0:61364762ee0e 65
jmarkel44 0:61364762ee0e 66 unsigned long nextScheduledStartTime;
jmarkel44 0:61364762ee0e 67 unsigned long startTime;
jmarkel44 0:61364762ee0e 68
jmarkel44 0:61364762ee0e 69 bool isVirtualOutput;
jmarkel44 0:61364762ee0e 70
jmarkel44 0:61364762ee0e 71 // validate control file data
jmarkel44 0:61364762ee0e 72 bool validateControlData(const char *buf);
jmarkel44 0:61364762ee0e 73
jmarkel44 0:61364762ee0e 74 // copy control file data to object
jmarkel44 0:61364762ee0e 75 void copyControlData(const char *buf);
jmarkel44 0:61364762ee0e 76
jmarkel44 0:61364762ee0e 77 // start a feed
jmarkel44 0:61364762ee0e 78 void startFeed(void);
jmarkel44 0:61364762ee0e 79
jmarkel44 0:61364762ee0e 80 // stop a feed
jmarkel44 0:61364762ee0e 81 void stopFeed(void);
jmarkel44 0:61364762ee0e 82
jmarkel44 0:61364762ee0e 83 // calculate time until start
jmarkel44 0:61364762ee0e 84 unsigned long calcStartTime() const;
jmarkel44 0:61364762ee0e 85
jmarkel44 0:61364762ee0e 86 const char *displayTime(void);
jmarkel44 0:61364762ee0e 87
jmarkel44 0:61364762ee0e 88 public:
jmarkel44 0:61364762ee0e 89 TimerControl() {
jmarkel44 0:61364762ee0e 90 currentState = STATE_INIT;
jmarkel44 0:61364762ee0e 91 }
jmarkel44 0:61364762ee0e 92 ~TimerControl() {
jmarkel44 0:61364762ee0e 93 printf("\r%s invoked\n", __func__);
jmarkel44 0:61364762ee0e 94 }
jmarkel44 0:61364762ee0e 95 /// load control data from a JSON configuration file
jmarkel44 0:61364762ee0e 96 bool load(std::string filename);
jmarkel44 0:61364762ee0e 97
jmarkel44 0:61364762ee0e 98 /// start a timer control instance
jmarkel44 0:61364762ee0e 99 void start(void);
jmarkel44 0:61364762ee0e 100
jmarkel44 0:61364762ee0e 101 /// update a timer control instance
jmarkel44 0:61364762ee0e 102 TimerControlError_t update(void);
jmarkel44 0:61364762ee0e 103
jmarkel44 0:61364762ee0e 104 /// unregister a timer control instance from the output thread
jmarkel44 0:61364762ee0e 105 void unregisterControl(void);
jmarkel44 0:61364762ee0e 106
jmarkel44 0:61364762ee0e 107 /// display pertinent data of a timer control instance
jmarkel44 0:61364762ee0e 108 void display(void);
jmarkel44 0:61364762ee0e 109
jmarkel44 0:61364762ee0e 110 std::string getControlFile(void) const {
jmarkel44 0:61364762ee0e 111 return controlFile;
jmarkel44 0:61364762ee0e 112 }
jmarkel44 0:61364762ee0e 113
jmarkel44 0:61364762ee0e 114 std::string getId(void) const {
jmarkel44 0:61364762ee0e 115 return id;
jmarkel44 0:61364762ee0e 116 }
jmarkel44 0:61364762ee0e 117
jmarkel44 0:61364762ee0e 118 std::string getOutput(void) const {
jmarkel44 0:61364762ee0e 119 return output;
jmarkel44 0:61364762ee0e 120 }
jmarkel44 0:61364762ee0e 121
jmarkel44 0:61364762ee0e 122 unsigned int getPriority(void) const {
jmarkel44 0:61364762ee0e 123 return priority;
jmarkel44 0:61364762ee0e 124 }
jmarkel44 0:61364762ee0e 125
jmarkel44 0:61364762ee0e 126 unsigned int getDuration(void) const {
jmarkel44 0:61364762ee0e 127 return duration;
jmarkel44 0:61364762ee0e 128 }
jmarkel44 0:61364762ee0e 129
jmarkel44 0:61364762ee0e 130 State getCurrentState(void) const {
jmarkel44 0:61364762ee0e 131 return currentState;
jmarkel44 0:61364762ee0e 132 }
jmarkel44 0:61364762ee0e 133 };
jmarkel44 0:61364762ee0e 134
jmarkel44 0:61364762ee0e 135 #endif