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

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?

UserRevisionLine numberNew 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