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@16:2482d226cf4d, 2014-10-03 (annotated)
- Committer:
- mehatfie
- Date:
- Fri Oct 03 21:33:46 2014 +0000
- Revision:
- 16:2482d226cf4d
- Parent:
- 12:2e3e86714243
- Updated Errors; - Initializes SD Card to work every time; - Cycle timer starts immediately on 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 |