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
Revision 13:899db9d635e5, committed 2014-10-01
- Comitter:
- mehatfie
- Date:
- Wed Oct 01 23:08:39 2014 +0000
- Parent:
- 12:2e3e86714243
- Child:
- 14:953820302fb7
- Commit message:
- - cycle function working; - errorWatch does in fact work on the first cycle around; - error corrected in code where the tempError is not initialized, and then falsely sets the second errorWatch to have a fix, when it doesn't
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Oct 01 19:31:02 2014 +0000
+++ b/main.cpp Wed Oct 01 23:08:39 2014 +0000
@@ -607,6 +607,7 @@
/**********************************************************************************************************************************/
int interprettingErrorFlag = 0;
+int enableErrors = 0;
class ErrorCondition{
@@ -622,9 +623,9 @@
int interpretCommand(LineData &lineData){
-
+
//Monitors the conditions to watch for erroring, and pauses system if any of the conditions turn out to be true
- if (!interprettingErrorFlag){
+ if (!interprettingErrorFlag && enableErrors){
int j = 0, error = -1, numError = 0;
for(j = 0; j < numErrorsConditions; j++){
int checkCondition = 0;
@@ -639,9 +640,8 @@
//if the error has a Fix / Reset command, do it
if (errorMonitors[j].hasFix){
- int returnValue;
interprettingErrorFlag = 1;
- returnValue = interpretCommand(errorMonitors[j].errorFix); //Fix / Reset the error based on how the user justified to do so
+ int returnValue = interpretCommand(errorMonitors[j].errorFix); //Fix / Reset the error based on how the user justified to do so
interprettingErrorFlag = 0;
if (returnValue == -1)
return -1;
@@ -658,7 +658,6 @@
char errorMsg[100] = "errorWatch! Item: ";
strcat(errorMsg, errorMonitors[error].errorToWatch.word[0].c_str()); //Send the first word of the error condition to help find out what the error was
ErrorOut(errorMsg, numError);
- //errorFLAG = 1; //set error flag equal to 1 if error occurred
//place all devices into the pause functionality
int i = 0;
@@ -724,7 +723,7 @@
else if (lineData.word[0].compare("errorWatch") == 0){
//line looks like: error, _Condition_, FIX(?), _Command_
//create a temp LineData variable to store the correct information of the error Condition (discluding the first "error" keyword
- ErrorCondition tempError;
+ ErrorCondition tempError = ErrorCondition();
LineData tempLine;
int i = 1, funcNumWords = 0;
@@ -753,7 +752,7 @@
}
//if the error has a fix, it means that it already process the "Error to Watch" but needs to process the "Error Fix" into the error condition
- if (tempError.hasFix){
+ if (tempError.hasFix == 1){
//Save the line as the "Error Fix" value
tempLine.numWords = funcNumWords;
tempLine.lineAddress = lineData.lineAddress;
@@ -773,7 +772,12 @@
//if DummyMode, send error Condition to the interpretCommand so that we can check the syntax
if (DummyMode){
int returnValue1 = interpretCommand(tempError.errorToWatch);
- int returnValue2 = interpretCommand(tempError.errorFix);
+
+ //if this error has a fix then check the syntax
+ int returnValue2 = 0;
+ if (tempError.hasFix)
+ returnValue2 = interpretCommand(tempError.errorFix);
+
if (returnValue1 == -1 || returnValue2 == -1)
return -1;
}
@@ -916,23 +920,26 @@
/*** <Functionality: loop> ***/
/******************************************************************************/
- else if (lineData.word[0].compare("loop") == 0)
+ else if (lineData.word[0].compare("loop") == 0){
+ enableErrors = 1;
return loopCommand(lineData); //Process the loop command and return the value that it returns
-
+ }
/******************************************************************************/
/*** <Functionality: condition> ***/
/******************************************************************************/
- else if (lineData.word[0].compare("condition") == 0)
+ else if (lineData.word[0].compare("condition") == 0){
+ enableErrors = 1;
return conditionCommand(selectedFile, lineData); //Process the condition command and return the value that it returns
-
+ }
/******************************************************************************/
/*** <Functionality: cycle> ***/
/******************************************************************************/
- else if (lineData.word[0].compare("cycle") == 0)
+ else if (lineData.word[0].compare("cycle") == 0){
+ enableErrors = 1;
return cycleCommand(lineData, 1); //Sending 1 means it's initializing
-
+ }
/******************************************************************************/
/*** <Functionality: end> ***/
@@ -963,13 +970,8 @@
//not a keyword so check if it's a localName for a device
else{
-
-// lcd.setAddress(0,1);
-// lcd.printf("wrd1: %s", lineData.word[0]);
-// wait(1);
-
int i = 0, deviceFound = -1;
- for (i = 0; i < devices.size(); i++){
+ for (i = 0; i < devices.size(); i++){
if (lineData.word[0].compare(devices[i]->name) == 0)
deviceFound = i;
}
@@ -978,9 +980,7 @@
if (deviceFound == -1){
ErrorOut("No device match found in the system", lineData.lineNumber); //Spaces make it look nice on LCD
return -1;
- }
-
-
+ }
//Local Name matches a device, send line to that device in order to process the functionality
else