Treehouse Mbed Team / Mbed 2 deprecated 1U5_proto_X

Dependencies:   mbed

Committer:
Slord2142
Date:
Thu Jan 27 21:58:14 2022 +0000
Revision:
0:b3410a1e9843
Child:
1:bc3509459a27
This is the newest version I am playing around with

Who changed what in which revision?

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