Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL2

Dependencies:   mbed

Committer:
mfwic
Date:
Sun Jan 20 16:56:52 2019 +0000
Revision:
25:8bcc8bea0e31
Parent:
21:fe0ea1860c9f
Child:
30:d8721a46ee03
Added multiple LUTs

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mfwic 0:44a3005d4f20 1 //-------------------------------------------------------------------------------
mfwic 0:44a3005d4f20 2 //
mfwic 0:44a3005d4f20 3 // Treehouse Inc.
mfwic 0:44a3005d4f20 4 // Colorado Springs, Colorado
mfwic 0:44a3005d4f20 5 //
mfwic 0:44a3005d4f20 6 // Copyright (c) 2016 by Treehouse Designs Inc.
mfwic 0:44a3005d4f20 7 //
mfwic 0:44a3005d4f20 8 // This code is the property of Treehouse, Inc. (Treehouse)
mfwic 0:44a3005d4f20 9 // and may not be redistributed in any form without prior written
mfwic 0:44a3005d4f20 10 // permission of the copyright holder, Treehouse.
mfwic 0:44a3005d4f20 11 //
mfwic 0:44a3005d4f20 12 // The above copyright notice and this permission notice shall be included in
mfwic 0:44a3005d4f20 13 // all copies or substantial portions of the Software.
mfwic 0:44a3005d4f20 14 //
mfwic 0:44a3005d4f20 15 //
mfwic 0:44a3005d4f20 16 //-------------------------------------------------------------------------------
mfwic 0:44a3005d4f20 17 //
mfwic 0:44a3005d4f20 18 // REVISION HISTORY:
mfwic 0:44a3005d4f20 19 //
mfwic 0:44a3005d4f20 20 // $Author: $
mfwic 0:44a3005d4f20 21 // $Rev: $
mfwic 0:44a3005d4f20 22 // $Date: $
mfwic 0:44a3005d4f20 23 // $URL: $
mfwic 0:44a3005d4f20 24 //
mfwic 0:44a3005d4f20 25 //-------------------------------------------------------------------------------
mfwic 0:44a3005d4f20 26
mfwic 0:44a3005d4f20 27 #include "mbed.h"
mfwic 0:44a3005d4f20 28 #include "string.h"
mfwic 0:44a3005d4f20 29 #include "stdio.h"
mfwic 0:44a3005d4f20 30 #include "stdlib.h"
mfwic 0:44a3005d4f20 31 #include "ctype.h"
mfwic 0:44a3005d4f20 32 #include "serial.h"
mfwic 0:44a3005d4f20 33 #include "globals.h"
mfwic 0:44a3005d4f20 34 #include "math.h"
mfwic 0:44a3005d4f20 35 #include "parameters.h"
mfwic 1:9f8583ba2431 36 #include "all_io.h"
mfwic 1:9f8583ba2431 37 //#include "calibrate.h"
mfwic 1:9f8583ba2431 38 #include "boards.h"
mfwic 1:9f8583ba2431 39 #include "menu.h"
mfwic 8:d3d7dca419b3 40 #include "command.h"
mfwic 0:44a3005d4f20 41
mfwic 21:fe0ea1860c9f 42 unsigned int boardsActive = ALLON;
mfwic 21:fe0ea1860c9f 43 unsigned int boardMults = 32;
mfwic 11:01dcfb29fbc4 44 unsigned int commandData;
mfwic 6:39442d493098 45 extern unsigned short my12;
mfwic 0:44a3005d4f20 46
mfwic 0:44a3005d4f20 47 /************* FILE SCOPE VARIABLES ************************/
mfwic 0:44a3005d4f20 48 char setvalue = FALSE;
mfwic 0:44a3005d4f20 49 int endOfCommand = 0;
mfwic 0:44a3005d4f20 50 int commandError = 0;
mfwic 0:44a3005d4f20 51 int menuLevel = LEVEL_MAIN;
mfwic 0:44a3005d4f20 52 int readback = 0;
mfwic 0:44a3005d4f20 53
mfwic 0:44a3005d4f20 54 /************************************************************
mfwic 0:44a3005d4f20 55 * Routine: getDelimiter
mfwic 0:44a3005d4f20 56 * Input: none
mfwic 0:44a3005d4f20 57 * Output: none
mfwic 0:44a3005d4f20 58 * Description:
mfwic 0:44a3005d4f20 59 * searches for a delimiter and moves the buffer location
mfwic 0:44a3005d4f20 60 * to be just past it
mfwic 0:44a3005d4f20 61 *
mfwic 0:44a3005d4f20 62 **************************************************************/
mfwic 0:44a3005d4f20 63 void getDelimiter(void)
mfwic 0:44a3005d4f20 64 {
mfwic 0:44a3005d4f20 65 ++bufloc;
mfwic 0:44a3005d4f20 66
mfwic 0:44a3005d4f20 67 while ((rxbuf[bufloc] != ' ') &&
mfwic 0:44a3005d4f20 68 (rxbuf[bufloc] != ',') &&
mfwic 0:44a3005d4f20 69 (rxbuf[bufloc] != '=') &&
mfwic 0:44a3005d4f20 70 (rxbuf[bufloc] != 0 ))
mfwic 0:44a3005d4f20 71 {
mfwic 0:44a3005d4f20 72 bufloc++;
mfwic 0:44a3005d4f20 73 }
mfwic 0:44a3005d4f20 74 }
mfwic 0:44a3005d4f20 75
mfwic 0:44a3005d4f20 76 /************************************************************
mfwic 0:44a3005d4f20 77 * Routine: gethex
mfwic 0:44a3005d4f20 78 * Input: hex character
mfwic 0:44a3005d4f20 79 * Returns: hex integer
mfwic 0:44a3005d4f20 80 * Description:
mfwic 0:44a3005d4f20 81 * Converts a hex character to a value
mfwic 0:44a3005d4f20 82 **************************************************************/
mfwic 0:44a3005d4f20 83 char gethex(char val)
mfwic 0:44a3005d4f20 84 {
mfwic 0:44a3005d4f20 85 int retval;
mfwic 0:44a3005d4f20 86 switch(val)
mfwic 0:44a3005d4f20 87 {
mfwic 0:44a3005d4f20 88 case '0':
mfwic 0:44a3005d4f20 89 retval = 0;
mfwic 0:44a3005d4f20 90 break;
mfwic 0:44a3005d4f20 91 case '1':
mfwic 0:44a3005d4f20 92 retval = 1;
mfwic 0:44a3005d4f20 93 break;
mfwic 0:44a3005d4f20 94 case '2':
mfwic 0:44a3005d4f20 95 retval = 2;
mfwic 0:44a3005d4f20 96 break;
mfwic 0:44a3005d4f20 97 case '3':
mfwic 0:44a3005d4f20 98 retval = 3;
mfwic 0:44a3005d4f20 99 break;
mfwic 0:44a3005d4f20 100 case '4':
mfwic 0:44a3005d4f20 101 retval = 4;
mfwic 0:44a3005d4f20 102 break;
mfwic 0:44a3005d4f20 103 case '5':
mfwic 0:44a3005d4f20 104 retval = 5;
mfwic 0:44a3005d4f20 105 break;
mfwic 0:44a3005d4f20 106 case '6':
mfwic 0:44a3005d4f20 107 retval = 6;
mfwic 0:44a3005d4f20 108 break;
mfwic 0:44a3005d4f20 109 case '7':
mfwic 0:44a3005d4f20 110 retval = 7;
mfwic 0:44a3005d4f20 111 break;
mfwic 0:44a3005d4f20 112 case '8':
mfwic 0:44a3005d4f20 113 retval = 8;
mfwic 0:44a3005d4f20 114 break;
mfwic 0:44a3005d4f20 115 case '9':
mfwic 0:44a3005d4f20 116 retval = 9;
mfwic 0:44a3005d4f20 117 break;
mfwic 0:44a3005d4f20 118 case 'A':
mfwic 0:44a3005d4f20 119 retval = 10;
mfwic 0:44a3005d4f20 120 break;
mfwic 0:44a3005d4f20 121 case 'B':
mfwic 0:44a3005d4f20 122 retval = 11;
mfwic 0:44a3005d4f20 123 break;
mfwic 0:44a3005d4f20 124 case 'C':
mfwic 0:44a3005d4f20 125 retval = 12;
mfwic 0:44a3005d4f20 126 break;
mfwic 0:44a3005d4f20 127 case 'D':
mfwic 0:44a3005d4f20 128 retval = 13;
mfwic 0:44a3005d4f20 129 break;
mfwic 0:44a3005d4f20 130 case 'E':
mfwic 0:44a3005d4f20 131 retval = 14;
mfwic 0:44a3005d4f20 132 break;
mfwic 0:44a3005d4f20 133 case 'F':
mfwic 0:44a3005d4f20 134 retval = 15;
mfwic 0:44a3005d4f20 135 break;
mfwic 0:44a3005d4f20 136 default:
mfwic 0:44a3005d4f20 137 retval = 0;
mfwic 0:44a3005d4f20 138 break;
mfwic 0:44a3005d4f20 139
mfwic 0:44a3005d4f20 140 }
mfwic 0:44a3005d4f20 141 return retval;
mfwic 0:44a3005d4f20 142 }
mfwic 0:44a3005d4f20 143
mfwic 0:44a3005d4f20 144 /************************************************************
mfwic 0:44a3005d4f20 145 * Routine: showfval
mfwic 0:44a3005d4f20 146 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 147 * value (float value to display)
mfwic 0:44a3005d4f20 148 * Output: none
mfwic 0:44a3005d4f20 149 * Description:
mfwic 0:44a3005d4f20 150 * Sends a floating point number (value) over the serial port
mfwic 0:44a3005d4f20 151 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 152 *
mfwic 0:44a3005d4f20 153 **************************************************************/
mfwic 0:44a3005d4f20 154 void showfval(char setval,float value)
mfwic 0:44a3005d4f20 155 {
mfwic 0:44a3005d4f20 156 if(!setval)
mfwic 0:44a3005d4f20 157 {
mfwic 1:9f8583ba2431 158 sprintf(strbuf," %4.9f",value);
mfwic 1:9f8583ba2431 159 sendSerial(strbuf);
mfwic 0:44a3005d4f20 160 }
mfwic 0:44a3005d4f20 161 }
mfwic 0:44a3005d4f20 162
mfwic 0:44a3005d4f20 163 /************************************************************
mfwic 0:44a3005d4f20 164 * Routine: showival
mfwic 0:44a3005d4f20 165 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 166 * value (integer value to display)
mfwic 0:44a3005d4f20 167 * Output: none
mfwic 0:44a3005d4f20 168 * Description:
mfwic 0:44a3005d4f20 169 * Sends an integer (value) over the serial port
mfwic 0:44a3005d4f20 170 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 171 *
mfwic 0:44a3005d4f20 172 **************************************************************/
mfwic 0:44a3005d4f20 173 void showival(char setval, int value)
mfwic 0:44a3005d4f20 174 {
mfwic 0:44a3005d4f20 175 if(!setval)
mfwic 0:44a3005d4f20 176 {
mfwic 1:9f8583ba2431 177 sprintf(strbuf," %i",value);
mfwic 1:9f8583ba2431 178 sendSerial(strbuf);
mfwic 0:44a3005d4f20 179 }
mfwic 0:44a3005d4f20 180 }
mfwic 0:44a3005d4f20 181 /************************************************************
mfwic 0:44a3005d4f20 182 * Routine: showcval
mfwic 0:44a3005d4f20 183 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 184 * value (character to display)
mfwic 0:44a3005d4f20 185 * Output: none
mfwic 0:44a3005d4f20 186 * Description:
mfwic 0:44a3005d4f20 187 * Sends a character over the serial port
mfwic 0:44a3005d4f20 188 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 189 *
mfwic 0:44a3005d4f20 190 **************************************************************/
mfwic 0:44a3005d4f20 191 void showcval(char setval, int value)
mfwic 0:44a3005d4f20 192 {
mfwic 0:44a3005d4f20 193 if(!setval)
mfwic 0:44a3005d4f20 194 {
mfwic 1:9f8583ba2431 195 sprintf(strbuf," %c",(char)value);
mfwic 1:9f8583ba2431 196 sendSerial(strbuf);
mfwic 0:44a3005d4f20 197 }
mfwic 0:44a3005d4f20 198 }
mfwic 0:44a3005d4f20 199
mfwic 0:44a3005d4f20 200 /************************************************************
mfwic 0:44a3005d4f20 201 * Routine: showlval
mfwic 0:44a3005d4f20 202 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 203 * value (integer value to display)
mfwic 0:44a3005d4f20 204 * Output: none
mfwic 0:44a3005d4f20 205 * Description:
mfwic 0:44a3005d4f20 206 * Sends an long (value) over the serial port
mfwic 0:44a3005d4f20 207 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 208 *
mfwic 0:44a3005d4f20 209 **************************************************************/
mfwic 0:44a3005d4f20 210 void showlval(char setval, long value)
mfwic 0:44a3005d4f20 211 {
mfwic 0:44a3005d4f20 212 if(!setval)
mfwic 0:44a3005d4f20 213 {
mfwic 1:9f8583ba2431 214 sprintf(strbuf," %ld",value);
mfwic 1:9f8583ba2431 215 sendSerial(strbuf);
mfwic 0:44a3005d4f20 216 }
mfwic 0:44a3005d4f20 217 }
mfwic 0:44a3005d4f20 218
mfwic 0:44a3005d4f20 219 /************************************************************
mfwic 0:44a3005d4f20 220 * Routine: showuival
mfwic 0:44a3005d4f20 221 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 222 * value (integer value to display)
mfwic 0:44a3005d4f20 223 * Output: none
mfwic 0:44a3005d4f20 224 * Description:
mfwic 0:44a3005d4f20 225 * Sends an unsigned int (value) over the serial port
mfwic 0:44a3005d4f20 226 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 227 *
mfwic 0:44a3005d4f20 228 **************************************************************/
mfwic 0:44a3005d4f20 229 void showuival(char setval, unsigned int value)
mfwic 0:44a3005d4f20 230 {
mfwic 0:44a3005d4f20 231 if(!setval)
mfwic 0:44a3005d4f20 232 {
mfwic 1:9f8583ba2431 233 sprintf(strbuf," %u",value);
mfwic 1:9f8583ba2431 234 sendSerial(strbuf);
mfwic 0:44a3005d4f20 235 }
mfwic 0:44a3005d4f20 236 }
mfwic 0:44a3005d4f20 237
mfwic 0:44a3005d4f20 238 /************************************************************
mfwic 0:44a3005d4f20 239 * Routine: showhval
mfwic 0:44a3005d4f20 240 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 241 * value (hex integeger value to display)
mfwic 0:44a3005d4f20 242 * Output: none
mfwic 0:44a3005d4f20 243 * Description:
mfwic 0:44a3005d4f20 244 * Sends an integer (value) in hex over the serial port
mfwic 0:44a3005d4f20 245 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 246 *
mfwic 0:44a3005d4f20 247 **************************************************************/
mfwic 0:44a3005d4f20 248 void showhval(char setval, int value)
mfwic 0:44a3005d4f20 249 {
mfwic 0:44a3005d4f20 250 if(!setval)
mfwic 0:44a3005d4f20 251 {
mfwic 0:44a3005d4f20 252 if(serialStatus.computer)
mfwic 1:9f8583ba2431 253 sprintf(strbuf," %u",(unsigned int)value);
mfwic 0:44a3005d4f20 254 else
mfwic 1:9f8583ba2431 255 sprintf(strbuf," 0x%04x",value);
mfwic 1:9f8583ba2431 256 sendSerial(strbuf);
mfwic 0:44a3005d4f20 257 }
mfwic 0:44a3005d4f20 258 }
mfwic 0:44a3005d4f20 259
mfwic 0:44a3005d4f20 260
mfwic 0:44a3005d4f20 261 /************************************************************
mfwic 0:44a3005d4f20 262 * Routine: getival
mfwic 0:44a3005d4f20 263 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 264 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 265 * Description:
mfwic 0:44a3005d4f20 266 * Gets an integer from the serial port connection.
mfwic 0:44a3005d4f20 267 *
mfwic 0:44a3005d4f20 268 **************************************************************/
mfwic 0:44a3005d4f20 269 int getival(char setval)
mfwic 0:44a3005d4f20 270 {
mfwic 0:44a3005d4f20 271 if (setval)
mfwic 0:44a3005d4f20 272 {
mfwic 0:44a3005d4f20 273 return atoi(&rxbuf[++bufloc]);
mfwic 0:44a3005d4f20 274 }
mfwic 0:44a3005d4f20 275
mfwic 0:44a3005d4f20 276 return 0;
mfwic 0:44a3005d4f20 277 }
mfwic 0:44a3005d4f20 278
mfwic 0:44a3005d4f20 279 /************************************************************
mfwic 0:44a3005d4f20 280 * Routine: getcval
mfwic 0:44a3005d4f20 281 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 282 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 283 * Description:
mfwic 0:44a3005d4f20 284 * Gets an character from the serial port connection.
mfwic 0:44a3005d4f20 285 *
mfwic 0:44a3005d4f20 286 **************************************************************/
mfwic 0:44a3005d4f20 287 int getcval(char setval)
mfwic 0:44a3005d4f20 288 {
mfwic 0:44a3005d4f20 289 if(setval)
mfwic 0:44a3005d4f20 290 {
mfwic 0:44a3005d4f20 291 // skip one space
mfwic 0:44a3005d4f20 292 ++bufloc;
mfwic 0:44a3005d4f20 293 // skip spaces and the equals sign
mfwic 0:44a3005d4f20 294 while((rxbuf[bufloc] == ' ') || (rxbuf[bufloc] == '='))
mfwic 0:44a3005d4f20 295 bufloc++;
mfwic 0:44a3005d4f20 296 return rxbuf[bufloc++];
mfwic 0:44a3005d4f20 297 }
mfwic 0:44a3005d4f20 298 else
mfwic 0:44a3005d4f20 299 return 0;
mfwic 0:44a3005d4f20 300
mfwic 0:44a3005d4f20 301 }
mfwic 0:44a3005d4f20 302 /************************************************************
mfwic 0:44a3005d4f20 303 * Routine: getlval
mfwic 0:44a3005d4f20 304 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 305 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 306 * Description:
mfwic 0:44a3005d4f20 307 * Gets an long from the serial port connection.
mfwic 0:44a3005d4f20 308 *
mfwic 0:44a3005d4f20 309 **************************************************************/
mfwic 0:44a3005d4f20 310 long getlval(char setval)
mfwic 0:44a3005d4f20 311 {
mfwic 0:44a3005d4f20 312 if(setval)
mfwic 0:44a3005d4f20 313 return atol(&rxbuf[++bufloc]);
mfwic 0:44a3005d4f20 314 else
mfwic 0:44a3005d4f20 315 return 0;
mfwic 0:44a3005d4f20 316
mfwic 0:44a3005d4f20 317 }
mfwic 0:44a3005d4f20 318
mfwic 0:44a3005d4f20 319 /************************************************************
mfwic 0:44a3005d4f20 320 * Routine: getfval
mfwic 0:44a3005d4f20 321 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 322 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 323 * Description:
mfwic 0:44a3005d4f20 324 * Gets an float from the serial port connection.
mfwic 0:44a3005d4f20 325 *
mfwic 0:44a3005d4f20 326 **************************************************************/
mfwic 0:44a3005d4f20 327 float getfval(char setval)
mfwic 0:44a3005d4f20 328 {
mfwic 0:44a3005d4f20 329 if(setval)
mfwic 0:44a3005d4f20 330 return atof(&rxbuf[++bufloc]);
mfwic 0:44a3005d4f20 331 else
mfwic 0:44a3005d4f20 332 return 0;
mfwic 0:44a3005d4f20 333 }
mfwic 0:44a3005d4f20 334
mfwic 0:44a3005d4f20 335 /************************************************************
mfwic 0:44a3005d4f20 336 * Routine: validateEntry
mfwic 0:44a3005d4f20 337 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 338 * limlo -- low limit
mfwic 0:44a3005d4f20 339 * limhi -- high limit
mfwic 0:44a3005d4f20 340 * address -- address in eeprom to use
mfwic 0:44a3005d4f20 341 * Returns: 0 if entry validates and is written
mfwic 0:44a3005d4f20 342 * 1 if entry fails
mfwic 0:44a3005d4f20 343 * Description:
mfwic 0:44a3005d4f20 344 * Gets or sets a value in eeprom at the address but only
mfwic 0:44a3005d4f20 345 * if it is between the limits will it write the value to
mfwic 0:44a3005d4f20 346 * eeprom
mfwic 0:44a3005d4f20 347 *
mfwic 0:44a3005d4f20 348 **************************************************************/
mfwic 0:44a3005d4f20 349 int validateEntry(char setvalue, float limlo, float limhi, float *address)
mfwic 0:44a3005d4f20 350 {
mfwic 0:44a3005d4f20 351 float val;
mfwic 0:44a3005d4f20 352
mfwic 0:44a3005d4f20 353 if (setvalue)
mfwic 0:44a3005d4f20 354 {
mfwic 0:44a3005d4f20 355 val = getfval(SET);
mfwic 0:44a3005d4f20 356
mfwic 0:44a3005d4f20 357 if ((val >= limlo) && (val <= limhi))
mfwic 0:44a3005d4f20 358 {
mfwic 0:44a3005d4f20 359 *address = val;
mfwic 0:44a3005d4f20 360 }
mfwic 0:44a3005d4f20 361 else
mfwic 0:44a3005d4f20 362 {
mfwic 0:44a3005d4f20 363 showRangeError(0, 0, val);
mfwic 0:44a3005d4f20 364 return 0;
mfwic 0:44a3005d4f20 365 }
mfwic 0:44a3005d4f20 366 }
mfwic 0:44a3005d4f20 367 else
mfwic 0:44a3005d4f20 368 {
mfwic 0:44a3005d4f20 369 val = *address;
mfwic 1:9f8583ba2431 370 sprintf(strbuf, " %4.3f", val);
mfwic 1:9f8583ba2431 371 sendSerial(strbuf);
mfwic 0:44a3005d4f20 372 }
mfwic 0:44a3005d4f20 373
mfwic 0:44a3005d4f20 374 return 1;
mfwic 0:44a3005d4f20 375 }
mfwic 0:44a3005d4f20 376
mfwic 0:44a3005d4f20 377
mfwic 0:44a3005d4f20 378 /************************************************************
mfwic 0:44a3005d4f20 379 * Routine: validateEntry
mfwic 0:44a3005d4f20 380 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 381 * limlo -- low limit
mfwic 0:44a3005d4f20 382 * limhi -- high limit
mfwic 0:44a3005d4f20 383 * address -- address in eeprom to use
mfwic 0:44a3005d4f20 384 *
mfwic 0:44a3005d4f20 385 * Returns: FALSE if entry fails
mfwic 0:44a3005d4f20 386 * TRUE if entry validates and is written
mfwic 0:44a3005d4f20 387 *
mfwic 0:44a3005d4f20 388 * Description:
mfwic 0:44a3005d4f20 389 * Gets or sets a value in eeprom at the address but only
mfwic 0:44a3005d4f20 390 * if it is between the limits will it write the value to
mfwic 0:44a3005d4f20 391 * eeprom
mfwic 0:44a3005d4f20 392 *
mfwic 0:44a3005d4f20 393 **************************************************************/
mfwic 0:44a3005d4f20 394 int validateInt(char setvalue, int limlo, int limhi, int *address)
mfwic 0:44a3005d4f20 395 {
mfwic 0:44a3005d4f20 396 float val;
mfwic 0:44a3005d4f20 397
mfwic 0:44a3005d4f20 398 if (setvalue)
mfwic 0:44a3005d4f20 399 {
mfwic 0:44a3005d4f20 400 val = getfval(SET);
mfwic 0:44a3005d4f20 401
mfwic 0:44a3005d4f20 402 if ((val >= limlo) && (val <= limhi))
mfwic 0:44a3005d4f20 403 {
mfwic 0:44a3005d4f20 404 *address = val;
mfwic 0:44a3005d4f20 405 }
mfwic 0:44a3005d4f20 406 else
mfwic 0:44a3005d4f20 407 {
mfwic 0:44a3005d4f20 408 showRangeError(1, val, 0);
mfwic 0:44a3005d4f20 409 return FALSE;
mfwic 0:44a3005d4f20 410 }
mfwic 0:44a3005d4f20 411 }
mfwic 0:44a3005d4f20 412 else
mfwic 0:44a3005d4f20 413 {
mfwic 0:44a3005d4f20 414 val = *address;
mfwic 1:9f8583ba2431 415 sprintf(strbuf, " %4.0f", val);
mfwic 1:9f8583ba2431 416 sendSerial(strbuf);
mfwic 0:44a3005d4f20 417 }
mfwic 0:44a3005d4f20 418
mfwic 0:44a3005d4f20 419 return TRUE;
mfwic 0:44a3005d4f20 420 }
mfwic 0:44a3005d4f20 421
mfwic 0:44a3005d4f20 422
mfwic 0:44a3005d4f20 423 /************************************************************
mfwic 0:44a3005d4f20 424 * Routine: parseCommand
mfwic 0:44a3005d4f20 425 * Input: setvalue (GET or SET), command buffer
mfwic 0:44a3005d4f20 426 * Returns: none
mfwic 0:44a3005d4f20 427 * Description:
mfwic 0:44a3005d4f20 428 * parses a command and gets the commandstring
mfwic 0:44a3005d4f20 429 **************************************************************/
mfwic 0:44a3005d4f20 430 void parseCommand(char setvalue, char *commandString)
mfwic 0:44a3005d4f20 431 {
mfwic 0:44a3005d4f20 432 int i, endofc;
mfwic 0:44a3005d4f20 433 char store;
mfwic 0:44a3005d4f20 434
mfwic 0:44a3005d4f20 435 // Ignore any white space and the optional ';' character before the start of
mfwic 0:44a3005d4f20 436 // the command string (any ']' character is from the last command so skip that,
mfwic 0:44a3005d4f20 437 // too)
mfwic 0:44a3005d4f20 438 while ((isspace(rxbuf[bufloc])) || (rxbuf[bufloc] == ';') || (rxbuf[bufloc] == ']'))
mfwic 0:44a3005d4f20 439 {
mfwic 0:44a3005d4f20 440 bufloc++;
mfwic 0:44a3005d4f20 441 if ((rxbuf[bufloc] == 0x0D) || (rxbuf[bufloc] == 0)) break;
mfwic 0:44a3005d4f20 442 }
mfwic 0:44a3005d4f20 443
mfwic 0:44a3005d4f20 444 if (setvalue)
mfwic 0:44a3005d4f20 445 {
mfwic 0:44a3005d4f20 446 // We need a value for SET so hitting the end is a problem
mfwic 0:44a3005d4f20 447 if ((rxbuf[bufloc] == 0) || (rxbuf[bufloc] == 0x0D))
mfwic 0:44a3005d4f20 448 {
mfwic 0:44a3005d4f20 449 commandError = 1;
mfwic 0:44a3005d4f20 450 return;
mfwic 0:44a3005d4f20 451 }
mfwic 0:44a3005d4f20 452 }
mfwic 0:44a3005d4f20 453
mfwic 0:44a3005d4f20 454 // Find the end of the command string
mfwic 0:44a3005d4f20 455 endofc = bufloc + 1;
mfwic 0:44a3005d4f20 456
mfwic 0:44a3005d4f20 457 // White space, '[' and '?' all terminate the command string
mfwic 0:44a3005d4f20 458 while ((!isspace(rxbuf[endofc])) && (rxbuf[endofc] != '[') && (rxbuf[endofc] != '?'))
mfwic 0:44a3005d4f20 459 {
mfwic 0:44a3005d4f20 460 endofc++;
mfwic 0:44a3005d4f20 461 // (As does hitting the end of rxbuf!)
mfwic 0:44a3005d4f20 462 if ((rxbuf[endofc] == 0x0D) || (rxbuf[endofc] == 0)) break;
mfwic 0:44a3005d4f20 463 }
mfwic 0:44a3005d4f20 464
mfwic 0:44a3005d4f20 465 // Save the character that marks the end of the command string
mfwic 0:44a3005d4f20 466 store = rxbuf[endofc];
mfwic 0:44a3005d4f20 467
mfwic 1:9f8583ba2431 468 // sprintf(strbuf, "store == %c\r\n", store);
mfwic 1:9f8583ba2431 469 // sendSerial(strbuf);
mfwic 0:44a3005d4f20 470
mfwic 0:44a3005d4f20 471 // Command strings ending in '?' are readbacks
mfwic 0:44a3005d4f20 472 readback = ((store == '?') ? 1 : 0);
mfwic 0:44a3005d4f20 473
mfwic 0:44a3005d4f20 474 // Set end to null character so string can now be copied
mfwic 0:44a3005d4f20 475 rxbuf[endofc] = 0;
mfwic 0:44a3005d4f20 476
mfwic 0:44a3005d4f20 477 // Copy the command string into commandString
mfwic 5:09be5bbb5020 478 char commandStringBuf[80];
mfwic 5:09be5bbb5020 479 char *tok;
mfwic 5:09be5bbb5020 480 strcpy(commandStringBuf, &rxbuf[bufloc]);
mfwic 5:09be5bbb5020 481 if(strstr(commandStringBuf, "=")){
mfwic 5:09be5bbb5020 482 tok = strtok(commandStringBuf, "=");
mfwic 5:09be5bbb5020 483 strcpy(commandString, tok);
mfwic 5:09be5bbb5020 484 tok = strtok(NULL, "=");
mfwic 5:09be5bbb5020 485 commandData = atoi(tok);
mfwic 6:39442d493098 486 //if(DEBUG){
mfwic 6:39442d493098 487 // sprintf(strbuf, "commandStringBuf= %s, commandData= %d", commandStringBuf, commandData);
mfwic 6:39442d493098 488 // sendSerial(strbuf);
mfwic 6:39442d493098 489 //}
mfwic 5:09be5bbb5020 490 }
mfwic 5:09be5bbb5020 491 else{
mfwic 5:09be5bbb5020 492 strcpy(commandString, commandStringBuf);
mfwic 5:09be5bbb5020 493 }
mfwic 0:44a3005d4f20 494
mfwic 0:44a3005d4f20 495 // Convert the command string to all uppercase characters
mfwic 0:44a3005d4f20 496 for (i = 0; i < strlen(commandString); i++)
mfwic 0:44a3005d4f20 497 {
mfwic 0:44a3005d4f20 498 commandString[i] = toupper(commandString[i]);
mfwic 0:44a3005d4f20 499 }
mfwic 0:44a3005d4f20 500
mfwic 0:44a3005d4f20 501 // Replace the character we clobbered in rxbuf
mfwic 0:44a3005d4f20 502 rxbuf[endofc] = store;
mfwic 0:44a3005d4f20 503
mfwic 0:44a3005d4f20 504 // Update bufloc to the end of the command string
mfwic 0:44a3005d4f20 505 bufloc = endofc;
mfwic 11:01dcfb29fbc4 506 }
mfwic 0:44a3005d4f20 507
mfwic 0:44a3005d4f20 508 /************************************************************
mfwic 0:44a3005d4f20 509 * Routine: doCommand
mfwic 0:44a3005d4f20 510 * Input: none
mfwic 0:44a3005d4f20 511 * Returns: none
mfwic 0:44a3005d4f20 512 * Description:
mfwic 0:44a3005d4f20 513 * This is the start of the command string.
mfwic 0:44a3005d4f20 514 **************************************************************/
mfwic 0:44a3005d4f20 515 void doCommand(void)
mfwic 0:44a3005d4f20 516 {
mfwic 6:39442d493098 517 int ival;
mfwic 0:44a3005d4f20 518 unsigned int boardEnables;
mfwic 0:44a3005d4f20 519
mfwic 0:44a3005d4f20 520 char commandString[80] = { 0 };
mfwic 0:44a3005d4f20 521
mfwic 0:44a3005d4f20 522 bufloc = 0;
mfwic 0:44a3005d4f20 523 commandError = 0;
mfwic 0:44a3005d4f20 524
mfwic 0:44a3005d4f20 525 parseCommand(GET, commandString);
mfwic 0:44a3005d4f20 526
mfwic 1:9f8583ba2431 527 if (!strcmp(commandString, "MENU"))
mfwic 1:9f8583ba2431 528 {
mfwic 8:d3d7dca419b3 529 menuRedraw(NO_PROMPT);
mfwic 1:9f8583ba2431 530 }
mfwic 3:d8948c5b2951 531 else if (!strcmp(commandString, "HELP"))
mfwic 3:d8948c5b2951 532 {
mfwic 8:d3d7dca419b3 533 menuRedraw(NO_PROMPT);
mfwic 3:d8948c5b2951 534 }
mfwic 25:8bcc8bea0e31 535 else if (!strcmp(commandString, "MAXB"))
mfwic 25:8bcc8bea0e31 536 // MAXB is used to get/set the max_boards value.
mfwic 25:8bcc8bea0e31 537 // The integer value of max_boards is used to select the appropriate lookup table.
mfwic 25:8bcc8bea0e31 538 {
mfwic 25:8bcc8bea0e31 539 if (readback)
mfwic 25:8bcc8bea0e31 540 {
mfwic 25:8bcc8bea0e31 541 sprintf(strbuf, " %d", max_boards);
mfwic 25:8bcc8bea0e31 542 sendSerial(strbuf);
mfwic 25:8bcc8bea0e31 543 }
mfwic 25:8bcc8bea0e31 544 else if (running == 1)
mfwic 25:8bcc8bea0e31 545 {
mfwic 25:8bcc8bea0e31 546 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 25:8bcc8bea0e31 547 sendSerial(strbuf);
mfwic 25:8bcc8bea0e31 548 }
mfwic 25:8bcc8bea0e31 549 else
mfwic 25:8bcc8bea0e31 550 {
mfwic 25:8bcc8bea0e31 551 max_boards = commandData;
mfwic 25:8bcc8bea0e31 552 }
mfwic 25:8bcc8bea0e31 553 }
mfwic 1:9f8583ba2431 554 else if (!strcmp(commandString, "BRDS"))
mfwic 1:9f8583ba2431 555 // BRDS is used to get/set the wr_out value.
mfwic 5:09be5bbb5020 556 // The integer value of boardsActive is used to change wr_out via setBoardEnables(boardsActive).
mfwic 1:9f8583ba2431 557 // Slots 12 to 0 are activated with the wr_out signals
mfwic 1:9f8583ba2431 558 // wr_out[13] = slots[12:0]
mfwic 0:44a3005d4f20 559 {
mfwic 0:44a3005d4f20 560 if (readback)
mfwic 0:44a3005d4f20 561 {
mfwic 5:09be5bbb5020 562 sprintf(strbuf, " %d", boardsActive);
mfwic 1:9f8583ba2431 563 sendSerial(strbuf);
mfwic 0:44a3005d4f20 564 }
mfwic 12:fd1fd1857628 565 else if (running == 1)
mfwic 12:fd1fd1857628 566 {
mfwic 12:fd1fd1857628 567 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 12:fd1fd1857628 568 sendSerial(strbuf);
mfwic 12:fd1fd1857628 569 }
mfwic 0:44a3005d4f20 570 else
mfwic 0:44a3005d4f20 571 {
mfwic 12:fd1fd1857628 572 boardsActive = commandData;
mfwic 12:fd1fd1857628 573 if(checkRange(boardsActive, 0, 8191) == 1){
mfwic 12:fd1fd1857628 574 wr_out_code = setBoardEnables(boardsActive);
mfwic 12:fd1fd1857628 575 testing = TRUE;
mfwic 1:9f8583ba2431 576 }else{
mfwic 5:09be5bbb5020 577 showRangeError(1, boardsActive, 0.0);
mfwic 1:9f8583ba2431 578 }
mfwic 1:9f8583ba2431 579 }
mfwic 1:9f8583ba2431 580 }
mfwic 1:9f8583ba2431 581 else if (!strcmp(commandString, "MULT"))
mfwic 1:9f8583ba2431 582 // MULT is used to get/set the en_out value.
mfwic 5:09be5bbb5020 583 // The integer value of boardMults is used to change en_out via setBoardWeights(boardMults).
mfwic 1:9f8583ba2431 584 // en_out are binary weighted signals that activate groups of DC-DC converters on the slot cards.
mfwic 1:9f8583ba2431 585 // en_out[6] = {en32, en16, en8, en4, en2, en1}
mfwic 1:9f8583ba2431 586 {
mfwic 1:9f8583ba2431 587 if (readback)
mfwic 1:9f8583ba2431 588 {
mfwic 5:09be5bbb5020 589 sprintf(strbuf, " %d", boardMults);
mfwic 1:9f8583ba2431 590 sendSerial(strbuf);
mfwic 1:9f8583ba2431 591 }
mfwic 12:fd1fd1857628 592 else if (running == 1)
mfwic 12:fd1fd1857628 593 {
mfwic 12:fd1fd1857628 594 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 12:fd1fd1857628 595 sendSerial(strbuf);
mfwic 12:fd1fd1857628 596 }
mfwic 1:9f8583ba2431 597 else
mfwic 1:9f8583ba2431 598 {
mfwic 12:fd1fd1857628 599 boardMults = commandData;
mfwic 5:09be5bbb5020 600 if(checkRange(boardMults, 0, 63) == 1){
mfwic 6:39442d493098 601 en_out_code = setBoardWeights(boardMults);
mfwic 20:5de24e4ae1c5 602 /*unsigned int bmult=boardMults;
mfwic 20:5de24e4ae1c5 603 for(int count=0;count<33;count++){
mfwic 20:5de24e4ae1c5 604 en_out_code = setBoardWeights(bmult++);
mfwic 20:5de24e4ae1c5 605 wait(0.25);
mfwic 20:5de24e4ae1c5 606 }
mfwic 20:5de24e4ae1c5 607 en_out_code = setBoardWeights(boardMults);
mfwic 20:5de24e4ae1c5 608 sprintf(strbuf, " en_out_code=%d\r\n", en_out_code);
mfwic 20:5de24e4ae1c5 609 sendSerial(strbuf);*/
mfwic 12:fd1fd1857628 610 testing = TRUE;
mfwic 1:9f8583ba2431 611 }else{
mfwic 5:09be5bbb5020 612 showRangeError(1, boardMults, 0.0);
mfwic 1:9f8583ba2431 613 }
mfwic 0:44a3005d4f20 614 }
mfwic 0:44a3005d4f20 615 }
mfwic 6:39442d493098 616 else if (!strcmp(commandString, "MY12"))
mfwic 6:39442d493098 617 // MULT is used to get/set the en_out value.
mfwic 6:39442d493098 618 // The integer value of boardMults is used to change en_out via setBoardWeights(boardMults).
mfwic 6:39442d493098 619 // en_out are binary weighted signals that activate groups of DC-DC converters on the slot cards.
mfwic 6:39442d493098 620 // en_out[6] = {en32, en16, en8, en4, en2, en1}
mfwic 6:39442d493098 621 {
mfwic 6:39442d493098 622 //if(DEBUG){
mfwic 6:39442d493098 623 // sprintf(strbuf, "my12=%d commandData=%d\r\n", my12, commandData);
mfwic 6:39442d493098 624 // sendSerial(strbuf);
mfwic 6:39442d493098 625 //}
mfwic 6:39442d493098 626
mfwic 6:39442d493098 627 if (readback)
mfwic 6:39442d493098 628 {
mfwic 6:39442d493098 629 sprintf(strbuf, " %d", my12);
mfwic 6:39442d493098 630 sendSerial(strbuf);
mfwic 12:fd1fd1857628 631 }else{
mfwic 12:fd1fd1857628 632 my12 = commandData;
mfwic 12:fd1fd1857628 633 testing = FALSE;
mfwic 6:39442d493098 634 }
mfwic 6:39442d493098 635 }
mfwic 0:44a3005d4f20 636 else if (!strcmp(commandString, "ALLOFF"))
mfwic 0:44a3005d4f20 637 {
mfwic 7:860b3a8275cb 638 my12 = 0;
mfwic 7:860b3a8275cb 639 running = FALSE;
mfwic 12:fd1fd1857628 640 testing = FALSE;
mfwic 7:860b3a8275cb 641 if(DEBUG){
mfwic 7:860b3a8275cb 642 sprintf(strbuf, "wr_out_code=%d\r\n", wr_out_code);
mfwic 7:860b3a8275cb 643 sendSerial(strbuf);
mfwic 7:860b3a8275cb 644 }
mfwic 0:44a3005d4f20 645 }
mfwic 0:44a3005d4f20 646 else if (!strcmp(commandString, "ALLON"))
mfwic 0:44a3005d4f20 647 {
mfwic 7:860b3a8275cb 648 wr_out_code = setBoardEnables((unsigned int)ALLON);
mfwic 12:fd1fd1857628 649 testing = TRUE;
mfwic 0:44a3005d4f20 650 }
mfwic 0:44a3005d4f20 651 else if (!strcmp(commandString, "RUN"))
mfwic 0:44a3005d4f20 652 {
mfwic 0:44a3005d4f20 653 // Skip over any white space and the optional '[' character
mfwic 0:44a3005d4f20 654 while ((isspace(rxbuf[bufloc])) || (rxbuf[bufloc] == '[')) bufloc++;
mfwic 0:44a3005d4f20 655
mfwic 9:816b9a4e4f21 656 if(rxbuf[bufloc] == NULL){
mfwic 21:fe0ea1860c9f 657 boardsActive = ALLON;
mfwic 9:816b9a4e4f21 658 startConverter(boardsActive);
mfwic 12:fd1fd1857628 659 testing = FALSE;
mfwic 9:816b9a4e4f21 660 }
mfwic 9:816b9a4e4f21 661 else if (rxbuf[bufloc] == '0')
mfwic 9:816b9a4e4f21 662 //if (rxbuf[bufloc] == '0')
mfwic 0:44a3005d4f20 663 {
mfwic 1:9f8583ba2431 664 stopConverter();
mfwic 1:9f8583ba2431 665 //setDacsToZeroVolts();
mfwic 12:fd1fd1857628 666 testing = FALSE;
mfwic 0:44a3005d4f20 667 }
mfwic 25:8bcc8bea0e31 668 else if ((rxbuf[bufloc] > '0') && (rxbuf[bufloc] < '0' + max_boards))
mfwic 0:44a3005d4f20 669 {
mfwic 0:44a3005d4f20 670 ival = atoi(&rxbuf[bufloc]);
mfwic 9:816b9a4e4f21 671 //ival--;
mfwic 0:44a3005d4f20 672
mfwic 0:44a3005d4f20 673 if (running == 0)
mfwic 0:44a3005d4f20 674 {
mfwic 1:9f8583ba2431 675 boardsActive = ival;
mfwic 1:9f8583ba2431 676 startConverter(boardsActive);
mfwic 12:fd1fd1857628 677 testing = FALSE;
mfwic 0:44a3005d4f20 678 }
mfwic 0:44a3005d4f20 679 else
mfwic 0:44a3005d4f20 680 {
mfwic 0:44a3005d4f20 681 // Compare the board enable flags between registers
mfwic 25:8bcc8bea0e31 682 //boardEnables = checkRegisterCompatibility(ival);
mfwic 0:44a3005d4f20 683
mfwic 0:44a3005d4f20 684 // If board enable flags match, change the register set
mfwic 0:44a3005d4f20 685 if (boardEnables == 0)
mfwic 0:44a3005d4f20 686 {
mfwic 1:9f8583ba2431 687 boardsActive = ival;
mfwic 0:44a3005d4f20 688 }
mfwic 0:44a3005d4f20 689 else
mfwic 0:44a3005d4f20 690 {
mfwic 1:9f8583ba2431 691 sprintf(strbuf, " Board enable flags do not match (0x%08x)", boardEnables);
mfwic 1:9f8583ba2431 692 sendSerial(strbuf);
mfwic 0:44a3005d4f20 693 }
mfwic 0:44a3005d4f20 694 }
mfwic 0:44a3005d4f20 695 }
mfwic 0:44a3005d4f20 696 else
mfwic 0:44a3005d4f20 697 {
mfwic 9:816b9a4e4f21 698 sprintf(strbuf, " Invalid number of boards (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 699 sendSerial(strbuf);
mfwic 0:44a3005d4f20 700 commandError = 1;
mfwic 0:44a3005d4f20 701 }
mfwic 0:44a3005d4f20 702 }
mfwic 0:44a3005d4f20 703 else if (!strcmp(commandString, "STOP"))
mfwic 0:44a3005d4f20 704 {
mfwic 1:9f8583ba2431 705 stopConverter();
mfwic 12:fd1fd1857628 706 testing = FALSE;
mfwic 12:fd1fd1857628 707 my12 = 0;
mfwic 1:9f8583ba2431 708 //hv_en = OFF;
mfwic 0:44a3005d4f20 709 }
mfwic 8:d3d7dca419b3 710 else if(!strcmp(commandString, "CAL"))
mfwic 0:44a3005d4f20 711 {
mfwic 0:44a3005d4f20 712 if (running == 1)
mfwic 0:44a3005d4f20 713 {
mfwic 1:9f8583ba2431 714 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 715 sendSerial(strbuf);
mfwic 0:44a3005d4f20 716 commandError = 1;
mfwic 0:44a3005d4f20 717 }
mfwic 11:01dcfb29fbc4 718
mfwic 8:d3d7dca419b3 719 if (!commandError){
mfwic 8:d3d7dca419b3 720 raw = TRUE;
mfwic 8:d3d7dca419b3 721 menuRedraw(NO_PROMPT);
mfwic 0:44a3005d4f20 722 }
mfwic 8:d3d7dca419b3 723 }
mfwic 8:d3d7dca419b3 724 else if(!strcmp(commandString, "UNCAL"))
mfwic 8:d3d7dca419b3 725 {
mfwic 8:d3d7dca419b3 726 if (running == 1)
mfwic 8:d3d7dca419b3 727 {
mfwic 8:d3d7dca419b3 728 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 8:d3d7dca419b3 729 sendSerial(strbuf);
mfwic 8:d3d7dca419b3 730 commandError = 1;
mfwic 8:d3d7dca419b3 731 }
mfwic 11:01dcfb29fbc4 732
mfwic 8:d3d7dca419b3 733 if (!commandError){
mfwic 8:d3d7dca419b3 734 raw = FALSE;
mfwic 8:d3d7dca419b3 735 menuRedraw(NO_PROMPT);
mfwic 8:d3d7dca419b3 736 }
mfwic 8:d3d7dca419b3 737 }
mfwic 0:44a3005d4f20 738 else
mfwic 0:44a3005d4f20 739 {
mfwic 0:44a3005d4f20 740 if (strcmp(commandString, ""))
mfwic 0:44a3005d4f20 741 {
mfwic 0:44a3005d4f20 742 commandError = 1;
mfwic 0:44a3005d4f20 743 }
mfwic 0:44a3005d4f20 744 }
mfwic 0:44a3005d4f20 745
mfwic 0:44a3005d4f20 746 if (commandError)
mfwic 0:44a3005d4f20 747 {
mfwic 6:39442d493098 748 sendSerial(" !");
mfwic 0:44a3005d4f20 749 }
mfwic 0:44a3005d4f20 750
mfwic 3:d8948c5b2951 751 //sendCRLF();
mfwic 3:d8948c5b2951 752 menuPrompt(MENU_DCM1);
mfwic 0:44a3005d4f20 753 }
mfwic 0:44a3005d4f20 754
mfwic 0:44a3005d4f20 755 /************************************************************
mfwic 0:44a3005d4f20 756 * Routine: processCommand
mfwic 0:44a3005d4f20 757 * Input: none
mfwic 0:44a3005d4f20 758 * Returns: none
mfwic 0:44a3005d4f20 759 * Description:
mfwic 0:44a3005d4f20 760 * This is the main serial communications routine. Everything
mfwic 0:44a3005d4f20 761 * starts here as soon as a command is avaiable for processing.
mfwic 0:44a3005d4f20 762 **************************************************************/
mfwic 0:44a3005d4f20 763 void processCommand(void)
mfwic 0:44a3005d4f20 764 {
mfwic 0:44a3005d4f20 765 if (!serialStatus.command && !serialStatus.repeat)
mfwic 0:44a3005d4f20 766 {
mfwic 0:44a3005d4f20 767 return;
mfwic 0:44a3005d4f20 768 }
mfwic 0:44a3005d4f20 769
mfwic 0:44a3005d4f20 770 doCommand(); // if not computer (i.e. terminal) you can do the command as well
mfwic 0:44a3005d4f20 771
mfwic 0:44a3005d4f20 772 bufloc = 0;
mfwic 0:44a3005d4f20 773 rxbuf[bufloc] = 0;
mfwic 0:44a3005d4f20 774
mfwic 0:44a3005d4f20 775 serialStatus.computer = FALSE;
mfwic 0:44a3005d4f20 776 serialStatus.command = FALSE;
mfwic 9:816b9a4e4f21 777
mfwic 9:816b9a4e4f21 778 //sendSerial("didCommand\r\n");
mfwic 0:44a3005d4f20 779 }
mfwic 8:d3d7dca419b3 780
mfwic 8:d3d7dca419b3 781 /************************************************************
mfwic 8:d3d7dca419b3 782 * Routine: waitCommand
mfwic 8:d3d7dca419b3 783 * Input: none
mfwic 8:d3d7dca419b3 784 * Returns: none
mfwic 8:d3d7dca419b3 785 * Description:
mfwic 8:d3d7dca419b3 786 **************************************************************/
mfwic 8:d3d7dca419b3 787 bool waitCommand(void)
mfwic 8:d3d7dca419b3 788 {
mfwic 8:d3d7dca419b3 789 if (!serialStatus.command && !serialStatus.repeat)
mfwic 8:d3d7dca419b3 790 {
mfwic 8:d3d7dca419b3 791 return TRUE;
mfwic 8:d3d7dca419b3 792 }
mfwic 8:d3d7dca419b3 793
mfwic 8:d3d7dca419b3 794 serialStatus.computer = FALSE;
mfwic 8:d3d7dca419b3 795 serialStatus.command = FALSE;
mfwic 8:d3d7dca419b3 796
mfwic 8:d3d7dca419b3 797 return FALSE;
mfwic 8:d3d7dca419b3 798 }
mfwic 11:01dcfb29fbc4 799
mfwic 11:01dcfb29fbc4 800 // Verify that the same boards are enabled in both the current register and
mfwic 11:01dcfb29fbc4 801 // the specified register
mfwic 11:01dcfb29fbc4 802
mfwic 11:01dcfb29fbc4 803