Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BridgeDriver FrontPanelButtons MCP23017 SDFileSystem TextLCD mbed
DeviceClasses.hpp@2:3e7baa3e3fec, 2014-09-18 (annotated)
- Committer:
- mehatfie
- Date:
- Thu Sep 18 23:38:11 2014 +0000
- Revision:
- 2:3e7baa3e3fec
- Revamped whole system and now works without stalling or freezing mid program; - now Object Oriented Based in terms of Devices (inheritance of functions)
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| mehatfie | 2:3e7baa3e3fec | 1 | ///*#include "mbed.h" |
| mehatfie | 2:3e7baa3e3fec | 2 | //#include "LocalPinNames.h" |
| mehatfie | 2:3e7baa3e3fec | 3 | //#include "TextLCD.h" |
| mehatfie | 2:3e7baa3e3fec | 4 | //#include "BridgeDriver.h" |
| mehatfie | 2:3e7baa3e3fec | 5 | //*/ |
| mehatfie | 2:3e7baa3e3fec | 6 | //#include "Device.hpp" |
| mehatfie | 2:3e7baa3e3fec | 7 | ////#include <string> |
| mehatfie | 2:3e7baa3e3fec | 8 | // |
| mehatfie | 2:3e7baa3e3fec | 9 | ///**********************************************************************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 10 | ///**********************************************************************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 11 | ///*************************** <CLASS: Voltage_Driver> ****************************/ |
| mehatfie | 2:3e7baa3e3fec | 12 | ///**********************************************************************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 13 | ///**********************************************************************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 14 | // |
| mehatfie | 2:3e7baa3e3fec | 15 | //class Voltage_Driver{ |
| mehatfie | 2:3e7baa3e3fec | 16 | // |
| mehatfie | 2:3e7baa3e3fec | 17 | // public : |
| mehatfie | 2:3e7baa3e3fec | 18 | // //uint8_t ch123; //Channel value this device is set to |
| mehatfie | 2:3e7baa3e3fec | 19 | // int ch; |
| mehatfie | 2:3e7baa3e3fec | 20 | // int test; |
| mehatfie | 2:3e7baa3e3fec | 21 | // |
| mehatfie | 2:3e7baa3e3fec | 22 | // int interpret(); |
| mehatfie | 2:3e7baa3e3fec | 23 | // int forceBrake(); |
| mehatfie | 2:3e7baa3e3fec | 24 | // //int forceFloat(); |
| mehatfie | 2:3e7baa3e3fec | 25 | // float drive(); |
| mehatfie | 2:3e7baa3e3fec | 26 | // |
| mehatfie | 2:3e7baa3e3fec | 27 | // //Voltage_Driver(); |
| mehatfie | 2:3e7baa3e3fec | 28 | // void setChannel(int channel){ |
| mehatfie | 2:3e7baa3e3fec | 29 | // Voltage_Driver::ch = channel; |
| mehatfie | 2:3e7baa3e3fec | 30 | // } |
| mehatfie | 2:3e7baa3e3fec | 31 | // |
| mehatfie | 2:3e7baa3e3fec | 32 | // int getChannel(){ |
| mehatfie | 2:3e7baa3e3fec | 33 | // return Voltage_Driver::ch; |
| mehatfie | 2:3e7baa3e3fec | 34 | // } |
| mehatfie | 2:3e7baa3e3fec | 35 | //}; |
| mehatfie | 2:3e7baa3e3fec | 36 | // |
| mehatfie | 2:3e7baa3e3fec | 37 | ////Voltage_Driver::Voltage_Driver(void){ |
| mehatfie | 2:3e7baa3e3fec | 38 | ////} |
| mehatfie | 2:3e7baa3e3fec | 39 | // |
| mehatfie | 2:3e7baa3e3fec | 40 | ////A line consists of [ __(Local_Name)__ __(function)__ __(parameter1)__ __(parameter2)__ __(parameter3)__ ... and so on] |
| mehatfie | 2:3e7baa3e3fec | 41 | //int Voltage_Driver::interpret(){ |
| mehatfie | 2:3e7baa3e3fec | 42 | // /* |
| mehatfie | 2:3e7baa3e3fec | 43 | // lcd.cls(); //clear the display |
| mehatfie | 2:3e7baa3e3fec | 44 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 45 | // lcd.printf("Test2 "); |
| mehatfie | 2:3e7baa3e3fec | 46 | // lcd.setAddress(0,1); |
| mehatfie | 2:3e7baa3e3fec | 47 | // lcd.printf("wrd1: %s", lineData.word[0]); |
| mehatfie | 2:3e7baa3e3fec | 48 | // lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 49 | // lcd.printf("wrd2: %s", lineData.word[1]); |
| mehatfie | 2:3e7baa3e3fec | 50 | // wait(3); |
| mehatfie | 2:3e7baa3e3fec | 51 | //*/ |
| mehatfie | 2:3e7baa3e3fec | 52 | // |
| mehatfie | 2:3e7baa3e3fec | 53 | // |
| mehatfie | 2:3e7baa3e3fec | 54 | // string firstWord = lineData.word[0]; //get the first word in the line |
| mehatfie | 2:3e7baa3e3fec | 55 | ///* |
| mehatfie | 2:3e7baa3e3fec | 56 | // lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 57 | // lcd.printf("fW: %s", firstWord); |
| mehatfie | 2:3e7baa3e3fec | 58 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 59 | // lcd.printf("ch: %d", ch); |
| mehatfie | 2:3e7baa3e3fec | 60 | // wait(3);*/ |
| mehatfie | 2:3e7baa3e3fec | 61 | // |
| mehatfie | 2:3e7baa3e3fec | 62 | // //Initialize the class and device |
| mehatfie | 2:3e7baa3e3fec | 63 | // if (firstWord.compare("device") == 0){ |
| mehatfie | 2:3e7baa3e3fec | 64 | // //Order of Line: Command, Local_Name, VOLTAGE_DRIVER, Channel(1,2,3,4,5,6,7,8) |
| mehatfie | 2:3e7baa3e3fec | 65 | // |
| mehatfie | 2:3e7baa3e3fec | 66 | // test = 10; |
| mehatfie | 2:3e7baa3e3fec | 67 | // |
| mehatfie | 2:3e7baa3e3fec | 68 | // if (lineData.numWords != 4){ |
| mehatfie | 2:3e7baa3e3fec | 69 | // //Error Check, incorrect number of parameter, error out |
| mehatfie | 2:3e7baa3e3fec | 70 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 71 | // } |
| mehatfie | 2:3e7baa3e3fec | 72 | // |
| mehatfie | 2:3e7baa3e3fec | 73 | // string channel = lineData.word[3]; //Parameter is a number |
| mehatfie | 2:3e7baa3e3fec | 74 | // int channelValue = 0; |
| mehatfie | 2:3e7baa3e3fec | 75 | // sscanf(channel.c_str(), "%d", &channelValue); |
| mehatfie | 2:3e7baa3e3fec | 76 | // |
| mehatfie | 2:3e7baa3e3fec | 77 | // //Channel Value between 1 to 8 |
| mehatfie | 2:3e7baa3e3fec | 78 | // if (channelValue >= 1 && channelValue <= 8){ |
| mehatfie | 2:3e7baa3e3fec | 79 | // |
| mehatfie | 2:3e7baa3e3fec | 80 | // setChannel(channelValue); |
| mehatfie | 2:3e7baa3e3fec | 81 | // //ch = channelValue; |
| mehatfie | 2:3e7baa3e3fec | 82 | // |
| mehatfie | 2:3e7baa3e3fec | 83 | // lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 84 | // lcd.printf("fW: %s", firstWord); |
| mehatfie | 2:3e7baa3e3fec | 85 | // //lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 86 | // //lcd.printf("ch: %d", getChannel()); |
| mehatfie | 2:3e7baa3e3fec | 87 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 88 | // lcd.printf("test: %d", test); |
| mehatfie | 2:3e7baa3e3fec | 89 | // //lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 90 | // //lcd.printf("chString: %s", chString); |
| mehatfie | 2:3e7baa3e3fec | 91 | // wait(2); |
| mehatfie | 2:3e7baa3e3fec | 92 | // |
| mehatfie | 2:3e7baa3e3fec | 93 | // switch (channelValue){ |
| mehatfie | 2:3e7baa3e3fec | 94 | // case 1: |
| mehatfie | 2:3e7baa3e3fec | 95 | // case 2: |
| mehatfie | 2:3e7baa3e3fec | 96 | // bridges.enablePwm(BridgeDriver::MOTOR_A, 0); |
| mehatfie | 2:3e7baa3e3fec | 97 | // break; |
| mehatfie | 2:3e7baa3e3fec | 98 | // case 3: |
| mehatfie | 2:3e7baa3e3fec | 99 | // case 4: |
| mehatfie | 2:3e7baa3e3fec | 100 | // bridges.enablePwm(BridgeDriver::MOTOR_B, 0); |
| mehatfie | 2:3e7baa3e3fec | 101 | // break; |
| mehatfie | 2:3e7baa3e3fec | 102 | // case 5: |
| mehatfie | 2:3e7baa3e3fec | 103 | // case 6: |
| mehatfie | 2:3e7baa3e3fec | 104 | // bridges.enablePwm(BridgeDriver::MOTOR_C, 0); |
| mehatfie | 2:3e7baa3e3fec | 105 | // break; |
| mehatfie | 2:3e7baa3e3fec | 106 | // case 7: |
| mehatfie | 2:3e7baa3e3fec | 107 | // case 8: |
| mehatfie | 2:3e7baa3e3fec | 108 | // bridges.enablePwm(BridgeDriver::MOTOR_D, 0); |
| mehatfie | 2:3e7baa3e3fec | 109 | // break; |
| mehatfie | 2:3e7baa3e3fec | 110 | // } |
| mehatfie | 2:3e7baa3e3fec | 111 | // /* lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 112 | // lcd.printf("AchannelVal: %d", channelValue); |
| mehatfie | 2:3e7baa3e3fec | 113 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 114 | // lcd.printf("Ach: %d", ch); |
| mehatfie | 2:3e7baa3e3fec | 115 | // wait(3);*/ |
| mehatfie | 2:3e7baa3e3fec | 116 | // |
| mehatfie | 2:3e7baa3e3fec | 117 | // } |
| mehatfie | 2:3e7baa3e3fec | 118 | // else{ |
| mehatfie | 2:3e7baa3e3fec | 119 | // //ERROR Out |
| mehatfie | 2:3e7baa3e3fec | 120 | // //Unacceptable channel, or conversion function failed when converting string to int |
| mehatfie | 2:3e7baa3e3fec | 121 | // } |
| mehatfie | 2:3e7baa3e3fec | 122 | // } |
| mehatfie | 2:3e7baa3e3fec | 123 | // |
| mehatfie | 2:3e7baa3e3fec | 124 | // //if the first word is not "device" it means that it's trying to perform a function to a specific Motor |
| mehatfie | 2:3e7baa3e3fec | 125 | // else{ |
| mehatfie | 2:3e7baa3e3fec | 126 | // |
| mehatfie | 2:3e7baa3e3fec | 127 | // |
| mehatfie | 2:3e7baa3e3fec | 128 | // |
| mehatfie | 2:3e7baa3e3fec | 129 | // //Order of Line: Local_Name, Function_Name, Param1, Param2, Param3,....... |
| mehatfie | 2:3e7baa3e3fec | 130 | // string localname = lineData.word[0]; //just for the sake of following the variable easily and understanding |
| mehatfie | 2:3e7baa3e3fec | 131 | // string func = lineData.word[1]; |
| mehatfie | 2:3e7baa3e3fec | 132 | // |
| mehatfie | 2:3e7baa3e3fec | 133 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 134 | // /*** <Func: forceBrake> ***/ |
| mehatfie | 2:3e7baa3e3fec | 135 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 136 | // if (func.compare("forceBrake") == 0){ |
| mehatfie | 2:3e7baa3e3fec | 137 | // |
| mehatfie | 2:3e7baa3e3fec | 138 | // if (lineData.numWords != 3){ |
| mehatfie | 2:3e7baa3e3fec | 139 | // //Error Check, incorrect number of parameter, error out |
| mehatfie | 2:3e7baa3e3fec | 140 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 141 | // } |
| mehatfie | 2:3e7baa3e3fec | 142 | // |
| mehatfie | 2:3e7baa3e3fec | 143 | // bridges.forceBrake(ch); |
| mehatfie | 2:3e7baa3e3fec | 144 | // } |
| mehatfie | 2:3e7baa3e3fec | 145 | // |
| mehatfie | 2:3e7baa3e3fec | 146 | // |
| mehatfie | 2:3e7baa3e3fec | 147 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 148 | // /*** <Func: drive> ***/ |
| mehatfie | 2:3e7baa3e3fec | 149 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 150 | // else if (func.compare("drive") == 0){ |
| mehatfie | 2:3e7baa3e3fec | 151 | // //Order of Line: Local_Name, drive |
| mehatfie | 2:3e7baa3e3fec | 152 | // |
| mehatfie | 2:3e7baa3e3fec | 153 | // lcd.setAddress(0,0); |
| mehatfie | 2:3e7baa3e3fec | 154 | // lcd.printf("lclN: %s ", localname); |
| mehatfie | 2:3e7baa3e3fec | 155 | // lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 156 | // lcd.printf("func: %s ", func); |
| mehatfie | 2:3e7baa3e3fec | 157 | // //lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 158 | // //lcd.printf("3ch: %d ", getChannel()); |
| mehatfie | 2:3e7baa3e3fec | 159 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 160 | // lcd.printf("test: %d", test); |
| mehatfie | 2:3e7baa3e3fec | 161 | // //lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 162 | // //lcd.printf("chString: %s ", chString); |
| mehatfie | 2:3e7baa3e3fec | 163 | // wait(3); |
| mehatfie | 2:3e7baa3e3fec | 164 | // |
| mehatfie | 2:3e7baa3e3fec | 165 | // if (lineData.numWords != 2){ |
| mehatfie | 2:3e7baa3e3fec | 166 | // //Error Check, incorrect number of parameter, error out |
| mehatfie | 2:3e7baa3e3fec | 167 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 168 | // } |
| mehatfie | 2:3e7baa3e3fec | 169 | // /* |
| mehatfie | 2:3e7baa3e3fec | 170 | // int State = 2; |
| mehatfie | 2:3e7baa3e3fec | 171 | // int channelValue = atoi(chString); |
| mehatfie | 2:3e7baa3e3fec | 172 | // State = bridges.drive(channelValue, 1); //Turn channel on |
| mehatfie | 2:3e7baa3e3fec | 173 | // lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 174 | // lcd.printf("TEST ch: %d, State: %d", channelValue, State); |
| mehatfie | 2:3e7baa3e3fec | 175 | // wait(3);*/ |
| mehatfie | 2:3e7baa3e3fec | 176 | // |
| mehatfie | 2:3e7baa3e3fec | 177 | // } |
| mehatfie | 2:3e7baa3e3fec | 178 | // |
| mehatfie | 2:3e7baa3e3fec | 179 | // |
| mehatfie | 2:3e7baa3e3fec | 180 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 181 | // /**** <Func: off> ****/ |
| mehatfie | 2:3e7baa3e3fec | 182 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 183 | // else if (func.compare("drive") == 0){ |
| mehatfie | 2:3e7baa3e3fec | 184 | // //Order of Line: Local_Name, drive, duration |
| mehatfie | 2:3e7baa3e3fec | 185 | // |
| mehatfie | 2:3e7baa3e3fec | 186 | // if (lineData.numWords != 2){ |
| mehatfie | 2:3e7baa3e3fec | 187 | // //Error Check, incorrect number of parameter, error out |
| mehatfie | 2:3e7baa3e3fec | 188 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 189 | // } |
| mehatfie | 2:3e7baa3e3fec | 190 | // |
| mehatfie | 2:3e7baa3e3fec | 191 | // bridges.drive(getChannel(), 0); //Turn channel off |
| mehatfie | 2:3e7baa3e3fec | 192 | // } |
| mehatfie | 2:3e7baa3e3fec | 193 | // |
| mehatfie | 2:3e7baa3e3fec | 194 | // else { |
| mehatfie | 2:3e7baa3e3fec | 195 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 196 | // |
| mehatfie | 2:3e7baa3e3fec | 197 | // } |
| mehatfie | 2:3e7baa3e3fec | 198 | // } |
| mehatfie | 2:3e7baa3e3fec | 199 | // /* |
| mehatfie | 2:3e7baa3e3fec | 200 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 201 | // lcd.printf("ENDch: %d ", getChannel()); |
| mehatfie | 2:3e7baa3e3fec | 202 | // wait(3);*/ |
| mehatfie | 2:3e7baa3e3fec | 203 | // |
| mehatfie | 2:3e7baa3e3fec | 204 | // return 1; |
| mehatfie | 2:3e7baa3e3fec | 205 | //} |
| mehatfie | 2:3e7baa3e3fec | 206 | // |
| mehatfie | 2:3e7baa3e3fec | 207 | // |
| mehatfie | 2:3e7baa3e3fec | 208 | // |
| mehatfie | 2:3e7baa3e3fec | 209 | ///**********************************************************************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 210 | ///**********************************************************************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 211 | ///******************************** <CLASS: Motor> ********************************/ |
| mehatfie | 2:3e7baa3e3fec | 212 | ///**********************************************************************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 213 | ///**********************************************************************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 214 | // |
| mehatfie | 2:3e7baa3e3fec | 215 | //class Motor{ |
| mehatfie | 2:3e7baa3e3fec | 216 | // |
| mehatfie | 2:3e7baa3e3fec | 217 | // enum BridgeDriver::Motors motor; |
| mehatfie | 2:3e7baa3e3fec | 218 | // |
| mehatfie | 2:3e7baa3e3fec | 219 | // public : |
| mehatfie | 2:3e7baa3e3fec | 220 | // int interpret(); |
| mehatfie | 2:3e7baa3e3fec | 221 | // void enableBrake(); |
| mehatfie | 2:3e7baa3e3fec | 222 | // int forceBrake(); |
| mehatfie | 2:3e7baa3e3fec | 223 | // //int forceFloat(); |
| mehatfie | 2:3e7baa3e3fec | 224 | // float drive(); |
| mehatfie | 2:3e7baa3e3fec | 225 | // |
| mehatfie | 2:3e7baa3e3fec | 226 | // |
| mehatfie | 2:3e7baa3e3fec | 227 | // void setMotor(BridgeDriver::Motors selectedMotor){ |
| mehatfie | 2:3e7baa3e3fec | 228 | // motor = selectedMotor; |
| mehatfie | 2:3e7baa3e3fec | 229 | // } |
| mehatfie | 2:3e7baa3e3fec | 230 | // |
| mehatfie | 2:3e7baa3e3fec | 231 | // enum BridgeDriver::Motors getMotor(){ |
| mehatfie | 2:3e7baa3e3fec | 232 | // return motor; |
| mehatfie | 2:3e7baa3e3fec | 233 | // } |
| mehatfie | 2:3e7baa3e3fec | 234 | // |
| mehatfie | 2:3e7baa3e3fec | 235 | //}; |
| mehatfie | 2:3e7baa3e3fec | 236 | // |
| mehatfie | 2:3e7baa3e3fec | 237 | ////A line consists of [ __(Local_Name)__ __(function)__ __(parameter1)__ __(parameter2)__ __(parameter3)__ ... and so on] |
| mehatfie | 2:3e7baa3e3fec | 238 | //int Motor::interpret(){ |
| mehatfie | 2:3e7baa3e3fec | 239 | // /* |
| mehatfie | 2:3e7baa3e3fec | 240 | // lcd.cls(); //clear the display |
| mehatfie | 2:3e7baa3e3fec | 241 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 242 | // lcd.printf("Test2 "); |
| mehatfie | 2:3e7baa3e3fec | 243 | // lcd.setAddress(0,1); |
| mehatfie | 2:3e7baa3e3fec | 244 | // lcd.printf("wrd1: %s", lineData.word[0]); |
| mehatfie | 2:3e7baa3e3fec | 245 | // lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 246 | // lcd.printf("wrd2: %s", lineData.word[1]); |
| mehatfie | 2:3e7baa3e3fec | 247 | // wait(3); |
| mehatfie | 2:3e7baa3e3fec | 248 | //*/ |
| mehatfie | 2:3e7baa3e3fec | 249 | // /* |
| mehatfie | 2:3e7baa3e3fec | 250 | // lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 251 | // lcd.printf("wrd1: %s", lineData.word[0]); |
| mehatfie | 2:3e7baa3e3fec | 252 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 253 | // lcd.printf("TEST1 "); |
| mehatfie | 2:3e7baa3e3fec | 254 | // wait(1);*/ |
| mehatfie | 2:3e7baa3e3fec | 255 | // |
| mehatfie | 2:3e7baa3e3fec | 256 | // string firstWord = lineData.word[0]; //splits the str based on a space delimeter |
| mehatfie | 2:3e7baa3e3fec | 257 | // |
| mehatfie | 2:3e7baa3e3fec | 258 | // if (firstWord.compare("device") == 0){ |
| mehatfie | 2:3e7baa3e3fec | 259 | // //Order of Line: Command, Local_Name, VOLTAGE_DRIVER, Channel(1,2,3,4,5,6,7,8) |
| mehatfie | 2:3e7baa3e3fec | 260 | // |
| mehatfie | 2:3e7baa3e3fec | 261 | // if (lineData.numWords != 4){ |
| mehatfie | 2:3e7baa3e3fec | 262 | // //Error Check, incorrect number of parameter, error out |
| mehatfie | 2:3e7baa3e3fec | 263 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 264 | // } |
| mehatfie | 2:3e7baa3e3fec | 265 | // |
| mehatfie | 2:3e7baa3e3fec | 266 | // string channel = lineData.word[3]; //Parameter is a single character, so dereference the point to the word |
| mehatfie | 2:3e7baa3e3fec | 267 | // |
| mehatfie | 2:3e7baa3e3fec | 268 | // if ((channel.compare("A") == 0) || (channel.compare("a") == 0)) |
| mehatfie | 2:3e7baa3e3fec | 269 | // setMotor(BridgeDriver::MOTOR_A); |
| mehatfie | 2:3e7baa3e3fec | 270 | // else if ((channel.compare("B") == 0) || (channel.compare("b") == 0)) |
| mehatfie | 2:3e7baa3e3fec | 271 | // setMotor(BridgeDriver::MOTOR_B); |
| mehatfie | 2:3e7baa3e3fec | 272 | // else if ((channel.compare("C") == 0) || (channel.compare("c") == 0)) |
| mehatfie | 2:3e7baa3e3fec | 273 | // setMotor(BridgeDriver::MOTOR_C); |
| mehatfie | 2:3e7baa3e3fec | 274 | // else if ((channel.compare("D") == 0) || (channel.compare("d") == 0)) |
| mehatfie | 2:3e7baa3e3fec | 275 | // setMotor(BridgeDriver::MOTOR_D); |
| mehatfie | 2:3e7baa3e3fec | 276 | // } |
| mehatfie | 2:3e7baa3e3fec | 277 | // |
| mehatfie | 2:3e7baa3e3fec | 278 | // //if the first word is not "device" it means that it's trying to perform a function to a specific Motor |
| mehatfie | 2:3e7baa3e3fec | 279 | // else{ |
| mehatfie | 2:3e7baa3e3fec | 280 | // //Order of Line: Local_Name, Function_Name, Param1, Param2, Param3,....... |
| mehatfie | 2:3e7baa3e3fec | 281 | // //char localname[15] = lineData.word[0]; //just for the sake of following the variable easily and understanding |
| mehatfie | 2:3e7baa3e3fec | 282 | // string func = lineData.word[1]; |
| mehatfie | 2:3e7baa3e3fec | 283 | // |
| mehatfie | 2:3e7baa3e3fec | 284 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 285 | // /*** <Func: enableBrake> ***/ |
| mehatfie | 2:3e7baa3e3fec | 286 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 287 | // if (func.compare("enableBrake") == 0){ |
| mehatfie | 2:3e7baa3e3fec | 288 | // |
| mehatfie | 2:3e7baa3e3fec | 289 | // if (lineData.numWords != 4){ |
| mehatfie | 2:3e7baa3e3fec | 290 | // //Error Check, incorrect number of parameter, error out |
| mehatfie | 2:3e7baa3e3fec | 291 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 292 | // } |
| mehatfie | 2:3e7baa3e3fec | 293 | // |
| mehatfie | 2:3e7baa3e3fec | 294 | // //Initialize and Convert Parameters |
| mehatfie | 2:3e7baa3e3fec | 295 | // string enable = lineData.word[2]; |
| mehatfie | 2:3e7baa3e3fec | 296 | // int enableValue = 0; |
| mehatfie | 2:3e7baa3e3fec | 297 | // sscanf(enable.c_str(), "%d", &enableValue); |
| mehatfie | 2:3e7baa3e3fec | 298 | // |
| mehatfie | 2:3e7baa3e3fec | 299 | // bridges.enableBraking(getMotor(), enableValue); |
| mehatfie | 2:3e7baa3e3fec | 300 | // } |
| mehatfie | 2:3e7baa3e3fec | 301 | // |
| mehatfie | 2:3e7baa3e3fec | 302 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 303 | // /*** <Func: forceBrake> ***/ |
| mehatfie | 2:3e7baa3e3fec | 304 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 305 | // else if (func.compare("forceBrake") == 0){ |
| mehatfie | 2:3e7baa3e3fec | 306 | // |
| mehatfie | 2:3e7baa3e3fec | 307 | // if (lineData.numWords != 3){ |
| mehatfie | 2:3e7baa3e3fec | 308 | // //Error Check, incorrect number of parameter, error out |
| mehatfie | 2:3e7baa3e3fec | 309 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 310 | // } |
| mehatfie | 2:3e7baa3e3fec | 311 | // |
| mehatfie | 2:3e7baa3e3fec | 312 | // bridges.forceBrake(getMotor()); |
| mehatfie | 2:3e7baa3e3fec | 313 | // } |
| mehatfie | 2:3e7baa3e3fec | 314 | // |
| mehatfie | 2:3e7baa3e3fec | 315 | // |
| mehatfie | 2:3e7baa3e3fec | 316 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 317 | // /*** <Func: drive> ***/ |
| mehatfie | 2:3e7baa3e3fec | 318 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 319 | // else if (func.compare("drive") == 0){ |
| mehatfie | 2:3e7baa3e3fec | 320 | // |
| mehatfie | 2:3e7baa3e3fec | 321 | // /*lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 322 | // lcd.printf("wrd2: %s", lineData.word[1]); |
| mehatfie | 2:3e7baa3e3fec | 323 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 324 | // lcd.printf("TEST2 "); |
| mehatfie | 2:3e7baa3e3fec | 325 | // wait(1);*/ |
| mehatfie | 2:3e7baa3e3fec | 326 | // |
| mehatfie | 2:3e7baa3e3fec | 327 | // if (lineData.numWords != 4){ |
| mehatfie | 2:3e7baa3e3fec | 328 | // //Error Check, incorrect number of parameter, error out |
| mehatfie | 2:3e7baa3e3fec | 329 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 330 | // } |
| mehatfie | 2:3e7baa3e3fec | 331 | // |
| mehatfie | 2:3e7baa3e3fec | 332 | // //Initialize Parameters |
| mehatfie | 2:3e7baa3e3fec | 333 | // string speed = lineData.word[2]; |
| mehatfie | 2:3e7baa3e3fec | 334 | // string dir = lineData.word[3]; |
| mehatfie | 2:3e7baa3e3fec | 335 | // |
| mehatfie | 2:3e7baa3e3fec | 336 | // //Initialize Convertion Variables if needed |
| mehatfie | 2:3e7baa3e3fec | 337 | // float speedValue; |
| mehatfie | 2:3e7baa3e3fec | 338 | // int dirValue = 0; |
| mehatfie | 2:3e7baa3e3fec | 339 | // |
| mehatfie | 2:3e7baa3e3fec | 340 | // //Convert string to usable values |
| mehatfie | 2:3e7baa3e3fec | 341 | // //NOTE both atof and atoi functions return 0 if no valid conversion could be performed |
| mehatfie | 2:3e7baa3e3fec | 342 | // sscanf(speed.c_str(), "%f", &speedValue); |
| mehatfie | 2:3e7baa3e3fec | 343 | // speedValue = speedValue / 100; |
| mehatfie | 2:3e7baa3e3fec | 344 | // |
| mehatfie | 2:3e7baa3e3fec | 345 | // if (speedValue <= 0) |
| mehatfie | 2:3e7baa3e3fec | 346 | // return 0; //Error Out because a value gives no functionality or is wrong |
| mehatfie | 2:3e7baa3e3fec | 347 | // |
| mehatfie | 2:3e7baa3e3fec | 348 | // if (dir.compare("CC") == 0 || dir.compare("cc") == 0) |
| mehatfie | 2:3e7baa3e3fec | 349 | // dirValue = -1; //Turn Clockwise |
| mehatfie | 2:3e7baa3e3fec | 350 | // else if (dir.compare("C") == 0 || dir.compare("c") == 0) |
| mehatfie | 2:3e7baa3e3fec | 351 | // dirValue = 1; //Turn CounterClockwise |
| mehatfie | 2:3e7baa3e3fec | 352 | // else |
| mehatfie | 2:3e7baa3e3fec | 353 | // return 0; //Error Out since the parameter is incorrect |
| mehatfie | 2:3e7baa3e3fec | 354 | // |
| mehatfie | 2:3e7baa3e3fec | 355 | // bridges.drive(getMotor(), dirValue, speedValue); //Turn on the Motor |
| mehatfie | 2:3e7baa3e3fec | 356 | // |
| mehatfie | 2:3e7baa3e3fec | 357 | // } |
| mehatfie | 2:3e7baa3e3fec | 358 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 359 | // /**** <Func: off> ****/ |
| mehatfie | 2:3e7baa3e3fec | 360 | // /******************************************************************************/ |
| mehatfie | 2:3e7baa3e3fec | 361 | // else if (func.compare("off") == 0){ |
| mehatfie | 2:3e7baa3e3fec | 362 | // |
| mehatfie | 2:3e7baa3e3fec | 363 | // /*lcd.setAddress(0,2); |
| mehatfie | 2:3e7baa3e3fec | 364 | // lcd.printf("wrd2: %s", lineData.word[1]); |
| mehatfie | 2:3e7baa3e3fec | 365 | // lcd.setAddress(0,3); |
| mehatfie | 2:3e7baa3e3fec | 366 | // lcd.printf("TEST2 "); |
| mehatfie | 2:3e7baa3e3fec | 367 | // wait(1);*/ |
| mehatfie | 2:3e7baa3e3fec | 368 | // |
| mehatfie | 2:3e7baa3e3fec | 369 | // if (lineData.numWords != 2){ |
| mehatfie | 2:3e7baa3e3fec | 370 | // //Error Check, incorrect number of parameter, error out |
| mehatfie | 2:3e7baa3e3fec | 371 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 372 | // } |
| mehatfie | 2:3e7baa3e3fec | 373 | // |
| mehatfie | 2:3e7baa3e3fec | 374 | // bridges.drive(getMotor(), 0, 0); //Turn off the Motor |
| mehatfie | 2:3e7baa3e3fec | 375 | // } |
| mehatfie | 2:3e7baa3e3fec | 376 | // |
| mehatfie | 2:3e7baa3e3fec | 377 | // else { |
| mehatfie | 2:3e7baa3e3fec | 378 | // return 0; |
| mehatfie | 2:3e7baa3e3fec | 379 | // |
| mehatfie | 2:3e7baa3e3fec | 380 | // } |
| mehatfie | 2:3e7baa3e3fec | 381 | // } |
| mehatfie | 2:3e7baa3e3fec | 382 | // |
| mehatfie | 2:3e7baa3e3fec | 383 | // return 1; |
| mehatfie | 2:3e7baa3e3fec | 384 | //} |
| mehatfie | 2:3e7baa3e3fec | 385 | // |
| mehatfie | 2:3e7baa3e3fec | 386 | // |
| mehatfie | 2:3e7baa3e3fec | 387 | // |
| mehatfie | 2:3e7baa3e3fec | 388 | // |
| mehatfie | 2:3e7baa3e3fec | 389 | // |
| mehatfie | 2:3e7baa3e3fec | 390 | // |
| mehatfie | 2:3e7baa3e3fec | 391 | // |
| mehatfie | 2:3e7baa3e3fec | 392 | // |
| mehatfie | 2:3e7baa3e3fec | 393 | // |
| mehatfie | 2:3e7baa3e3fec | 394 | // |
| mehatfie | 2:3e7baa3e3fec | 395 | // |
| mehatfie | 2:3e7baa3e3fec | 396 | // |
| mehatfie | 2:3e7baa3e3fec | 397 | // |
| mehatfie | 2:3e7baa3e3fec | 398 | // |
| mehatfie | 2:3e7baa3e3fec | 399 | // |
| mehatfie | 2:3e7baa3e3fec | 400 | // |
| mehatfie | 2:3e7baa3e3fec | 401 | // |
| mehatfie | 2:3e7baa3e3fec | 402 | // |
| mehatfie | 2:3e7baa3e3fec | 403 | // |
| mehatfie | 2:3e7baa3e3fec | 404 | // |
| mehatfie | 2:3e7baa3e3fec | 405 | // |
| mehatfie | 2:3e7baa3e3fec | 406 | // |