![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Component Test's Software to work with "Universal Controller Box" - Software is an interpreter or "compiler" for programs to be done with a .txt file and read off of the SD Card
Dependencies: BridgeDriver FrontPanelButtons MCP23017 SDFileSystem TextLCD mbed
Initialization.hpp@12:2e3e86714243, 2014-10-01 (annotated)
- Committer:
- mehatfie
- Date:
- Wed Oct 01 19:31:02 2014 +0000
- Revision:
- 12:2e3e86714243
- Parent:
- 11:bc9cd2869f95
- Working Copy; - Cycle Functionality working, able to update desired number of cycles on program; -Error Watch working, except doesn't seem to work for the first cycle... at the moment this is fine, considering technician will be there for first cycle
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mehatfie | 0:22618cf06f45 | 1 | #ifndef INITIALIZATION_HPP |
mehatfie | 0:22618cf06f45 | 2 | #define INITIALIZATION_HPP |
mehatfie | 0:22618cf06f45 | 3 | |
mehatfie | 0:22618cf06f45 | 4 | #include "mbed.h" |
mehatfie | 0:22618cf06f45 | 5 | #include "LocalPinNames.h" |
mehatfie | 0:22618cf06f45 | 6 | #include "BridgeDriver.h" |
mehatfie | 0:22618cf06f45 | 7 | #include "FrontPanelButtons.h" |
mehatfie | 0:22618cf06f45 | 8 | #include "TextLCD.h" |
mehatfie | 0:22618cf06f45 | 9 | #include "SDFileSystem.h" |
mehatfie | 2:3e7baa3e3fec | 10 | #include <string> |
mehatfie | 2:3e7baa3e3fec | 11 | #include <vector> |
mehatfie | 0:22618cf06f45 | 12 | |
mehatfie | 3:078e9a1e8be3 | 13 | |
mehatfie | 3:078e9a1e8be3 | 14 | /**********************************************************************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 15 | /**********************************************************************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 16 | /************************** <MUST MODIFY> *************************/ |
mehatfie | 3:078e9a1e8be3 | 17 | /**********************************************************************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 18 | /**********************************************************************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 19 | |
mehatfie | 11:bc9cd2869f95 | 20 | enum DeviceType{MOTOR, VOLTAGE_DRIVER, PIN_IN, TIMER_DEVICE, CAN_DEVICE}; //ADD DEVICE NAME |
mehatfie | 11:bc9cd2869f95 | 21 | static const enum DeviceType Device_Map[] = {MOTOR, VOLTAGE_DRIVER, PIN_IN, TIMER_DEVICE, CAN_DEVICE}; //AND HERE ***NOTE TO KEEP SAME ORDER |
mehatfie | 3:078e9a1e8be3 | 22 | |
mehatfie | 3:078e9a1e8be3 | 23 | /************************** <MUST MODIFY> *************************/ |
mehatfie | 3:078e9a1e8be3 | 24 | /**********************************************************************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 25 | /**********************************************************************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 26 | |
mehatfie | 3:078e9a1e8be3 | 27 | |
mehatfie | 3:078e9a1e8be3 | 28 | |
mehatfie | 3:078e9a1e8be3 | 29 | /******************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 30 | /*** <Global Initializations> ***/ |
mehatfie | 3:078e9a1e8be3 | 31 | /******************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 32 | |
mehatfie | 0:22618cf06f45 | 33 | //Initializations |
mehatfie | 2:3e7baa3e3fec | 34 | extern Timer timer; // general purpose timer |
mehatfie | 2:3e7baa3e3fec | 35 | extern I2C i2c; // I2C bus (SDA, SCL) |
mehatfie | 2:3e7baa3e3fec | 36 | extern BridgeDriver bridges; // Bridge |
mehatfie | 2:3e7baa3e3fec | 37 | extern TextLCD_I2C lcd; // LCD |
mehatfie | 2:3e7baa3e3fec | 38 | extern SDFileSystem sd; // the pinout on the mbed LPC1768 |
mehatfie | 0:22618cf06f45 | 39 | |
mehatfie | 2:3e7baa3e3fec | 40 | extern DigitalIn killSw; |
mehatfie | 2:3e7baa3e3fec | 41 | |
mehatfie | 11:bc9cd2869f95 | 42 | //extern Ticker errorWatcher; |
mehatfie | 11:bc9cd2869f95 | 43 | |
mehatfie | 2:3e7baa3e3fec | 44 | extern const int MAX_LINE_LENGTH; |
mehatfie | 6:d1594fd2ec5a | 45 | extern int DummyMode; |
mehatfie | 11:bc9cd2869f95 | 46 | extern FILE *selectedFile; |
mehatfie | 11:bc9cd2869f95 | 47 | extern int errorFLAG; |
mehatfie | 11:bc9cd2869f95 | 48 | |
mehatfie | 11:bc9cd2869f95 | 49 | /******************************************************************************/ |
mehatfie | 11:bc9cd2869f95 | 50 | /*** <Line Data Struct Initializations> ***/ |
mehatfie | 11:bc9cd2869f95 | 51 | /******************************************************************************/ |
mehatfie | 11:bc9cd2869f95 | 52 | |
mehatfie | 11:bc9cd2869f95 | 53 | struct LineData{ |
mehatfie | 11:bc9cd2869f95 | 54 | |
mehatfie | 11:bc9cd2869f95 | 55 | int lineNumber; //current line number in the program txt file that is running |
mehatfie | 11:bc9cd2869f95 | 56 | string word[50]; //array of words from the line of text, assuming no more than 50 words will be in any given line |
mehatfie | 11:bc9cd2869f95 | 57 | //in this initialization there are 15 string (pointers) of size MAX_LINE_LENGTH each |
mehatfie | 11:bc9cd2869f95 | 58 | int numWords; //Number of words in the given line |
mehatfie | 11:bc9cd2869f95 | 59 | int lineAddress; //current line address in the SD Card |
mehatfie | 11:bc9cd2869f95 | 60 | }; |
mehatfie | 3:078e9a1e8be3 | 61 | |
mehatfie | 3:078e9a1e8be3 | 62 | /******************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 63 | /*** <Function Initializations> ***/ |
mehatfie | 3:078e9a1e8be3 | 64 | /******************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 65 | |
mehatfie | 3:078e9a1e8be3 | 66 | void fullInit(); //Perform and call any needed initializations |
mehatfie | 0:22618cf06f45 | 67 | |
mehatfie | 3:078e9a1e8be3 | 68 | void initLCD(void); //Initialize the LCD |
mehatfie | 3:078e9a1e8be3 | 69 | |
mehatfie | 9:5a0c4c6e39c7 | 70 | void ErrorOut(string, int); //Outputs error message, line number, and formatting to LCD |
mehatfie | 0:22618cf06f45 | 71 | |
mehatfie | 11:bc9cd2869f95 | 72 | int cyclePrograms(vector<string>, int, int, int); |
mehatfie | 11:bc9cd2869f95 | 73 | |
mehatfie | 11:bc9cd2869f95 | 74 | void resetLineData(LineData &); //reset and all variables of the Line Data Struct |
mehatfie | 11:bc9cd2869f95 | 75 | |
mehatfie | 11:bc9cd2869f95 | 76 | int interpretCommand(LineData &); |
mehatfie | 11:bc9cd2869f95 | 77 | |
mehatfie | 11:bc9cd2869f95 | 78 | int loopCommand(LineData &); |
mehatfie | 11:bc9cd2869f95 | 79 | |
mehatfie | 3:078e9a1e8be3 | 80 | /******************************************************************************/ |
mehatfie | 11:bc9cd2869f95 | 81 | /*** <GoTo Label Initializations> ***/ |
mehatfie | 3:078e9a1e8be3 | 82 | /******************************************************************************/ |
mehatfie | 0:22618cf06f45 | 83 | |
mehatfie | 11:bc9cd2869f95 | 84 | struct GoToLabel{ |
mehatfie | 11:bc9cd2869f95 | 85 | |
mehatfie | 11:bc9cd2869f95 | 86 | string name; //name of the GoTo Label |
mehatfie | 11:bc9cd2869f95 | 87 | int lineNumber; //line number of the GoTo Label |
mehatfie | 11:bc9cd2869f95 | 88 | int lineAddress; //line address of the GoTo Label |
mehatfie | 0:22618cf06f45 | 89 | }; |
mehatfie | 0:22618cf06f45 | 90 | |
mehatfie | 11:bc9cd2869f95 | 91 | extern vector<GoToLabel> GoToLabels; |
mehatfie | 0:22618cf06f45 | 92 | |
mehatfie | 2:3e7baa3e3fec | 93 | |
mehatfie | 11:bc9cd2869f95 | 94 | /******************************************************************************/ |
mehatfie | 11:bc9cd2869f95 | 95 | /*** <Cycle Struct Initializations> ***/ |
mehatfie | 11:bc9cd2869f95 | 96 | /******************************************************************************/ |
mehatfie | 11:bc9cd2869f95 | 97 | |
mehatfie | 11:bc9cd2869f95 | 98 | struct CycleWatch{ |
mehatfie | 11:bc9cd2869f95 | 99 | |
mehatfie | 11:bc9cd2869f95 | 100 | int numCycles; //number of cycles to go to |
mehatfie | 12:2e3e86714243 | 101 | int counter; //number the tracks the current cycle count |
mehatfie | 12:2e3e86714243 | 102 | float totalCycleTime; //tracks the total amount of time for the cycle, in order to calculate the average cycle time |
mehatfie | 11:bc9cd2869f95 | 103 | int startAddress; //starting address to seek back to on loop |
mehatfie | 11:bc9cd2869f95 | 104 | int startLineNumber; //starting line number to reset to |
mehatfie | 11:bc9cd2869f95 | 105 | }; |
mehatfie | 2:3e7baa3e3fec | 106 | |
mehatfie | 3:078e9a1e8be3 | 107 | /******************************************************************************/ |
mehatfie | 3:078e9a1e8be3 | 108 | /*** <Parent Device Class Initializations> ***/ |
mehatfie | 3:078e9a1e8be3 | 109 | /******************************************************************************/ |
mehatfie | 2:3e7baa3e3fec | 110 | |
mehatfie | 3:078e9a1e8be3 | 111 | extern const string DeviceNames[]; |
mehatfie | 2:3e7baa3e3fec | 112 | extern int numDevices; |
mehatfie | 2:3e7baa3e3fec | 113 | extern int currNumDevices; |
mehatfie | 2:3e7baa3e3fec | 114 | |
mehatfie | 2:3e7baa3e3fec | 115 | |
mehatfie | 2:3e7baa3e3fec | 116 | class Device{ |
mehatfie | 2:3e7baa3e3fec | 117 | |
mehatfie | 2:3e7baa3e3fec | 118 | public: |
mehatfie | 2:3e7baa3e3fec | 119 | string name; |
mehatfie | 9:5a0c4c6e39c7 | 120 | int errorFlag; |
mehatfie | 2:3e7baa3e3fec | 121 | enum DeviceType type; |
mehatfie | 5:e36e0538a903 | 122 | static Device* newDevice(int, string, LineData); |
mehatfie | 5:e36e0538a903 | 123 | virtual int interpret(LineData&) = 0; |
mehatfie | 9:5a0c4c6e39c7 | 124 | virtual int off() = 0; |
mehatfie | 11:bc9cd2869f95 | 125 | virtual int pause() = 0; |
mehatfie | 11:bc9cd2869f95 | 126 | virtual int resume() = 0; |
mehatfie | 2:3e7baa3e3fec | 127 | }; |
mehatfie | 2:3e7baa3e3fec | 128 | |
mehatfie | 11:bc9cd2869f95 | 129 | extern vector<Device*> devices; //Initialize vector of devices |
mehatfie | 2:3e7baa3e3fec | 130 | |
mehatfie | 2:3e7baa3e3fec | 131 | |
mehatfie | 11:bc9cd2869f95 | 132 | /******************************************************************************/ |
mehatfie | 11:bc9cd2869f95 | 133 | /*** <Error Monitor Initializations> ***/ |
mehatfie | 11:bc9cd2869f95 | 134 | /******************************************************************************/ |
mehatfie | 11:bc9cd2869f95 | 135 | /* |
mehatfie | 11:bc9cd2869f95 | 136 | struct ErrorCondition{ |
mehatfie | 11:bc9cd2869f95 | 137 | |
mehatfie | 11:bc9cd2869f95 | 138 | LineData errorToWatch; |
mehatfie | 11:bc9cd2869f95 | 139 | LineData errorFix; |
mehatfie | 11:bc9cd2869f95 | 140 | int hasFix; |
mehatfie | 11:bc9cd2869f95 | 141 | }; |
mehatfie | 11:bc9cd2869f95 | 142 | |
mehatfie | 11:bc9cd2869f95 | 143 | //extern vector<ErrorCondition> errorMonitors; //Initialize vector of errors to monitor |
mehatfie | 11:bc9cd2869f95 | 144 | extern ErrorCondition errorMonitors[15]; |
mehatfie | 11:bc9cd2869f95 | 145 | extern int numErrorMonitors;*/ |
mehatfie | 11:bc9cd2869f95 | 146 | //void ErrorMonitor(); //Monitors the conditions to watch for erroring, and pauses system if any of the conditions turn out to be true |
mehatfie | 11:bc9cd2869f95 | 147 | |
mehatfie | 0:22618cf06f45 | 148 | #endif |