Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL2

Dependencies:   mbed

Committer:
mfwic
Date:
Sat Dec 01 00:08:53 2018 +0000
Revision:
5:09be5bbb5020
Parent:
4:db38665c3727
Child:
6:39442d493098
Modified parseCommand to take commands with data assignment.; e.g. MULT=1 is parsed into commandString is MULT, commandData is 1.

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 "RTC.h"
mfwic 0:44a3005d4f20 36 #include "parameters.h"
mfwic 1:9f8583ba2431 37 #include "all_io.h"
mfwic 1:9f8583ba2431 38 //#include "calibrate.h"
mfwic 1:9f8583ba2431 39 #include "boards.h"
mfwic 1:9f8583ba2431 40 #include "menu.h"
mfwic 0:44a3005d4f20 41
mfwic 5:09be5bbb5020 42 extern unsigned int boardsActive;
mfwic 5:09be5bbb5020 43 extern unsigned int boardMults;
mfwic 4:db38665c3727 44 extern unsigned int binCode[6];
mfwic 4:db38665c3727 45 extern unsigned int thermCode[6];
mfwic 5:09be5bbb5020 46 extern unsigned int commandData;
mfwic 0:44a3005d4f20 47
mfwic 0:44a3005d4f20 48 /************* FILE SCOPE VARIABLES ************************/
mfwic 0:44a3005d4f20 49 char setvalue = FALSE;
mfwic 0:44a3005d4f20 50 int endOfCommand = 0;
mfwic 0:44a3005d4f20 51 int commandError = 0;
mfwic 0:44a3005d4f20 52 int menuLevel = LEVEL_MAIN;
mfwic 0:44a3005d4f20 53 int readback = 0;
mfwic 0:44a3005d4f20 54
mfwic 0:44a3005d4f20 55 /************************************************************
mfwic 0:44a3005d4f20 56 * Routine: getDelimiter
mfwic 0:44a3005d4f20 57 * Input: none
mfwic 0:44a3005d4f20 58 * Output: none
mfwic 0:44a3005d4f20 59 * Description:
mfwic 0:44a3005d4f20 60 * searches for a delimiter and moves the buffer location
mfwic 0:44a3005d4f20 61 * to be just past it
mfwic 0:44a3005d4f20 62 *
mfwic 0:44a3005d4f20 63 **************************************************************/
mfwic 0:44a3005d4f20 64 void getDelimiter(void)
mfwic 0:44a3005d4f20 65 {
mfwic 0:44a3005d4f20 66 ++bufloc;
mfwic 0:44a3005d4f20 67
mfwic 0:44a3005d4f20 68 while ((rxbuf[bufloc] != ' ') &&
mfwic 0:44a3005d4f20 69 (rxbuf[bufloc] != ',') &&
mfwic 0:44a3005d4f20 70 (rxbuf[bufloc] != '=') &&
mfwic 0:44a3005d4f20 71 (rxbuf[bufloc] != 0 ))
mfwic 0:44a3005d4f20 72 {
mfwic 0:44a3005d4f20 73 bufloc++;
mfwic 0:44a3005d4f20 74 }
mfwic 0:44a3005d4f20 75 }
mfwic 0:44a3005d4f20 76
mfwic 0:44a3005d4f20 77
mfwic 0:44a3005d4f20 78
mfwic 0:44a3005d4f20 79 /************************************************************
mfwic 0:44a3005d4f20 80 * Routine: gethex
mfwic 0:44a3005d4f20 81 * Input: hex character
mfwic 0:44a3005d4f20 82 * Returns: hex integer
mfwic 0:44a3005d4f20 83 * Description:
mfwic 0:44a3005d4f20 84 * Converts a hex character to a value
mfwic 0:44a3005d4f20 85 **************************************************************/
mfwic 0:44a3005d4f20 86 char gethex(char val)
mfwic 0:44a3005d4f20 87 {
mfwic 0:44a3005d4f20 88 int retval;
mfwic 0:44a3005d4f20 89 switch(val)
mfwic 0:44a3005d4f20 90 {
mfwic 0:44a3005d4f20 91 case '0':
mfwic 0:44a3005d4f20 92 retval = 0;
mfwic 0:44a3005d4f20 93 break;
mfwic 0:44a3005d4f20 94 case '1':
mfwic 0:44a3005d4f20 95 retval = 1;
mfwic 0:44a3005d4f20 96 break;
mfwic 0:44a3005d4f20 97 case '2':
mfwic 0:44a3005d4f20 98 retval = 2;
mfwic 0:44a3005d4f20 99 break;
mfwic 0:44a3005d4f20 100 case '3':
mfwic 0:44a3005d4f20 101 retval = 3;
mfwic 0:44a3005d4f20 102 break;
mfwic 0:44a3005d4f20 103 case '4':
mfwic 0:44a3005d4f20 104 retval = 4;
mfwic 0:44a3005d4f20 105 break;
mfwic 0:44a3005d4f20 106 case '5':
mfwic 0:44a3005d4f20 107 retval = 5;
mfwic 0:44a3005d4f20 108 break;
mfwic 0:44a3005d4f20 109 case '6':
mfwic 0:44a3005d4f20 110 retval = 6;
mfwic 0:44a3005d4f20 111 break;
mfwic 0:44a3005d4f20 112 case '7':
mfwic 0:44a3005d4f20 113 retval = 7;
mfwic 0:44a3005d4f20 114 break;
mfwic 0:44a3005d4f20 115 case '8':
mfwic 0:44a3005d4f20 116 retval = 8;
mfwic 0:44a3005d4f20 117 break;
mfwic 0:44a3005d4f20 118 case '9':
mfwic 0:44a3005d4f20 119 retval = 9;
mfwic 0:44a3005d4f20 120 break;
mfwic 0:44a3005d4f20 121 case 'A':
mfwic 0:44a3005d4f20 122 retval = 10;
mfwic 0:44a3005d4f20 123 break;
mfwic 0:44a3005d4f20 124 case 'B':
mfwic 0:44a3005d4f20 125 retval = 11;
mfwic 0:44a3005d4f20 126 break;
mfwic 0:44a3005d4f20 127 case 'C':
mfwic 0:44a3005d4f20 128 retval = 12;
mfwic 0:44a3005d4f20 129 break;
mfwic 0:44a3005d4f20 130 case 'D':
mfwic 0:44a3005d4f20 131 retval = 13;
mfwic 0:44a3005d4f20 132 break;
mfwic 0:44a3005d4f20 133 case 'E':
mfwic 0:44a3005d4f20 134 retval = 14;
mfwic 0:44a3005d4f20 135 break;
mfwic 0:44a3005d4f20 136 case 'F':
mfwic 0:44a3005d4f20 137 retval = 15;
mfwic 0:44a3005d4f20 138 break;
mfwic 0:44a3005d4f20 139 default:
mfwic 0:44a3005d4f20 140 retval = 0;
mfwic 0:44a3005d4f20 141 break;
mfwic 0:44a3005d4f20 142
mfwic 0:44a3005d4f20 143 }
mfwic 0:44a3005d4f20 144 return retval;
mfwic 0:44a3005d4f20 145 }
mfwic 0:44a3005d4f20 146
mfwic 0:44a3005d4f20 147 /************************************************************
mfwic 0:44a3005d4f20 148 * Routine: showfval
mfwic 0:44a3005d4f20 149 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 150 * value (float value to display)
mfwic 0:44a3005d4f20 151 * Output: none
mfwic 0:44a3005d4f20 152 * Description:
mfwic 0:44a3005d4f20 153 * Sends a floating point number (value) over the serial port
mfwic 0:44a3005d4f20 154 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 155 *
mfwic 0:44a3005d4f20 156 **************************************************************/
mfwic 0:44a3005d4f20 157 void showfval(char setval,float value)
mfwic 0:44a3005d4f20 158 {
mfwic 0:44a3005d4f20 159 if(!setval)
mfwic 0:44a3005d4f20 160 {
mfwic 1:9f8583ba2431 161 sprintf(strbuf," %4.9f",value);
mfwic 1:9f8583ba2431 162 sendSerial(strbuf);
mfwic 0:44a3005d4f20 163 }
mfwic 0:44a3005d4f20 164 }
mfwic 0:44a3005d4f20 165
mfwic 0:44a3005d4f20 166 /************************************************************
mfwic 0:44a3005d4f20 167 * Routine: showival
mfwic 0:44a3005d4f20 168 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 169 * value (integer value to display)
mfwic 0:44a3005d4f20 170 * Output: none
mfwic 0:44a3005d4f20 171 * Description:
mfwic 0:44a3005d4f20 172 * Sends an integer (value) over the serial port
mfwic 0:44a3005d4f20 173 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 174 *
mfwic 0:44a3005d4f20 175 **************************************************************/
mfwic 0:44a3005d4f20 176 void showival(char setval, int value)
mfwic 0:44a3005d4f20 177 {
mfwic 0:44a3005d4f20 178 if(!setval)
mfwic 0:44a3005d4f20 179 {
mfwic 1:9f8583ba2431 180 sprintf(strbuf," %i",value);
mfwic 1:9f8583ba2431 181 sendSerial(strbuf);
mfwic 0:44a3005d4f20 182 }
mfwic 0:44a3005d4f20 183 }
mfwic 0:44a3005d4f20 184 /************************************************************
mfwic 0:44a3005d4f20 185 * Routine: showcval
mfwic 0:44a3005d4f20 186 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 187 * value (character to display)
mfwic 0:44a3005d4f20 188 * Output: none
mfwic 0:44a3005d4f20 189 * Description:
mfwic 0:44a3005d4f20 190 * Sends a character over the serial port
mfwic 0:44a3005d4f20 191 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 192 *
mfwic 0:44a3005d4f20 193 **************************************************************/
mfwic 0:44a3005d4f20 194 void showcval(char setval, int value)
mfwic 0:44a3005d4f20 195 {
mfwic 0:44a3005d4f20 196 if(!setval)
mfwic 0:44a3005d4f20 197 {
mfwic 1:9f8583ba2431 198 sprintf(strbuf," %c",(char)value);
mfwic 1:9f8583ba2431 199 sendSerial(strbuf);
mfwic 0:44a3005d4f20 200 }
mfwic 0:44a3005d4f20 201 }
mfwic 0:44a3005d4f20 202
mfwic 0:44a3005d4f20 203 /************************************************************
mfwic 0:44a3005d4f20 204 * Routine: showlval
mfwic 0:44a3005d4f20 205 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 206 * value (integer value to display)
mfwic 0:44a3005d4f20 207 * Output: none
mfwic 0:44a3005d4f20 208 * Description:
mfwic 0:44a3005d4f20 209 * Sends an long (value) over the serial port
mfwic 0:44a3005d4f20 210 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 211 *
mfwic 0:44a3005d4f20 212 **************************************************************/
mfwic 0:44a3005d4f20 213 void showlval(char setval, long value)
mfwic 0:44a3005d4f20 214 {
mfwic 0:44a3005d4f20 215 if(!setval)
mfwic 0:44a3005d4f20 216 {
mfwic 1:9f8583ba2431 217 sprintf(strbuf," %ld",value);
mfwic 1:9f8583ba2431 218 sendSerial(strbuf);
mfwic 0:44a3005d4f20 219 }
mfwic 0:44a3005d4f20 220 }
mfwic 0:44a3005d4f20 221
mfwic 0:44a3005d4f20 222 /************************************************************
mfwic 0:44a3005d4f20 223 * Routine: showuival
mfwic 0:44a3005d4f20 224 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 225 * value (integer value to display)
mfwic 0:44a3005d4f20 226 * Output: none
mfwic 0:44a3005d4f20 227 * Description:
mfwic 0:44a3005d4f20 228 * Sends an unsigned int (value) over the serial port
mfwic 0:44a3005d4f20 229 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 230 *
mfwic 0:44a3005d4f20 231 **************************************************************/
mfwic 0:44a3005d4f20 232 void showuival(char setval, unsigned int value)
mfwic 0:44a3005d4f20 233 {
mfwic 0:44a3005d4f20 234 if(!setval)
mfwic 0:44a3005d4f20 235 {
mfwic 1:9f8583ba2431 236 sprintf(strbuf," %u",value);
mfwic 1:9f8583ba2431 237 sendSerial(strbuf);
mfwic 0:44a3005d4f20 238 }
mfwic 0:44a3005d4f20 239 }
mfwic 0:44a3005d4f20 240
mfwic 0:44a3005d4f20 241 /************************************************************
mfwic 0:44a3005d4f20 242 * Routine: showhval
mfwic 0:44a3005d4f20 243 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 244 * value (hex integeger value to display)
mfwic 0:44a3005d4f20 245 * Output: none
mfwic 0:44a3005d4f20 246 * Description:
mfwic 0:44a3005d4f20 247 * Sends an integer (value) in hex over the serial port
mfwic 0:44a3005d4f20 248 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 249 *
mfwic 0:44a3005d4f20 250 **************************************************************/
mfwic 0:44a3005d4f20 251 void showhval(char setval, int value)
mfwic 0:44a3005d4f20 252 {
mfwic 0:44a3005d4f20 253 if(!setval)
mfwic 0:44a3005d4f20 254 {
mfwic 0:44a3005d4f20 255 if(serialStatus.computer)
mfwic 1:9f8583ba2431 256 sprintf(strbuf," %u",(unsigned int)value);
mfwic 0:44a3005d4f20 257 else
mfwic 1:9f8583ba2431 258 sprintf(strbuf," 0x%04x",value);
mfwic 1:9f8583ba2431 259 sendSerial(strbuf);
mfwic 0:44a3005d4f20 260 }
mfwic 0:44a3005d4f20 261 }
mfwic 0:44a3005d4f20 262
mfwic 0:44a3005d4f20 263
mfwic 0:44a3005d4f20 264 /************************************************************
mfwic 0:44a3005d4f20 265 * Routine: getival
mfwic 0:44a3005d4f20 266 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 267 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 268 * Description:
mfwic 0:44a3005d4f20 269 * Gets an integer from the serial port connection.
mfwic 0:44a3005d4f20 270 *
mfwic 0:44a3005d4f20 271 **************************************************************/
mfwic 0:44a3005d4f20 272 int getival(char setval)
mfwic 0:44a3005d4f20 273 {
mfwic 0:44a3005d4f20 274 if (setval)
mfwic 0:44a3005d4f20 275 {
mfwic 0:44a3005d4f20 276 return atoi(&rxbuf[++bufloc]);
mfwic 0:44a3005d4f20 277 }
mfwic 0:44a3005d4f20 278
mfwic 0:44a3005d4f20 279 return 0;
mfwic 0:44a3005d4f20 280 }
mfwic 0:44a3005d4f20 281
mfwic 0:44a3005d4f20 282 /************************************************************
mfwic 0:44a3005d4f20 283 * Routine: getcval
mfwic 0:44a3005d4f20 284 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 285 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 286 * Description:
mfwic 0:44a3005d4f20 287 * Gets an character from the serial port connection.
mfwic 0:44a3005d4f20 288 *
mfwic 0:44a3005d4f20 289 **************************************************************/
mfwic 0:44a3005d4f20 290 int getcval(char setval)
mfwic 0:44a3005d4f20 291 {
mfwic 0:44a3005d4f20 292 if(setval)
mfwic 0:44a3005d4f20 293 {
mfwic 0:44a3005d4f20 294 // skip one space
mfwic 0:44a3005d4f20 295 ++bufloc;
mfwic 0:44a3005d4f20 296 // skip spaces and the equals sign
mfwic 0:44a3005d4f20 297 while((rxbuf[bufloc] == ' ') || (rxbuf[bufloc] == '='))
mfwic 0:44a3005d4f20 298 bufloc++;
mfwic 0:44a3005d4f20 299 return rxbuf[bufloc++];
mfwic 0:44a3005d4f20 300 }
mfwic 0:44a3005d4f20 301 else
mfwic 0:44a3005d4f20 302 return 0;
mfwic 0:44a3005d4f20 303
mfwic 0:44a3005d4f20 304 }
mfwic 0:44a3005d4f20 305 /************************************************************
mfwic 0:44a3005d4f20 306 * Routine: getlval
mfwic 0:44a3005d4f20 307 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 308 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 309 * Description:
mfwic 0:44a3005d4f20 310 * Gets an long from the serial port connection.
mfwic 0:44a3005d4f20 311 *
mfwic 0:44a3005d4f20 312 **************************************************************/
mfwic 0:44a3005d4f20 313 long getlval(char setval)
mfwic 0:44a3005d4f20 314 {
mfwic 0:44a3005d4f20 315 if(setval)
mfwic 0:44a3005d4f20 316 return atol(&rxbuf[++bufloc]);
mfwic 0:44a3005d4f20 317 else
mfwic 0:44a3005d4f20 318 return 0;
mfwic 0:44a3005d4f20 319
mfwic 0:44a3005d4f20 320 }
mfwic 0:44a3005d4f20 321
mfwic 0:44a3005d4f20 322 /************************************************************
mfwic 0:44a3005d4f20 323 * Routine: getfval
mfwic 0:44a3005d4f20 324 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 325 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 326 * Description:
mfwic 0:44a3005d4f20 327 * Gets an float from the serial port connection.
mfwic 0:44a3005d4f20 328 *
mfwic 0:44a3005d4f20 329 **************************************************************/
mfwic 0:44a3005d4f20 330 float getfval(char setval)
mfwic 0:44a3005d4f20 331 {
mfwic 0:44a3005d4f20 332 if(setval)
mfwic 0:44a3005d4f20 333 return atof(&rxbuf[++bufloc]);
mfwic 0:44a3005d4f20 334 else
mfwic 0:44a3005d4f20 335 return 0;
mfwic 0:44a3005d4f20 336 }
mfwic 0:44a3005d4f20 337
mfwic 0:44a3005d4f20 338 /************************************************************
mfwic 0:44a3005d4f20 339 * Routine: validateEntry
mfwic 0:44a3005d4f20 340 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 341 * limlo -- low limit
mfwic 0:44a3005d4f20 342 * limhi -- high limit
mfwic 0:44a3005d4f20 343 * address -- address in eeprom to use
mfwic 0:44a3005d4f20 344 * Returns: 0 if entry validates and is written
mfwic 0:44a3005d4f20 345 * 1 if entry fails
mfwic 0:44a3005d4f20 346 * Description:
mfwic 0:44a3005d4f20 347 * Gets or sets a value in eeprom at the address but only
mfwic 0:44a3005d4f20 348 * if it is between the limits will it write the value to
mfwic 0:44a3005d4f20 349 * eeprom
mfwic 0:44a3005d4f20 350 *
mfwic 0:44a3005d4f20 351 **************************************************************/
mfwic 0:44a3005d4f20 352 int validateEntry(char setvalue, float limlo, float limhi, float *address)
mfwic 0:44a3005d4f20 353 {
mfwic 0:44a3005d4f20 354 float val;
mfwic 0:44a3005d4f20 355
mfwic 0:44a3005d4f20 356 if (setvalue)
mfwic 0:44a3005d4f20 357 {
mfwic 0:44a3005d4f20 358 val = getfval(SET);
mfwic 0:44a3005d4f20 359
mfwic 0:44a3005d4f20 360 if ((val >= limlo) && (val <= limhi))
mfwic 0:44a3005d4f20 361 {
mfwic 0:44a3005d4f20 362 *address = val;
mfwic 0:44a3005d4f20 363 }
mfwic 0:44a3005d4f20 364 else
mfwic 0:44a3005d4f20 365 {
mfwic 0:44a3005d4f20 366 showRangeError(0, 0, val);
mfwic 0:44a3005d4f20 367 return 0;
mfwic 0:44a3005d4f20 368 }
mfwic 0:44a3005d4f20 369 }
mfwic 0:44a3005d4f20 370 else
mfwic 0:44a3005d4f20 371 {
mfwic 0:44a3005d4f20 372 val = *address;
mfwic 1:9f8583ba2431 373 sprintf(strbuf, " %4.3f", val);
mfwic 1:9f8583ba2431 374 sendSerial(strbuf);
mfwic 0:44a3005d4f20 375 }
mfwic 0:44a3005d4f20 376
mfwic 0:44a3005d4f20 377 return 1;
mfwic 0:44a3005d4f20 378 }
mfwic 0:44a3005d4f20 379
mfwic 0:44a3005d4f20 380
mfwic 0:44a3005d4f20 381 /************************************************************
mfwic 0:44a3005d4f20 382 * Routine: validateEntry
mfwic 0:44a3005d4f20 383 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 384 * limlo -- low limit
mfwic 0:44a3005d4f20 385 * limhi -- high limit
mfwic 0:44a3005d4f20 386 * address -- address in eeprom to use
mfwic 0:44a3005d4f20 387 *
mfwic 0:44a3005d4f20 388 * Returns: FALSE if entry fails
mfwic 0:44a3005d4f20 389 * TRUE if entry validates and is written
mfwic 0:44a3005d4f20 390 *
mfwic 0:44a3005d4f20 391 * Description:
mfwic 0:44a3005d4f20 392 * Gets or sets a value in eeprom at the address but only
mfwic 0:44a3005d4f20 393 * if it is between the limits will it write the value to
mfwic 0:44a3005d4f20 394 * eeprom
mfwic 0:44a3005d4f20 395 *
mfwic 0:44a3005d4f20 396 **************************************************************/
mfwic 0:44a3005d4f20 397 int validateInt(char setvalue, int limlo, int limhi, int *address)
mfwic 0:44a3005d4f20 398 {
mfwic 0:44a3005d4f20 399 float val;
mfwic 0:44a3005d4f20 400
mfwic 0:44a3005d4f20 401 if (setvalue)
mfwic 0:44a3005d4f20 402 {
mfwic 0:44a3005d4f20 403 val = getfval(SET);
mfwic 0:44a3005d4f20 404
mfwic 0:44a3005d4f20 405 if ((val >= limlo) && (val <= limhi))
mfwic 0:44a3005d4f20 406 {
mfwic 0:44a3005d4f20 407 *address = val;
mfwic 0:44a3005d4f20 408 }
mfwic 0:44a3005d4f20 409 else
mfwic 0:44a3005d4f20 410 {
mfwic 0:44a3005d4f20 411 showRangeError(1, val, 0);
mfwic 0:44a3005d4f20 412 return FALSE;
mfwic 0:44a3005d4f20 413 }
mfwic 0:44a3005d4f20 414 }
mfwic 0:44a3005d4f20 415 else
mfwic 0:44a3005d4f20 416 {
mfwic 0:44a3005d4f20 417 val = *address;
mfwic 1:9f8583ba2431 418 sprintf(strbuf, " %4.0f", val);
mfwic 1:9f8583ba2431 419 sendSerial(strbuf);
mfwic 0:44a3005d4f20 420 }
mfwic 0:44a3005d4f20 421
mfwic 0:44a3005d4f20 422 return TRUE;
mfwic 0:44a3005d4f20 423 }
mfwic 0:44a3005d4f20 424
mfwic 0:44a3005d4f20 425
mfwic 0:44a3005d4f20 426 /************************************************************
mfwic 0:44a3005d4f20 427 * Routine: parseCommand
mfwic 0:44a3005d4f20 428 * Input: setvalue (GET or SET), command buffer
mfwic 0:44a3005d4f20 429 * Returns: none
mfwic 0:44a3005d4f20 430 * Description:
mfwic 0:44a3005d4f20 431 * parses a command and gets the commandstring
mfwic 0:44a3005d4f20 432 **************************************************************/
mfwic 0:44a3005d4f20 433 void parseCommand(char setvalue, char *commandString)
mfwic 0:44a3005d4f20 434 {
mfwic 0:44a3005d4f20 435 int i, endofc;
mfwic 0:44a3005d4f20 436 char store;
mfwic 0:44a3005d4f20 437
mfwic 0:44a3005d4f20 438 // Ignore any white space and the optional ';' character before the start of
mfwic 0:44a3005d4f20 439 // the command string (any ']' character is from the last command so skip that,
mfwic 0:44a3005d4f20 440 // too)
mfwic 0:44a3005d4f20 441 while ((isspace(rxbuf[bufloc])) || (rxbuf[bufloc] == ';') || (rxbuf[bufloc] == ']'))
mfwic 0:44a3005d4f20 442 {
mfwic 0:44a3005d4f20 443 bufloc++;
mfwic 0:44a3005d4f20 444 if ((rxbuf[bufloc] == 0x0D) || (rxbuf[bufloc] == 0)) break;
mfwic 0:44a3005d4f20 445 }
mfwic 0:44a3005d4f20 446
mfwic 0:44a3005d4f20 447 if (setvalue)
mfwic 0:44a3005d4f20 448 {
mfwic 0:44a3005d4f20 449 // We need a value for SET so hitting the end is a problem
mfwic 0:44a3005d4f20 450 if ((rxbuf[bufloc] == 0) || (rxbuf[bufloc] == 0x0D))
mfwic 0:44a3005d4f20 451 {
mfwic 0:44a3005d4f20 452 commandError = 1;
mfwic 0:44a3005d4f20 453 return;
mfwic 0:44a3005d4f20 454 }
mfwic 0:44a3005d4f20 455 }
mfwic 0:44a3005d4f20 456
mfwic 0:44a3005d4f20 457 // Find the end of the command string
mfwic 0:44a3005d4f20 458 endofc = bufloc + 1;
mfwic 0:44a3005d4f20 459
mfwic 0:44a3005d4f20 460 // White space, '[' and '?' all terminate the command string
mfwic 0:44a3005d4f20 461 while ((!isspace(rxbuf[endofc])) && (rxbuf[endofc] != '[') && (rxbuf[endofc] != '?'))
mfwic 0:44a3005d4f20 462 {
mfwic 0:44a3005d4f20 463 endofc++;
mfwic 0:44a3005d4f20 464 // (As does hitting the end of rxbuf!)
mfwic 0:44a3005d4f20 465 if ((rxbuf[endofc] == 0x0D) || (rxbuf[endofc] == 0)) break;
mfwic 0:44a3005d4f20 466 }
mfwic 0:44a3005d4f20 467
mfwic 0:44a3005d4f20 468 // Save the character that marks the end of the command string
mfwic 0:44a3005d4f20 469 store = rxbuf[endofc];
mfwic 0:44a3005d4f20 470
mfwic 1:9f8583ba2431 471 // sprintf(strbuf, "store == %c\r\n", store);
mfwic 1:9f8583ba2431 472 // sendSerial(strbuf);
mfwic 0:44a3005d4f20 473
mfwic 0:44a3005d4f20 474 // Command strings ending in '?' are readbacks
mfwic 0:44a3005d4f20 475 readback = ((store == '?') ? 1 : 0);
mfwic 0:44a3005d4f20 476
mfwic 0:44a3005d4f20 477 // Set end to null character so string can now be copied
mfwic 0:44a3005d4f20 478 rxbuf[endofc] = 0;
mfwic 0:44a3005d4f20 479
mfwic 0:44a3005d4f20 480 // Copy the command string into commandString
mfwic 5:09be5bbb5020 481 char commandStringBuf[80];
mfwic 5:09be5bbb5020 482 char *tok;
mfwic 5:09be5bbb5020 483 strcpy(commandStringBuf, &rxbuf[bufloc]);
mfwic 5:09be5bbb5020 484 if(strstr(commandStringBuf, "=")){
mfwic 5:09be5bbb5020 485 tok = strtok(commandStringBuf, "=");
mfwic 5:09be5bbb5020 486 strcpy(commandString, tok);
mfwic 5:09be5bbb5020 487 tok = strtok(NULL, "=");
mfwic 5:09be5bbb5020 488 commandData = atoi(tok);
mfwic 5:09be5bbb5020 489 }
mfwic 5:09be5bbb5020 490 else{
mfwic 5:09be5bbb5020 491 strcpy(commandString, commandStringBuf);
mfwic 5:09be5bbb5020 492 }
mfwic 0:44a3005d4f20 493
mfwic 0:44a3005d4f20 494 // Convert the command string to all uppercase characters
mfwic 0:44a3005d4f20 495 for (i = 0; i < strlen(commandString); i++)
mfwic 0:44a3005d4f20 496 {
mfwic 0:44a3005d4f20 497 commandString[i] = toupper(commandString[i]);
mfwic 0:44a3005d4f20 498 }
mfwic 0:44a3005d4f20 499
mfwic 0:44a3005d4f20 500 // Replace the character we clobbered in rxbuf
mfwic 0:44a3005d4f20 501 rxbuf[endofc] = store;
mfwic 0:44a3005d4f20 502
mfwic 0:44a3005d4f20 503 // Update bufloc to the end of the command string
mfwic 0:44a3005d4f20 504 bufloc = endofc;
mfwic 0:44a3005d4f20 505 }
mfwic 0:44a3005d4f20 506
mfwic 0:44a3005d4f20 507 /************************************************************
mfwic 0:44a3005d4f20 508 * Routine: validateChannel
mfwic 0:44a3005d4f20 509 * Input: channel
mfwic 0:44a3005d4f20 510 * Returns: none
mfwic 0:44a3005d4f20 511 * Description:
mfwic 0:44a3005d4f20 512 * Verifies that the channel number is a valid value between
mfwic 0:44a3005d4f20 513 * 1 and MAX_BOARDS, setting commandError if the check fails
mfwic 0:44a3005d4f20 514 **************************************************************/
mfwic 0:44a3005d4f20 515 void validateChannel(int channel)
mfwic 0:44a3005d4f20 516 {
mfwic 0:44a3005d4f20 517 if ((channel < 1) || (channel > MAX_BOARDS))
mfwic 0:44a3005d4f20 518 {
mfwic 1:9f8583ba2431 519 sprintf(strbuf, " Invalid channel/board: %d (range is 1 - %d)", channel, MAX_BOARDS);
mfwic 1:9f8583ba2431 520 sendSerial(strbuf);
mfwic 0:44a3005d4f20 521 commandError = 1;
mfwic 0:44a3005d4f20 522 }
mfwic 0:44a3005d4f20 523 }
mfwic 0:44a3005d4f20 524
mfwic 0:44a3005d4f20 525 /************************************************************
mfwic 0:44a3005d4f20 526 * Routine: setPairVariable
mfwic 0:44a3005d4f20 527 * Input: *avariable,*bvariable
mfwic 0:44a3005d4f20 528 * Returns: none
mfwic 0:44a3005d4f20 529 * Description:
mfwic 0:44a3005d4f20 530 * sets a single channel variable
mfwic 0:44a3005d4f20 531 **************************************************************/
mfwic 0:44a3005d4f20 532 void setPairVariable(float *avariable, float *bvariable, float limitlo, float limithi)
mfwic 0:44a3005d4f20 533 {
mfwic 0:44a3005d4f20 534 if (!readback)
mfwic 0:44a3005d4f20 535 {
mfwic 0:44a3005d4f20 536 if (validateEntry(SET, limitlo, limithi, avariable))
mfwic 0:44a3005d4f20 537 {
mfwic 0:44a3005d4f20 538 *bvariable = *avariable;
mfwic 0:44a3005d4f20 539 }
mfwic 0:44a3005d4f20 540 }
mfwic 0:44a3005d4f20 541 }
mfwic 0:44a3005d4f20 542
mfwic 0:44a3005d4f20 543
mfwic 0:44a3005d4f20 544 /************************************************************
mfwic 0:44a3005d4f20 545 * Routine: chlprMenu
mfwic 0:44a3005d4f20 546 * Input: none
mfwic 0:44a3005d4f20 547 * Returns: none
mfwic 0:44a3005d4f20 548 * Description:
mfwic 0:44a3005d4f20 549 * Channel Pair Menu
mfwic 0:44a3005d4f20 550 **************************************************************/
mfwic 1:9f8583ba2431 551 /*void chlprMenu(void)
mfwic 0:44a3005d4f20 552 {
mfwic 0:44a3005d4f20 553 int ival;
mfwic 0:44a3005d4f20 554
mfwic 0:44a3005d4f20 555 char commandString[80] = { 0 };
mfwic 0:44a3005d4f20 556
mfwic 0:44a3005d4f20 557 commandError = 0;
mfwic 0:44a3005d4f20 558 parseCommand(GET, commandString);
mfwic 0:44a3005d4f20 559
mfwic 0:44a3005d4f20 560 if (!strcmp(commandString, "AMPL"))
mfwic 0:44a3005d4f20 561 {
mfwic 0:44a3005d4f20 562 if (!readback)
mfwic 0:44a3005d4f20 563 {
mfwic 0:44a3005d4f20 564 setPairVariable(&ch[chpair][registerno].a_dwell1_volts, &ch[chpair][registerno].b_dwell1_volts, MIN_VOLTAGE, MAX_VOLTAGE);
mfwic 0:44a3005d4f20 565
mfwic 0:44a3005d4f20 566 ch[chpair][registerno].a_dwell2_volts = ch[chpair][registerno].a_dwell1_volts;
mfwic 0:44a3005d4f20 567 ch[chpair][registerno].b_dwell2_volts = ch[chpair][registerno].b_dwell1_volts;
mfwic 1:9f8583ba2431 568 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 569 sendSerial(strbuf);
mfwic 0:44a3005d4f20 570 }
mfwic 0:44a3005d4f20 571
mfwic 1:9f8583ba2431 572 sprintf(strbuf, " [%d, %d] peak voltage = %0.3f V", chpair, registerno, ch[chpair][registerno].a_dwell1_volts);
mfwic 1:9f8583ba2431 573 sendSerial(strbuf);
mfwic 0:44a3005d4f20 574 return;
mfwic 0:44a3005d4f20 575 }
mfwic 0:44a3005d4f20 576
mfwic 0:44a3005d4f20 577 if (!strcmp(commandString, "DWLPHS"))
mfwic 0:44a3005d4f20 578 {
mfwic 0:44a3005d4f20 579 if (!readback)
mfwic 0:44a3005d4f20 580 {
mfwic 0:44a3005d4f20 581 // Set dwell times using the specified value
mfwic 0:44a3005d4f20 582 setPairVariable(&dwells[registerno].a_dwell1_time, &dwells[registerno].b_dwell1_time, MIN_DWELL_TIME_MS, MAX_DWELL_TIME_MS);
mfwic 0:44a3005d4f20 583
mfwic 1:9f8583ba2431 584 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 585 sendSerial(strbuf);
mfwic 0:44a3005d4f20 586 }
mfwic 0:44a3005d4f20 587
mfwic 1:9f8583ba2431 588 sprintf(strbuf, " [%d] in-phase dwell time = %0.3f ms", registerno, dwells[registerno].a_dwell1_time);
mfwic 1:9f8583ba2431 589 sendSerial(strbuf);
mfwic 0:44a3005d4f20 590 return;
mfwic 0:44a3005d4f20 591 }
mfwic 0:44a3005d4f20 592
mfwic 0:44a3005d4f20 593 if (!strcmp(commandString,"DWLPHS_OV"))
mfwic 0:44a3005d4f20 594 {
mfwic 0:44a3005d4f20 595 if (!readback)
mfwic 0:44a3005d4f20 596 {
mfwic 0:44a3005d4f20 597 setPairVariable(&ch[chpair][registerno].a_dwell1_ov, &ch[chpair][registerno].b_dwell1_ov, MIN_VOLTAGE, MAX_VOLTAGE);
mfwic 0:44a3005d4f20 598
mfwic 0:44a3005d4f20 599 ch[chpair][registerno].a_dwell2_ov = ch[chpair][registerno].a_dwell1_ov;
mfwic 0:44a3005d4f20 600 ch[chpair][registerno].b_dwell2_ov = ch[chpair][registerno].b_dwell1_ov;
mfwic 0:44a3005d4f20 601
mfwic 1:9f8583ba2431 602 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 603 sendSerial(strbuf);
mfwic 0:44a3005d4f20 604 }
mfwic 0:44a3005d4f20 605
mfwic 1:9f8583ba2431 606 sprintf(strbuf, " [%d, %d] in-phase overvoltage = %0.3f V", chpair, registerno, ch[chpair][registerno].a_dwell1_ov);
mfwic 1:9f8583ba2431 607 sendSerial(strbuf);
mfwic 0:44a3005d4f20 608 return;
mfwic 0:44a3005d4f20 609 }
mfwic 0:44a3005d4f20 610
mfwic 0:44a3005d4f20 611 if (!strcmp(commandString,"DWLPHS_OV_TIME"))
mfwic 0:44a3005d4f20 612 {
mfwic 0:44a3005d4f20 613 if (!readback)
mfwic 0:44a3005d4f20 614 {
mfwic 0:44a3005d4f20 615 // Set overvoltage times using the specified value
mfwic 0:44a3005d4f20 616 setPairVariable(&dwells[registerno].a_dwell1_ov_time, &dwells[registerno].b_dwell1_ov_time, MIN_DWELL_TIME_MS, MAX_DWELL_TIME_MS);
mfwic 0:44a3005d4f20 617 dwells[registerno].a_dwell2_ov_time = dwells[registerno].a_dwell1_ov_time;
mfwic 0:44a3005d4f20 618 dwells[registerno].b_dwell2_ov_time = dwells[registerno].b_dwell1_ov_time;
mfwic 0:44a3005d4f20 619
mfwic 1:9f8583ba2431 620 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 621 sendSerial(strbuf);
mfwic 0:44a3005d4f20 622 }
mfwic 0:44a3005d4f20 623
mfwic 1:9f8583ba2431 624 sprintf(strbuf, " [%d] in-phase overvoltage time = %0.3f ms", registerno, dwells[registerno].a_dwell1_ov_time);
mfwic 1:9f8583ba2431 625 sendSerial(strbuf);
mfwic 0:44a3005d4f20 626 return;
mfwic 0:44a3005d4f20 627 }
mfwic 0:44a3005d4f20 628
mfwic 0:44a3005d4f20 629 if (!strcmp(commandString,"DWLDIFFL"))
mfwic 0:44a3005d4f20 630 {
mfwic 0:44a3005d4f20 631 if (!readback)
mfwic 0:44a3005d4f20 632 {
mfwic 0:44a3005d4f20 633 // Set dwell times using the specified value
mfwic 0:44a3005d4f20 634 setPairVariable(&dwells[registerno].a_dwell2_time, &dwells[registerno].b_dwell2_time, MIN_DWELL_TIME_MS, MAX_DWELL_TIME_MS);
mfwic 0:44a3005d4f20 635
mfwic 1:9f8583ba2431 636 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 637 sendSerial(strbuf);
mfwic 0:44a3005d4f20 638 }
mfwic 0:44a3005d4f20 639
mfwic 1:9f8583ba2431 640 sprintf(strbuf, " [%d] differential dwell time = %0.3f ms", registerno, dwells[registerno].a_dwell2_time);
mfwic 1:9f8583ba2431 641 sendSerial(strbuf);
mfwic 0:44a3005d4f20 642 return;
mfwic 0:44a3005d4f20 643 }
mfwic 0:44a3005d4f20 644
mfwic 0:44a3005d4f20 645 if (!strcmp(commandString, "ENABLE"))
mfwic 0:44a3005d4f20 646 {
mfwic 0:44a3005d4f20 647 ival = getival(SET);
mfwic 0:44a3005d4f20 648 if ((ival != 0) && (ival != 1)) ival = 0;
mfwic 0:44a3005d4f20 649
mfwic 0:44a3005d4f20 650 if (!readback)
mfwic 0:44a3005d4f20 651 {
mfwic 0:44a3005d4f20 652 ch[chpair][registerno].enabled = ival;
mfwic 0:44a3005d4f20 653
mfwic 1:9f8583ba2431 654 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 655 sendSerial(strbuf);
mfwic 0:44a3005d4f20 656 }
mfwic 0:44a3005d4f20 657
mfwic 1:9f8583ba2431 658 sprintf(strbuf, " [%d, %d] enable = %d", chpair, registerno, ch[chpair][registerno].enabled);
mfwic 1:9f8583ba2431 659 sendSerial(strbuf);
mfwic 0:44a3005d4f20 660 return;
mfwic 0:44a3005d4f20 661 }
mfwic 0:44a3005d4f20 662
mfwic 0:44a3005d4f20 663 if (!strcmp(commandString, "DISABLE"))
mfwic 0:44a3005d4f20 664 {
mfwic 0:44a3005d4f20 665 if (!readback)
mfwic 0:44a3005d4f20 666 {
mfwic 0:44a3005d4f20 667 ch[chpair][registerno].enabled = 0;
mfwic 0:44a3005d4f20 668
mfwic 1:9f8583ba2431 669 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 670 sendSerial(strbuf);
mfwic 0:44a3005d4f20 671 }
mfwic 0:44a3005d4f20 672
mfwic 1:9f8583ba2431 673 sprintf(strbuf, " [%d, %d] enable = %d", chpair, registerno, ch[chpair][registerno].enabled);
mfwic 1:9f8583ba2431 674 sendSerial(strbuf);
mfwic 0:44a3005d4f20 675 return;
mfwic 0:44a3005d4f20 676 }
mfwic 0:44a3005d4f20 677
mfwic 0:44a3005d4f20 678 if (!strcmp(commandString, "DIFF"))
mfwic 0:44a3005d4f20 679 {
mfwic 0:44a3005d4f20 680 ival = getival(SET);
mfwic 0:44a3005d4f20 681 if ((ival != 0) && (ival != 1)) ival = 0;
mfwic 0:44a3005d4f20 682
mfwic 0:44a3005d4f20 683 if (!readback)
mfwic 0:44a3005d4f20 684 {
mfwic 0:44a3005d4f20 685 ch[chpair][registerno].differential_dwell = ival;
mfwic 0:44a3005d4f20 686
mfwic 1:9f8583ba2431 687 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 688 sendSerial(strbuf);
mfwic 0:44a3005d4f20 689 }
mfwic 0:44a3005d4f20 690
mfwic 1:9f8583ba2431 691 sprintf(strbuf, " [%d, %d] differential_dwell = %d", chpair, registerno, ch[chpair][registerno].differential_dwell);
mfwic 1:9f8583ba2431 692 sendSerial(strbuf);
mfwic 0:44a3005d4f20 693 return;
mfwic 0:44a3005d4f20 694 }
mfwic 0:44a3005d4f20 695
mfwic 0:44a3005d4f20 696 if (!strcmp(commandString, "INVERT"))
mfwic 0:44a3005d4f20 697 {
mfwic 0:44a3005d4f20 698 ival = getival(SET);
mfwic 0:44a3005d4f20 699 if ((ival != 0) && (ival != 1)) ival = 0;
mfwic 0:44a3005d4f20 700
mfwic 0:44a3005d4f20 701 if (!readback)
mfwic 0:44a3005d4f20 702 {
mfwic 0:44a3005d4f20 703 ch[chpair][registerno].inverted = ival;
mfwic 0:44a3005d4f20 704
mfwic 1:9f8583ba2431 705 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 706 sendSerial(strbuf);
mfwic 0:44a3005d4f20 707 }
mfwic 0:44a3005d4f20 708
mfwic 1:9f8583ba2431 709 sprintf(strbuf, " [%d, %d] inverted = %d", chpair, registerno, ch[chpair][registerno].inverted);
mfwic 1:9f8583ba2431 710 sendSerial(strbuf);
mfwic 0:44a3005d4f20 711 return;
mfwic 0:44a3005d4f20 712 }
mfwic 0:44a3005d4f20 713
mfwic 0:44a3005d4f20 714 if (strcmp(commandString, ""))
mfwic 0:44a3005d4f20 715 {
mfwic 0:44a3005d4f20 716 commandError = 1;
mfwic 0:44a3005d4f20 717 }
mfwic 1:9f8583ba2431 718 }*/
mfwic 0:44a3005d4f20 719
mfwic 0:44a3005d4f20 720
mfwic 0:44a3005d4f20 721 /************************************************************
mfwic 0:44a3005d4f20 722 * Routine: setSingleVariable
mfwic 0:44a3005d4f20 723 * Input: *avariable,*bvariable
mfwic 0:44a3005d4f20 724 * Returns: none
mfwic 0:44a3005d4f20 725 * Description:
mfwic 0:44a3005d4f20 726 * sets a single channel variable
mfwic 0:44a3005d4f20 727 **************************************************************/
mfwic 1:9f8583ba2431 728 /*void setSingleVariable(float* avariable, float* bvariable, float limitlo, float limithi)
mfwic 0:44a3005d4f20 729 {
mfwic 0:44a3005d4f20 730 float* variable;
mfwic 0:44a3005d4f20 731
mfwic 0:44a3005d4f20 732 if ((chsgl == 'A') || (chsgl == 'a'))
mfwic 0:44a3005d4f20 733 {
mfwic 0:44a3005d4f20 734 variable = avariable;
mfwic 0:44a3005d4f20 735 }
mfwic 0:44a3005d4f20 736 else
mfwic 0:44a3005d4f20 737 {
mfwic 0:44a3005d4f20 738 variable = bvariable;
mfwic 0:44a3005d4f20 739 }
mfwic 0:44a3005d4f20 740
mfwic 0:44a3005d4f20 741 if (!readback)
mfwic 0:44a3005d4f20 742 {
mfwic 0:44a3005d4f20 743 validateEntry(SET, limitlo, limithi, variable);
mfwic 0:44a3005d4f20 744 }
mfwic 1:9f8583ba2431 745 }*/
mfwic 0:44a3005d4f20 746
mfwic 0:44a3005d4f20 747
mfwic 0:44a3005d4f20 748 /************************************************************
mfwic 0:44a3005d4f20 749 * Routine: chlsglMenu
mfwic 0:44a3005d4f20 750 * Input: none
mfwic 0:44a3005d4f20 751 * Returns: none
mfwic 0:44a3005d4f20 752 * Description:
mfwic 0:44a3005d4f20 753 * Channel Single Menu
mfwic 0:44a3005d4f20 754 **************************************************************/
mfwic 1:9f8583ba2431 755 /*void chlsglMenu(void)
mfwic 0:44a3005d4f20 756 {
mfwic 0:44a3005d4f20 757 int channelSide;
mfwic 0:44a3005d4f20 758 float value;
mfwic 0:44a3005d4f20 759
mfwic 0:44a3005d4f20 760 char commandString[80] = { 0 };
mfwic 0:44a3005d4f20 761
mfwic 0:44a3005d4f20 762 commandError = 0;
mfwic 0:44a3005d4f20 763 parseCommand(GET, commandString);
mfwic 0:44a3005d4f20 764
mfwic 0:44a3005d4f20 765 channelSide = (((chsgl == 'A') || (chsgl == 'a')) ? 1 : 2);
mfwic 0:44a3005d4f20 766
mfwic 0:44a3005d4f20 767 if (!strcmp(commandString, "DWL1AMPL"))
mfwic 0:44a3005d4f20 768 {
mfwic 0:44a3005d4f20 769 if (!readback)
mfwic 0:44a3005d4f20 770 {
mfwic 0:44a3005d4f20 771 setSingleVariable(&ch[chpair][registerno].a_dwell1_volts, &ch[chpair][registerno].b_dwell1_volts, MIN_VOLTAGE, MAX_VOLTAGE);
mfwic 0:44a3005d4f20 772
mfwic 1:9f8583ba2431 773 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 774 sendSerial(strbuf);
mfwic 0:44a3005d4f20 775 }
mfwic 0:44a3005d4f20 776
mfwic 0:44a3005d4f20 777 value = ((channelSide == 1) ? ch[chpair][registerno].a_dwell1_volts : ch[chpair][registerno].b_dwell1_volts);
mfwic 0:44a3005d4f20 778
mfwic 1:9f8583ba2431 779 sprintf(strbuf, " [%d%c, %d] dwell 1 peak amplitude = %0.3f V", chpair, chsgl, registerno, value);
mfwic 1:9f8583ba2431 780 sendSerial(strbuf);
mfwic 0:44a3005d4f20 781 return;
mfwic 0:44a3005d4f20 782 }
mfwic 0:44a3005d4f20 783
mfwic 0:44a3005d4f20 784 if (!strcmp(commandString, "DWL1"))
mfwic 0:44a3005d4f20 785 {
mfwic 0:44a3005d4f20 786 if (!readback)
mfwic 0:44a3005d4f20 787 {
mfwic 0:44a3005d4f20 788 // Set dwell times using the specified value
mfwic 0:44a3005d4f20 789 setSingleVariable(&dwells[registerno].a_dwell1_time, &dwells[registerno].b_dwell1_time, MIN_DWELL_TIME_MS, MAX_DWELL_TIME_MS);
mfwic 0:44a3005d4f20 790
mfwic 1:9f8583ba2431 791 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 792 sendSerial(strbuf);
mfwic 0:44a3005d4f20 793 }
mfwic 0:44a3005d4f20 794
mfwic 0:44a3005d4f20 795 value = ((channelSide == 1) ? dwells[registerno].a_dwell1_time : dwells[registerno].b_dwell1_time);
mfwic 0:44a3005d4f20 796
mfwic 1:9f8583ba2431 797 sprintf(strbuf, " [%d] dwell 1 time = %0.3f ms", registerno, value);
mfwic 1:9f8583ba2431 798 sendSerial(strbuf);
mfwic 0:44a3005d4f20 799 return;
mfwic 0:44a3005d4f20 800 }
mfwic 0:44a3005d4f20 801
mfwic 0:44a3005d4f20 802 if (!strcmp(commandString, "DWL1_OV"))
mfwic 0:44a3005d4f20 803 {
mfwic 0:44a3005d4f20 804 if (!readback)
mfwic 0:44a3005d4f20 805 {
mfwic 0:44a3005d4f20 806 setSingleVariable(&ch[chpair][registerno].a_dwell1_ov, &ch[chpair][registerno].b_dwell1_ov, MIN_VOLTAGE, MAX_VOLTAGE);
mfwic 0:44a3005d4f20 807
mfwic 1:9f8583ba2431 808 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 809 sendSerial(strbuf);
mfwic 0:44a3005d4f20 810 }
mfwic 0:44a3005d4f20 811
mfwic 0:44a3005d4f20 812 value = ((channelSide == 1) ? ch[chpair][registerno].a_dwell1_ov : ch[chpair][registerno].b_dwell1_ov);
mfwic 0:44a3005d4f20 813
mfwic 1:9f8583ba2431 814 sprintf(strbuf, " [%d%c, %d] dwell 1 overvoltage = %0.3f V", chpair, chsgl, registerno, value);
mfwic 1:9f8583ba2431 815 sendSerial(strbuf);
mfwic 0:44a3005d4f20 816 return;
mfwic 0:44a3005d4f20 817 }
mfwic 0:44a3005d4f20 818
mfwic 0:44a3005d4f20 819 if (!strcmp(commandString, "DWL1_OV_TIME"))
mfwic 0:44a3005d4f20 820 {
mfwic 0:44a3005d4f20 821 if (!readback)
mfwic 0:44a3005d4f20 822 {
mfwic 0:44a3005d4f20 823 // Set channel 1's dwell 1 overvoltage time
mfwic 0:44a3005d4f20 824 setSingleVariable(&dwells[registerno].a_dwell1_ov_time, &dwells[registerno].b_dwell1_ov_time, MIN_DWELL_TIME_MS, MAX_DWELL_TIME_MS);
mfwic 0:44a3005d4f20 825
mfwic 1:9f8583ba2431 826 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 827 sendSerial(strbuf);
mfwic 0:44a3005d4f20 828 }
mfwic 0:44a3005d4f20 829
mfwic 0:44a3005d4f20 830 value = ((channelSide == 1) ? dwells[registerno].a_dwell1_ov_time : dwells[registerno].b_dwell1_ov_time);
mfwic 0:44a3005d4f20 831
mfwic 1:9f8583ba2431 832 sprintf(strbuf, " [%d] dwell 1 overvoltage time = %0.3f ms", registerno, value);
mfwic 1:9f8583ba2431 833 sendSerial(strbuf);
mfwic 0:44a3005d4f20 834 return;
mfwic 0:44a3005d4f20 835 }
mfwic 0:44a3005d4f20 836
mfwic 0:44a3005d4f20 837 if (!strcmp(commandString, "DWL2AMPL"))
mfwic 0:44a3005d4f20 838 {
mfwic 0:44a3005d4f20 839 if (!readback)
mfwic 0:44a3005d4f20 840 {
mfwic 0:44a3005d4f20 841 setSingleVariable(&ch[chpair][registerno].a_dwell2_volts, &ch[chpair][registerno].b_dwell2_volts, MIN_VOLTAGE, MAX_VOLTAGE);
mfwic 0:44a3005d4f20 842
mfwic 1:9f8583ba2431 843 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 844 sendSerial(strbuf);
mfwic 0:44a3005d4f20 845 }
mfwic 0:44a3005d4f20 846
mfwic 0:44a3005d4f20 847 value = ((channelSide == 1) ? ch[chpair][registerno].a_dwell2_volts : ch[chpair][registerno].b_dwell2_volts);
mfwic 0:44a3005d4f20 848
mfwic 1:9f8583ba2431 849 sprintf(strbuf, " [%d%c, %d] dwell 2 peak amplitude = %0.3f V", chpair, chsgl, registerno, value);
mfwic 1:9f8583ba2431 850 sendSerial(strbuf);
mfwic 0:44a3005d4f20 851 return;
mfwic 0:44a3005d4f20 852 }
mfwic 0:44a3005d4f20 853
mfwic 0:44a3005d4f20 854 if (!strcmp(commandString,"DWL2"))
mfwic 0:44a3005d4f20 855 {
mfwic 0:44a3005d4f20 856 if (!readback)
mfwic 0:44a3005d4f20 857 {
mfwic 0:44a3005d4f20 858 // Set dwell 2 time
mfwic 0:44a3005d4f20 859 setSingleVariable(&dwells[registerno].a_dwell2_time, &dwells[registerno].b_dwell2_time, MIN_DWELL_TIME_MS, MAX_DWELL_TIME_MS);
mfwic 0:44a3005d4f20 860
mfwic 1:9f8583ba2431 861 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 862 sendSerial(strbuf);
mfwic 0:44a3005d4f20 863 }
mfwic 0:44a3005d4f20 864
mfwic 0:44a3005d4f20 865 value = ((channelSide == 1) ? dwells[registerno].a_dwell2_time : dwells[registerno].b_dwell2_time);
mfwic 0:44a3005d4f20 866
mfwic 1:9f8583ba2431 867 sprintf(strbuf, " [%d] dwell 2 time = %0.3f ms", registerno, value);
mfwic 1:9f8583ba2431 868 sendSerial(strbuf);
mfwic 0:44a3005d4f20 869 return;
mfwic 0:44a3005d4f20 870 }
mfwic 0:44a3005d4f20 871
mfwic 0:44a3005d4f20 872 if (!strcmp(commandString, "DWL2_OV"))
mfwic 0:44a3005d4f20 873 {
mfwic 0:44a3005d4f20 874 if (!readback)
mfwic 0:44a3005d4f20 875 {
mfwic 0:44a3005d4f20 876 setSingleVariable(&ch[chpair][registerno].a_dwell2_ov, &ch[chpair][registerno].b_dwell2_ov, MIN_VOLTAGE, MAX_VOLTAGE);
mfwic 0:44a3005d4f20 877
mfwic 1:9f8583ba2431 878 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 879 sendSerial(strbuf);
mfwic 0:44a3005d4f20 880 }
mfwic 0:44a3005d4f20 881
mfwic 0:44a3005d4f20 882 value = ((channelSide == 1) ? ch[chpair][registerno].a_dwell2_ov : ch[chpair][registerno].b_dwell2_ov);
mfwic 0:44a3005d4f20 883
mfwic 1:9f8583ba2431 884 sprintf(strbuf, " [%d%c, %d] dwell 2 overvoltage = %0.3f V", chpair, chsgl, registerno, value);
mfwic 1:9f8583ba2431 885 sendSerial(strbuf);
mfwic 0:44a3005d4f20 886 return;
mfwic 0:44a3005d4f20 887 }
mfwic 0:44a3005d4f20 888
mfwic 0:44a3005d4f20 889 if (!strcmp(commandString, "DWL2_OV_TIME"))
mfwic 0:44a3005d4f20 890 {
mfwic 0:44a3005d4f20 891 if (!readback)
mfwic 0:44a3005d4f20 892 {
mfwic 0:44a3005d4f20 893 // Set dwell 2 overvoltage time
mfwic 0:44a3005d4f20 894 setSingleVariable(&dwells[registerno].a_dwell2_ov_time, &dwells[registerno].b_dwell2_ov_time, MIN_DWELL_TIME_MS, MAX_DWELL_TIME_MS);
mfwic 0:44a3005d4f20 895
mfwic 1:9f8583ba2431 896 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 897 sendSerial(strbuf);
mfwic 0:44a3005d4f20 898 }
mfwic 0:44a3005d4f20 899
mfwic 0:44a3005d4f20 900 value = ((channelSide == 1) ? dwells[registerno].a_dwell2_ov_time : dwells[registerno].b_dwell2_ov_time);
mfwic 0:44a3005d4f20 901
mfwic 1:9f8583ba2431 902 sprintf(strbuf, " [%d] dwell 2 overvoltage time = %0.3f ms", registerno, value);
mfwic 1:9f8583ba2431 903 sendSerial(strbuf);
mfwic 0:44a3005d4f20 904 return;
mfwic 0:44a3005d4f20 905 }
mfwic 0:44a3005d4f20 906
mfwic 0:44a3005d4f20 907 if (!strcmp(commandString, "ENABLE"))
mfwic 0:44a3005d4f20 908 {
mfwic 0:44a3005d4f20 909 if (!readback)
mfwic 0:44a3005d4f20 910 {
mfwic 0:44a3005d4f20 911 ch[chpair][registerno].enabled = 1;
mfwic 0:44a3005d4f20 912
mfwic 1:9f8583ba2431 913 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 914 sendSerial(strbuf);
mfwic 0:44a3005d4f20 915 }
mfwic 0:44a3005d4f20 916
mfwic 1:9f8583ba2431 917 sprintf(strbuf, " [%d, %d] enable = %d", chpair, registerno, ch[chpair][registerno].enabled);
mfwic 1:9f8583ba2431 918 sendSerial(strbuf);
mfwic 0:44a3005d4f20 919 return;
mfwic 0:44a3005d4f20 920 }
mfwic 0:44a3005d4f20 921
mfwic 0:44a3005d4f20 922 if (!strcmp(commandString,"DISABLE"))
mfwic 0:44a3005d4f20 923 {
mfwic 0:44a3005d4f20 924 if (!readback)
mfwic 0:44a3005d4f20 925 {
mfwic 0:44a3005d4f20 926 ch[chpair][registerno].enabled = 0;
mfwic 0:44a3005d4f20 927
mfwic 1:9f8583ba2431 928 sprintf(strbuf, " Setting");
mfwic 1:9f8583ba2431 929 sendSerial(strbuf);
mfwic 0:44a3005d4f20 930 }
mfwic 0:44a3005d4f20 931
mfwic 1:9f8583ba2431 932 sprintf(strbuf, " [%d, %d] enable = %d", chpair, registerno, ch[chpair][registerno].enabled);
mfwic 1:9f8583ba2431 933 sendSerial(strbuf);
mfwic 0:44a3005d4f20 934 return;
mfwic 0:44a3005d4f20 935 }
mfwic 0:44a3005d4f20 936
mfwic 0:44a3005d4f20 937 if (strcmp(commandString, ""))
mfwic 0:44a3005d4f20 938 {
mfwic 0:44a3005d4f20 939 commandError = 1;
mfwic 0:44a3005d4f20 940 }
mfwic 1:9f8583ba2431 941 }*/
mfwic 0:44a3005d4f20 942
mfwic 0:44a3005d4f20 943
mfwic 0:44a3005d4f20 944 /************************************************************
mfwic 0:44a3005d4f20 945 * Routine: testMenu
mfwic 0:44a3005d4f20 946 * Input: none
mfwic 0:44a3005d4f20 947 * Returns: none
mfwic 0:44a3005d4f20 948 * Description:
mfwic 0:44a3005d4f20 949 * testMenu
mfwic 0:44a3005d4f20 950 **************************************************************/
mfwic 0:44a3005d4f20 951 void testMenu(void)
mfwic 0:44a3005d4f20 952 {
mfwic 0:44a3005d4f20 953 int ival;
mfwic 0:44a3005d4f20 954 int ch, dac;
mfwic 0:44a3005d4f20 955 float fval;
mfwic 0:44a3005d4f20 956 unsigned int data;
mfwic 0:44a3005d4f20 957
mfwic 0:44a3005d4f20 958 char commandString[80] = { 0 };
mfwic 5:09be5bbb5020 959
mfwic 0:44a3005d4f20 960
mfwic 0:44a3005d4f20 961 commandError = 0;
mfwic 0:44a3005d4f20 962 parseCommand(GET, commandString);
mfwic 0:44a3005d4f20 963
mfwic 0:44a3005d4f20 964 if (!strcmp(commandString, "LEDS")) // duh do I have to tell you?
mfwic 0:44a3005d4f20 965 {
mfwic 1:9f8583ba2431 966 //testLEDs();
mfwic 0:44a3005d4f20 967 return;
mfwic 0:44a3005d4f20 968 }
mfwic 0:44a3005d4f20 969
mfwic 0:44a3005d4f20 970 if (!strcmp(commandString, "SELFTEST"))
mfwic 0:44a3005d4f20 971 {
mfwic 0:44a3005d4f20 972 if ((rxbuf[bufloc] == 0x0D) || (rxbuf[bufloc] == 0))
mfwic 0:44a3005d4f20 973 {
mfwic 1:9f8583ba2431 974 //ival = DEFAULT_SELFTEST_BOARDS;
mfwic 1:9f8583ba2431 975 ival = 0;
mfwic 0:44a3005d4f20 976 }
mfwic 0:44a3005d4f20 977 else
mfwic 0:44a3005d4f20 978 {
mfwic 0:44a3005d4f20 979 ival = getival(SET);
mfwic 0:44a3005d4f20 980
mfwic 0:44a3005d4f20 981 if ((ival < 1) || (ival > MAX_BOARDS))
mfwic 0:44a3005d4f20 982 {
mfwic 1:9f8583ba2431 983 sprintf(strbuf, " Invalid number of channels/boards (range is 1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 984 sendSerial(strbuf);
mfwic 0:44a3005d4f20 985 commandError = 1;
mfwic 0:44a3005d4f20 986 return;
mfwic 0:44a3005d4f20 987 }
mfwic 0:44a3005d4f20 988 }
mfwic 0:44a3005d4f20 989
mfwic 1:9f8583ba2431 990 //selfTest(ival);
mfwic 0:44a3005d4f20 991 return;
mfwic 0:44a3005d4f20 992 }
mfwic 0:44a3005d4f20 993
mfwic 0:44a3005d4f20 994 if (!strcmp(commandString, "HVEN")) // high voltage enable
mfwic 0:44a3005d4f20 995 {
mfwic 0:44a3005d4f20 996 ival = getival(SET);
mfwic 1:9f8583ba2431 997 //hv_en = ival;
mfwic 0:44a3005d4f20 998 return;
mfwic 0:44a3005d4f20 999 }
mfwic 0:44a3005d4f20 1000
mfwic 0:44a3005d4f20 1001 if (!strcmp(commandString, "DAC"))
mfwic 0:44a3005d4f20 1002 {
mfwic 0:44a3005d4f20 1003 ch = getival(SET);
mfwic 0:44a3005d4f20 1004 getDelimiter();
mfwic 0:44a3005d4f20 1005 dac = getival(SET);
mfwic 0:44a3005d4f20 1006 getDelimiter();
mfwic 0:44a3005d4f20 1007 data = getival(SET);
mfwic 0:44a3005d4f20 1008
mfwic 0:44a3005d4f20 1009 validateChannel(ch);
mfwic 0:44a3005d4f20 1010 if (commandError) return;
mfwic 0:44a3005d4f20 1011 ch--;
mfwic 0:44a3005d4f20 1012
mfwic 1:9f8583ba2431 1013 //sendData((unsigned int)ch, (unsigned int)dac, data);
mfwic 1:9f8583ba2431 1014 sprintf(strbuf, " ch: %u dac: %u value: %u", ch + 1, dac, data);
mfwic 1:9f8583ba2431 1015 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1016 return;
mfwic 0:44a3005d4f20 1017 }
mfwic 0:44a3005d4f20 1018
mfwic 0:44a3005d4f20 1019 if (!strcmp(commandString, "DINIT"))
mfwic 0:44a3005d4f20 1020 {
mfwic 1:9f8583ba2431 1021 //initDACs();
mfwic 0:44a3005d4f20 1022 return;
mfwic 0:44a3005d4f20 1023 }
mfwic 0:44a3005d4f20 1024
mfwic 0:44a3005d4f20 1025 if (!strcmp(commandString, "FINIT"))
mfwic 0:44a3005d4f20 1026 {
mfwic 1:9f8583ba2431 1027 //formatParameterSector();
mfwic 0:44a3005d4f20 1028 return;
mfwic 0:44a3005d4f20 1029 }
mfwic 0:44a3005d4f20 1030
mfwic 0:44a3005d4f20 1031 if (!strcmp(commandString, "CINIT"))
mfwic 0:44a3005d4f20 1032 {
mfwic 1:9f8583ba2431 1033 //initCalParameters();
mfwic 1:9f8583ba2431 1034 sprintf(strbuf, " All calibration parameters set to default values");
mfwic 1:9f8583ba2431 1035 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1036 return;
mfwic 0:44a3005d4f20 1037 }
mfwic 1:9f8583ba2431 1038 /*
mfwic 0:44a3005d4f20 1039 if (!strcmp(commandString, "VOLTS"))
mfwic 0:44a3005d4f20 1040 {
mfwic 0:44a3005d4f20 1041 ch = getival(SET);
mfwic 0:44a3005d4f20 1042 getDelimiter();
mfwic 0:44a3005d4f20 1043 dac = getival(SET);
mfwic 0:44a3005d4f20 1044 getDelimiter();
mfwic 0:44a3005d4f20 1045 fval = getfval(SET);
mfwic 0:44a3005d4f20 1046
mfwic 0:44a3005d4f20 1047 validateChannel(ch);
mfwic 0:44a3005d4f20 1048 if (commandError) return;
mfwic 0:44a3005d4f20 1049 ch--;
mfwic 0:44a3005d4f20 1050
mfwic 0:44a3005d4f20 1051 if (dac == 1)
mfwic 0:44a3005d4f20 1052 {
mfwic 0:44a3005d4f20 1053 data = (unsigned int)(cal[ch].a_scale * fval + cal[ch].a_offset);
mfwic 0:44a3005d4f20 1054 dac = ADC_CH1;
mfwic 0:44a3005d4f20 1055 }
mfwic 0:44a3005d4f20 1056 else
mfwic 0:44a3005d4f20 1057 {
mfwic 0:44a3005d4f20 1058 data = (unsigned int)(cal[ch].b_scale * fval + cal[ch].b_offset);
mfwic 0:44a3005d4f20 1059 dac = ADC_CH2;
mfwic 0:44a3005d4f20 1060 }
mfwic 0:44a3005d4f20 1061
mfwic 0:44a3005d4f20 1062 sendData((unsigned int)ch, (unsigned int)dac, data);
mfwic 1:9f8583ba2431 1063 sprintf(strbuf, " ch: %u dac: %u value: %u", ch + 1, dac, data);
mfwic 1:9f8583ba2431 1064 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1065 return;
mfwic 0:44a3005d4f20 1066 }
mfwic 0:44a3005d4f20 1067
mfwic 0:44a3005d4f20 1068 if (!strcmp(commandString, "BENB")) // board enable bits
mfwic 0:44a3005d4f20 1069 {
mfwic 0:44a3005d4f20 1070 ival = getival(SET);
mfwic 0:44a3005d4f20 1071 setBoardEnables((unsigned int)ival);
mfwic 1:9f8583ba2431 1072 sprintf(strbuf, " Board Enable Bits = 0x%04x\r\n", ival);
mfwic 1:9f8583ba2431 1073 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1074 return;
mfwic 0:44a3005d4f20 1075 }
mfwic 0:44a3005d4f20 1076
mfwic 0:44a3005d4f20 1077 if (!strcmp(commandString, "BEN")) // board enable
mfwic 0:44a3005d4f20 1078 {
mfwic 0:44a3005d4f20 1079 ch = getival(SET);
mfwic 0:44a3005d4f20 1080 getDelimiter();
mfwic 0:44a3005d4f20 1081 ival = getival(SET);
mfwic 0:44a3005d4f20 1082
mfwic 0:44a3005d4f20 1083 validateChannel(ch);
mfwic 0:44a3005d4f20 1084 if (commandError) return;
mfwic 0:44a3005d4f20 1085 ch--;
mfwic 0:44a3005d4f20 1086
mfwic 0:44a3005d4f20 1087 setBoardEnable(ch, (unsigned int)ival);
mfwic 1:9f8583ba2431 1088 sprintf(strbuf, " Board Enable %d = %d\r\n", ch + 1, ival);
mfwic 1:9f8583ba2431 1089 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1090 return;
mfwic 0:44a3005d4f20 1091 }
mfwic 0:44a3005d4f20 1092
mfwic 0:44a3005d4f20 1093 if (!strcmp(commandString, "LD"))
mfwic 0:44a3005d4f20 1094 {
mfwic 0:44a3005d4f20 1095 ival = getival(SET);
mfwic 0:44a3005d4f20 1096
mfwic 0:44a3005d4f20 1097 if (ival)
mfwic 0:44a3005d4f20 1098 {
mfwic 0:44a3005d4f20 1099 tst_ld = 1;
mfwic 0:44a3005d4f20 1100 }
mfwic 0:44a3005d4f20 1101 else
mfwic 0:44a3005d4f20 1102 {
mfwic 0:44a3005d4f20 1103 tst_ld = 0;
mfwic 0:44a3005d4f20 1104 }
mfwic 0:44a3005d4f20 1105
mfwic 0:44a3005d4f20 1106 Delay(100);
mfwic 0:44a3005d4f20 1107 ival = dtst_out;
mfwic 1:9f8583ba2431 1108 sprintf(strbuf, " DTST_OUT = %d\r\n", ival);
mfwic 1:9f8583ba2431 1109 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1110 return;
mfwic 0:44a3005d4f20 1111 }
mfwic 0:44a3005d4f20 1112
mfwic 0:44a3005d4f20 1113 if (!strcmp(commandString, "SCK"))
mfwic 0:44a3005d4f20 1114 {
mfwic 0:44a3005d4f20 1115 ival = getival(SET);
mfwic 0:44a3005d4f20 1116
mfwic 0:44a3005d4f20 1117 if (ival)
mfwic 0:44a3005d4f20 1118 {
mfwic 0:44a3005d4f20 1119 sclk = 1;
mfwic 0:44a3005d4f20 1120 }
mfwic 0:44a3005d4f20 1121 else
mfwic 0:44a3005d4f20 1122 {
mfwic 0:44a3005d4f20 1123 sclk = 0;
mfwic 0:44a3005d4f20 1124 }
mfwic 0:44a3005d4f20 1125
mfwic 0:44a3005d4f20 1126 ival = dtst_out;
mfwic 1:9f8583ba2431 1127 sprintf(strbuf, " DTST_OUT = %d\r\n", ival);
mfwic 1:9f8583ba2431 1128 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1129 return;
mfwic 0:44a3005d4f20 1130 }
mfwic 0:44a3005d4f20 1131
mfwic 0:44a3005d4f20 1132 if (!strcmp(commandString, "FLASHDEMO")) // flash test
mfwic 0:44a3005d4f20 1133 {
mfwic 0:44a3005d4f20 1134 flashdemo();
mfwic 0:44a3005d4f20 1135 return;
mfwic 0:44a3005d4f20 1136 }
mfwic 0:44a3005d4f20 1137
mfwic 0:44a3005d4f20 1138 if (!strcmp(commandString, "HVGOOD"))
mfwic 0:44a3005d4f20 1139 {
mfwic 1:9f8583ba2431 1140 sprintf(strbuf, " HVCMP1: %i HVCMP2: %i", (int)hv_cmptr1, (int)hv_cmptr2);
mfwic 1:9f8583ba2431 1141 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1142 return;
mfwic 0:44a3005d4f20 1143 }
mfwic 1:9f8583ba2431 1144 */
mfwic 0:44a3005d4f20 1145 if (strcmp(commandString, ""))
mfwic 0:44a3005d4f20 1146 {
mfwic 0:44a3005d4f20 1147 commandError = 1;
mfwic 0:44a3005d4f20 1148 }
mfwic 0:44a3005d4f20 1149 }
mfwic 0:44a3005d4f20 1150
mfwic 0:44a3005d4f20 1151 /************************************************************
mfwic 0:44a3005d4f20 1152 * Routine: setDwellTime
mfwic 0:44a3005d4f20 1153 * Input: dwellType (enum)
mfwic 0:44a3005d4f20 1154 * Returns: none
mfwic 0:44a3005d4f20 1155 * Description:
mfwic 0:44a3005d4f20 1156 * Set the specified dwell time in [registerno] to the indicated
mfwic 0:44a3005d4f20 1157 * number of milliseconds
mfwic 0:44a3005d4f20 1158 **************************************************************/
mfwic 1:9f8583ba2431 1159 /*enum { DWELL_1_OV_TIME, DWELL_1_TIME, DWELL_2_OV_TIME, DWELL_2_TIME };
mfwic 0:44a3005d4f20 1160
mfwic 0:44a3005d4f20 1161 void setDwellTime(int dwellType)
mfwic 0:44a3005d4f20 1162 {
mfwic 0:44a3005d4f20 1163 char channelSideChar, setSingleChannel;
mfwic 0:44a3005d4f20 1164 float fValue;
mfwic 0:44a3005d4f20 1165
mfwic 0:44a3005d4f20 1166 if (readback)
mfwic 0:44a3005d4f20 1167 {
mfwic 0:44a3005d4f20 1168 if (dwellType == DWELL_1_OV_TIME)
mfwic 0:44a3005d4f20 1169 {
mfwic 1:9f8583ba2431 1170 sprintf(strbuf, "\r\n Channel A Dwell 1 OV Time [%i] = %0.3f", registerno + 1, dwells[registerno].a_dwell1_ov_time);
mfwic 1:9f8583ba2431 1171 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1172 sprintf(strbuf, "\r\n Channel B Dwell 1 OV Time [%i] = %0.3f", registerno + 1, dwells[registerno].b_dwell1_ov_time);
mfwic 1:9f8583ba2431 1173 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1174 }
mfwic 1:9f8583ba2431 1175
mfwic 0:44a3005d4f20 1176 }
mfwic 0:44a3005d4f20 1177 else if (running == 1)
mfwic 0:44a3005d4f20 1178 {
mfwic 1:9f8583ba2431 1179 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1180 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1181 }
mfwic 0:44a3005d4f20 1182 else
mfwic 0:44a3005d4f20 1183 {
mfwic 0:44a3005d4f20 1184 // Find the next command string character
mfwic 0:44a3005d4f20 1185 while (rxbuf[bufloc] == ' ' || rxbuf[bufloc] == '[' && rxbuf[bufloc] != 0x0D ){ bufloc++; }
mfwic 0:44a3005d4f20 1186
mfwic 0:44a3005d4f20 1187 // Is the user setting a single channel or a channel pair?
mfwic 0:44a3005d4f20 1188 channelSideChar = toupper(rxbuf[bufloc]);
mfwic 0:44a3005d4f20 1189 setSingleChannel = ((channelSideChar == 'A') || (channelSideChar == 'B'));
mfwic 0:44a3005d4f20 1190
mfwic 0:44a3005d4f20 1191 if (setSingleChannel)
mfwic 0:44a3005d4f20 1192 {
mfwic 0:44a3005d4f20 1193 chsgl = channelSideChar;
mfwic 0:44a3005d4f20 1194
mfwic 0:44a3005d4f20 1195 // Skip over the channel side character
mfwic 0:44a3005d4f20 1196 bufloc++;
mfwic 0:44a3005d4f20 1197
mfwic 0:44a3005d4f20 1198 // Find the next command string character
mfwic 0:44a3005d4f20 1199 while (rxbuf[bufloc] == ' ' || rxbuf[bufloc] == ',' && rxbuf[bufloc] != 0x0D ){ bufloc++; }
mfwic 0:44a3005d4f20 1200 }
mfwic 0:44a3005d4f20 1201
mfwic 0:44a3005d4f20 1202 // Back up because the current character should be the start of the register
mfwic 0:44a3005d4f20 1203 // number but validateInt() is going to advance one character before calling
mfwic 0:44a3005d4f20 1204 // atof()
mfwic 0:44a3005d4f20 1205 bufloc--;
mfwic 0:44a3005d4f20 1206
mfwic 0:44a3005d4f20 1207 if (!validateInt(SET, 1, MAX_REGISTERS, &registerno))
mfwic 0:44a3005d4f20 1208 {
mfwic 1:9f8583ba2431 1209 sprintf(strbuf, " Invalid register number (1 - %d)", MAX_REGISTERS);
mfwic 1:9f8583ba2431 1210 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1211 commandError = 1;
mfwic 0:44a3005d4f20 1212 }
mfwic 0:44a3005d4f20 1213
mfwic 0:44a3005d4f20 1214 if (!commandError)
mfwic 0:44a3005d4f20 1215 {
mfwic 0:44a3005d4f20 1216 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1217 registerno--;
mfwic 0:44a3005d4f20 1218
mfwic 0:44a3005d4f20 1219 // Skip over the register number
mfwic 0:44a3005d4f20 1220 while (isdigit(rxbuf[bufloc]) && rxbuf[bufloc] != 0x0D ){ bufloc++; }
mfwic 0:44a3005d4f20 1221
mfwic 0:44a3005d4f20 1222 // Skip over white space and delimiters
mfwic 0:44a3005d4f20 1223 while (rxbuf[bufloc] == ' ' || rxbuf[bufloc] == ',' && rxbuf[bufloc] != 0x0D ){ bufloc++; }
mfwic 0:44a3005d4f20 1224
mfwic 0:44a3005d4f20 1225 // Back up because the current character should be the start of the value
mfwic 0:44a3005d4f20 1226 // but validateEntry() is going to advance one character before calling
mfwic 0:44a3005d4f20 1227 // atof()
mfwic 0:44a3005d4f20 1228 bufloc--;
mfwic 0:44a3005d4f20 1229
mfwic 0:44a3005d4f20 1230 // Read and validate the dwell time value
mfwic 0:44a3005d4f20 1231 if (!validateEntry(SET, MIN_DWELL_TIME_MS, MAX_DWELL_TIME_MS, &fValue))
mfwic 0:44a3005d4f20 1232 {
mfwic 1:9f8583ba2431 1233 sprintf(strbuf, " Invalid dwell time");
mfwic 1:9f8583ba2431 1234 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1235 commandError = 1;
mfwic 0:44a3005d4f20 1236 }
mfwic 0:44a3005d4f20 1237 }
mfwic 0:44a3005d4f20 1238
mfwic 0:44a3005d4f20 1239 if (!commandError)
mfwic 0:44a3005d4f20 1240 {
mfwic 0:44a3005d4f20 1241 if (dwellType == DWELL_1_OV_TIME)
mfwic 0:44a3005d4f20 1242 {
mfwic 0:44a3005d4f20 1243 if ((!setSingleChannel) || (channelSideChar == 'A'))
mfwic 0:44a3005d4f20 1244 {
mfwic 0:44a3005d4f20 1245 dwells[registerno].a_dwell1_ov_time = fValue;
mfwic 1:9f8583ba2431 1246 sprintf(strbuf, "\r\n Channel A Dwell 1 OV Time [%i] = %0.3f", registerno + 1, dwells[registerno].a_dwell1_ov_time);
mfwic 1:9f8583ba2431 1247 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1248 }
mfwic 0:44a3005d4f20 1249 if ((!setSingleChannel) || (channelSideChar == 'B'))
mfwic 0:44a3005d4f20 1250 {
mfwic 0:44a3005d4f20 1251 dwells[registerno].b_dwell1_ov_time = fValue;
mfwic 1:9f8583ba2431 1252 sprintf(strbuf, "\r\n Channel B Dwell 1 OV Time [%i] = %0.3f", registerno + 1, dwells[registerno].b_dwell1_ov_time);
mfwic 1:9f8583ba2431 1253 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1254 }
mfwic 0:44a3005d4f20 1255 }
mfwic 1:9f8583ba2431 1256
mfwic 0:44a3005d4f20 1257 }
mfwic 0:44a3005d4f20 1258 }
mfwic 1:9f8583ba2431 1259 }*/
mfwic 0:44a3005d4f20 1260
mfwic 0:44a3005d4f20 1261
mfwic 0:44a3005d4f20 1262 // Clear the specified register
mfwic 1:9f8583ba2431 1263 /*
mfwic 0:44a3005d4f20 1264 void clearRegister(unsigned int reg)
mfwic 0:44a3005d4f20 1265 {
mfwic 0:44a3005d4f20 1266 int i;
mfwic 0:44a3005d4f20 1267
mfwic 0:44a3005d4f20 1268 dwells[reg].a_dwell1_time = 0;
mfwic 0:44a3005d4f20 1269 dwells[reg].a_dwell2_time = 0;
mfwic 0:44a3005d4f20 1270 dwells[reg].a_dwell1_ov_time = 0;
mfwic 0:44a3005d4f20 1271 dwells[reg].a_dwell2_ov_time = 0;
mfwic 0:44a3005d4f20 1272 dwells[reg].b_dwell1_time = 0;
mfwic 0:44a3005d4f20 1273 dwells[reg].b_dwell2_time = 0;
mfwic 0:44a3005d4f20 1274 dwells[reg].b_dwell1_ov_time = 0;
mfwic 0:44a3005d4f20 1275 dwells[reg].b_dwell2_ov_time = 0;
mfwic 0:44a3005d4f20 1276
mfwic 0:44a3005d4f20 1277 for (i = 0; i < MAX_BOARDS; i++)
mfwic 0:44a3005d4f20 1278 {
mfwic 0:44a3005d4f20 1279 ch[i][reg].enabled = 0;
mfwic 0:44a3005d4f20 1280 ch[i][reg].installed = 0;
mfwic 0:44a3005d4f20 1281 ch[i][reg].inverted = 0;
mfwic 0:44a3005d4f20 1282 ch[i][reg].differential_dwell = 1;
mfwic 0:44a3005d4f20 1283
mfwic 0:44a3005d4f20 1284 ch[i][reg].a_dwell1_volts = 0;
mfwic 0:44a3005d4f20 1285 ch[i][reg].a_dwell2_volts = 0;
mfwic 0:44a3005d4f20 1286 ch[i][reg].a_dwell1_ov = 0;
mfwic 0:44a3005d4f20 1287 ch[i][reg].a_dwell2_ov = 0;
mfwic 0:44a3005d4f20 1288 ch[i][reg].b_dwell1_volts = 0;
mfwic 0:44a3005d4f20 1289 ch[i][reg].b_dwell2_volts = 0;
mfwic 0:44a3005d4f20 1290 ch[i][reg].b_dwell1_ov = 0;
mfwic 0:44a3005d4f20 1291 ch[i][reg].b_dwell2_ov = 0;
mfwic 0:44a3005d4f20 1292 }
mfwic 1:9f8583ba2431 1293 }*/
mfwic 0:44a3005d4f20 1294
mfwic 0:44a3005d4f20 1295
mfwic 0:44a3005d4f20 1296 /************************************************************
mfwic 0:44a3005d4f20 1297 * Routine: doCommand
mfwic 0:44a3005d4f20 1298 * Input: none
mfwic 0:44a3005d4f20 1299 * Returns: none
mfwic 0:44a3005d4f20 1300 * Description:
mfwic 0:44a3005d4f20 1301 * This is the start of the command string.
mfwic 0:44a3005d4f20 1302 **************************************************************/
mfwic 0:44a3005d4f20 1303 void doCommand(void)
mfwic 0:44a3005d4f20 1304 {
mfwic 0:44a3005d4f20 1305 int channelNum, channelSide, numPoints, i, ival;
mfwic 0:44a3005d4f20 1306 char channelSideChar;
mfwic 0:44a3005d4f20 1307 unsigned int boardEnables;
mfwic 0:44a3005d4f20 1308
mfwic 0:44a3005d4f20 1309 char commandString[80] = { 0 };
mfwic 0:44a3005d4f20 1310
mfwic 0:44a3005d4f20 1311 bufloc = 0;
mfwic 0:44a3005d4f20 1312 commandError = 0;
mfwic 0:44a3005d4f20 1313
mfwic 0:44a3005d4f20 1314 parseCommand(GET, commandString);
mfwic 0:44a3005d4f20 1315
mfwic 1:9f8583ba2431 1316 if (!strcmp(commandString, "MENU"))
mfwic 1:9f8583ba2431 1317 {
mfwic 1:9f8583ba2431 1318 menuRedraw();//RK: menuRedraw is empty.
mfwic 1:9f8583ba2431 1319 }
mfwic 3:d8948c5b2951 1320 else if (!strcmp(commandString, "HELP"))
mfwic 3:d8948c5b2951 1321 {
mfwic 3:d8948c5b2951 1322 menuRedraw();//RK: menuRedraw is empty.
mfwic 3:d8948c5b2951 1323 }
mfwic 1:9f8583ba2431 1324 else if (!strcmp(commandString, "BRDS"))
mfwic 1:9f8583ba2431 1325 // BRDS is used to get/set the wr_out value.
mfwic 5:09be5bbb5020 1326 // The integer value of boardsActive is used to change wr_out via setBoardEnables(boardsActive).
mfwic 1:9f8583ba2431 1327 // Slots 12 to 0 are activated with the wr_out signals
mfwic 1:9f8583ba2431 1328 // wr_out[13] = slots[12:0]
mfwic 0:44a3005d4f20 1329 {
mfwic 5:09be5bbb5020 1330
mfwic 5:09be5bbb5020 1331 boardsActive = commandData;
mfwic 5:09be5bbb5020 1332
mfwic 0:44a3005d4f20 1333 if (readback)
mfwic 0:44a3005d4f20 1334 {
mfwic 5:09be5bbb5020 1335 sprintf(strbuf, " %d", boardsActive);
mfwic 1:9f8583ba2431 1336 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1337 }
mfwic 1:9f8583ba2431 1338 //else if (running == 1)
mfwic 1:9f8583ba2431 1339 //{
mfwic 1:9f8583ba2431 1340 // sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1341 // sendSerial(strbuf);
mfwic 1:9f8583ba2431 1342 //}
mfwic 0:44a3005d4f20 1343 else
mfwic 0:44a3005d4f20 1344 {
mfwic 5:09be5bbb5020 1345 if(checkRange(boardsActive, 0, 63) == 1){
mfwic 4:db38665c3727 1346 setBoardEnables(binCode);
mfwic 1:9f8583ba2431 1347 }else{
mfwic 5:09be5bbb5020 1348 showRangeError(1, boardsActive, 0.0);
mfwic 1:9f8583ba2431 1349 }
mfwic 1:9f8583ba2431 1350 }
mfwic 1:9f8583ba2431 1351 }
mfwic 1:9f8583ba2431 1352 else if (!strcmp(commandString, "MULT"))
mfwic 1:9f8583ba2431 1353 // MULT is used to get/set the en_out value.
mfwic 5:09be5bbb5020 1354 // The integer value of boardMults is used to change en_out via setBoardWeights(boardMults).
mfwic 1:9f8583ba2431 1355 // en_out are binary weighted signals that activate groups of DC-DC converters on the slot cards.
mfwic 1:9f8583ba2431 1356 // en_out[6] = {en32, en16, en8, en4, en2, en1}
mfwic 1:9f8583ba2431 1357 {
mfwic 5:09be5bbb5020 1358 boardMults = commandData;
mfwic 5:09be5bbb5020 1359
mfwic 1:9f8583ba2431 1360 if (readback)
mfwic 1:9f8583ba2431 1361 {
mfwic 5:09be5bbb5020 1362 sprintf(strbuf, " %d", boardMults);
mfwic 1:9f8583ba2431 1363 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1364 }
mfwic 1:9f8583ba2431 1365 //else if (running == 1)
mfwic 1:9f8583ba2431 1366 //{
mfwic 1:9f8583ba2431 1367 // sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1368 // sendSerial(strbuf);
mfwic 1:9f8583ba2431 1369 //}
mfwic 1:9f8583ba2431 1370 else
mfwic 1:9f8583ba2431 1371 {
mfwic 5:09be5bbb5020 1372 if(checkRange(boardMults, 0, 63) == 1){
mfwic 4:db38665c3727 1373 setBoardWeights(thermCode);
mfwic 1:9f8583ba2431 1374 }else{
mfwic 5:09be5bbb5020 1375 showRangeError(1, boardMults, 0.0);
mfwic 1:9f8583ba2431 1376 }
mfwic 0:44a3005d4f20 1377 }
mfwic 0:44a3005d4f20 1378 }
mfwic 0:44a3005d4f20 1379 else if (!strcmp(commandString, "ALLOFF"))
mfwic 0:44a3005d4f20 1380 {
mfwic 1:9f8583ba2431 1381 //hv_en = 1;
mfwic 0:44a3005d4f20 1382 setBoardEnables(ALLOFF);
mfwic 0:44a3005d4f20 1383 }
mfwic 0:44a3005d4f20 1384 else if (!strcmp(commandString, "ALLON"))
mfwic 0:44a3005d4f20 1385 {
mfwic 1:9f8583ba2431 1386 //hv_en = 0;
mfwic 4:db38665c3727 1387 setBoardEnables((unsigned int *)allon);
mfwic 0:44a3005d4f20 1388 }
mfwic 0:44a3005d4f20 1389 else if (!strcmp(commandString, "DWL1_OV_TIME"))
mfwic 0:44a3005d4f20 1390 {
mfwic 1:9f8583ba2431 1391 //setDwellTime(DWELL_1_OV_TIME);
mfwic 0:44a3005d4f20 1392 }
mfwic 0:44a3005d4f20 1393 else if (!strcmp(commandString, "DWL1_TIME"))
mfwic 0:44a3005d4f20 1394 {
mfwic 1:9f8583ba2431 1395 //setDwellTime(DWELL_1_TIME);
mfwic 0:44a3005d4f20 1396 }
mfwic 0:44a3005d4f20 1397 else if (!strcmp(commandString, "RUN"))
mfwic 0:44a3005d4f20 1398 {
mfwic 0:44a3005d4f20 1399 // Skip over any white space and the optional '[' character
mfwic 0:44a3005d4f20 1400 while ((isspace(rxbuf[bufloc])) || (rxbuf[bufloc] == '[')) bufloc++;
mfwic 0:44a3005d4f20 1401
mfwic 0:44a3005d4f20 1402 if (rxbuf[bufloc] == '0')
mfwic 0:44a3005d4f20 1403 {
mfwic 1:9f8583ba2431 1404 stopConverter();
mfwic 1:9f8583ba2431 1405 //setDacsToZeroVolts();
mfwic 0:44a3005d4f20 1406 }
mfwic 1:9f8583ba2431 1407 else if ((rxbuf[bufloc] > '0') && (rxbuf[bufloc] < '0' + MAX_BOARDS))
mfwic 0:44a3005d4f20 1408 {
mfwic 0:44a3005d4f20 1409 ival = atoi(&rxbuf[bufloc]);
mfwic 0:44a3005d4f20 1410 ival--;
mfwic 0:44a3005d4f20 1411
mfwic 0:44a3005d4f20 1412 if (running == 0)
mfwic 0:44a3005d4f20 1413 {
mfwic 1:9f8583ba2431 1414 //setDacsToZeroVolts();
mfwic 1:9f8583ba2431 1415 //Delay(1000);
mfwic 1:9f8583ba2431 1416 wait(0.5);
mfwic 1:9f8583ba2431 1417 boardsActive = ival;
mfwic 1:9f8583ba2431 1418 startConverter(boardsActive);
mfwic 0:44a3005d4f20 1419 }
mfwic 0:44a3005d4f20 1420 else
mfwic 0:44a3005d4f20 1421 {
mfwic 0:44a3005d4f20 1422 // Compare the board enable flags between registers
mfwic 0:44a3005d4f20 1423 boardEnables = checkRegisterCompatibility(ival);
mfwic 0:44a3005d4f20 1424
mfwic 0:44a3005d4f20 1425 // If board enable flags match, change the register set
mfwic 0:44a3005d4f20 1426 if (boardEnables == 0)
mfwic 0:44a3005d4f20 1427 {
mfwic 1:9f8583ba2431 1428 boardsActive = ival;
mfwic 0:44a3005d4f20 1429 }
mfwic 0:44a3005d4f20 1430 else
mfwic 0:44a3005d4f20 1431 {
mfwic 1:9f8583ba2431 1432 sprintf(strbuf, " Board enable flags do not match (0x%08x)", boardEnables);
mfwic 1:9f8583ba2431 1433 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1434 }
mfwic 0:44a3005d4f20 1435 }
mfwic 0:44a3005d4f20 1436 }
mfwic 0:44a3005d4f20 1437 else
mfwic 0:44a3005d4f20 1438 {
mfwic 1:9f8583ba2431 1439 sprintf(strbuf, " Invalid register number (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 1440 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1441 commandError = 1;
mfwic 0:44a3005d4f20 1442 }
mfwic 0:44a3005d4f20 1443 }
mfwic 0:44a3005d4f20 1444 else if (!strcmp(commandString, "STOP"))
mfwic 0:44a3005d4f20 1445 {
mfwic 1:9f8583ba2431 1446 stopConverter();
mfwic 0:44a3005d4f20 1447 setBoardEnables(ALLOFF);
mfwic 1:9f8583ba2431 1448 //hv_en = OFF;
mfwic 0:44a3005d4f20 1449 }
mfwic 1:9f8583ba2431 1450 /* else if (!strcmp(commandString, "CLEAR"))
mfwic 0:44a3005d4f20 1451 {
mfwic 0:44a3005d4f20 1452 if (running == 1)
mfwic 0:44a3005d4f20 1453 {
mfwic 1:9f8583ba2431 1454 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1455 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1456 commandError = 1;
mfwic 0:44a3005d4f20 1457 }
mfwic 0:44a3005d4f20 1458 else if (!validateInt(SET, 0, MAX_REGISTERS, &registerno))
mfwic 0:44a3005d4f20 1459 {
mfwic 1:9f8583ba2431 1460 sprintf(strbuf, " Invalid register number (1 - %d)", MAX_REGISTERS);
mfwic 1:9f8583ba2431 1461 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1462 commandError = 1;
mfwic 0:44a3005d4f20 1463 }
mfwic 0:44a3005d4f20 1464
mfwic 0:44a3005d4f20 1465 if (!commandError)
mfwic 0:44a3005d4f20 1466 {
mfwic 0:44a3005d4f20 1467 if (registerno == 0)
mfwic 0:44a3005d4f20 1468 {
mfwic 0:44a3005d4f20 1469 frequency = 1000;
mfwic 0:44a3005d4f20 1470
mfwic 0:44a3005d4f20 1471 clearRegister(0);
mfwic 0:44a3005d4f20 1472 clearRegister(1);
mfwic 0:44a3005d4f20 1473 clearRegister(2);
mfwic 0:44a3005d4f20 1474 clearRegister(3);
mfwic 0:44a3005d4f20 1475
mfwic 0:44a3005d4f20 1476 initCalParameters();
mfwic 0:44a3005d4f20 1477
mfwic 1:9f8583ba2431 1478 sprintf(strbuf, " All parameters reset to default values");
mfwic 1:9f8583ba2431 1479 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1480 }
mfwic 0:44a3005d4f20 1481 else
mfwic 0:44a3005d4f20 1482 {
mfwic 0:44a3005d4f20 1483 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1484 registerno--;
mfwic 0:44a3005d4f20 1485
mfwic 0:44a3005d4f20 1486 clearRegister(registerno);
mfwic 0:44a3005d4f20 1487
mfwic 1:9f8583ba2431 1488 sprintf(strbuf, " [x, %d] voltages are 0", registerno);
mfwic 1:9f8583ba2431 1489 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1490 }
mfwic 0:44a3005d4f20 1491 }
mfwic 1:9f8583ba2431 1492 }*/
mfwic 0:44a3005d4f20 1493 else if(!strcmp(commandString, "TEST"))
mfwic 0:44a3005d4f20 1494 {
mfwic 0:44a3005d4f20 1495 if (running == 1)
mfwic 0:44a3005d4f20 1496 {
mfwic 1:9f8583ba2431 1497 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1498 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1499 }
mfwic 0:44a3005d4f20 1500 else
mfwic 0:44a3005d4f20 1501 {
mfwic 0:44a3005d4f20 1502 testMenu();
mfwic 0:44a3005d4f20 1503 }
mfwic 0:44a3005d4f20 1504 }
mfwic 1:9f8583ba2431 1505 /* else if(!strcmp(commandString, "READ"))
mfwic 0:44a3005d4f20 1506 {
mfwic 0:44a3005d4f20 1507 if (!validateInt(SET, 1, MAX_REGISTERS, &registerno))
mfwic 0:44a3005d4f20 1508 {
mfwic 1:9f8583ba2431 1509 sprintf(strbuf, " Invalid register number (1 - %d)", MAX_REGISTERS);
mfwic 1:9f8583ba2431 1510 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1511 commandError = 1;
mfwic 0:44a3005d4f20 1512 }
mfwic 0:44a3005d4f20 1513
mfwic 0:44a3005d4f20 1514 if (!commandError)
mfwic 0:44a3005d4f20 1515 {
mfwic 0:44a3005d4f20 1516 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1517 registerno--;
mfwic 0:44a3005d4f20 1518
mfwic 1:9f8583ba2431 1519 sprintf(strbuf, "\r\n Register [x, %d]: ", registerno + 1);
mfwic 1:9f8583ba2431 1520 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1521 sprintf(strbuf, "\r\n frequency = %0.3f Hz", frequency);
mfwic 1:9f8583ba2431 1522 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1523 sprintf(strbuf, "\r\n dwell1_ov_time = %0.3f ms", dwells[registerno].a_dwell1_ov_time);
mfwic 1:9f8583ba2431 1524 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1525 sprintf(strbuf, "\r\n dwell1_time = %0.3f ms", dwells[registerno].a_dwell1_time);
mfwic 1:9f8583ba2431 1526 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1527
mfwic 0:44a3005d4f20 1528 for (i = 0; i < MAX_BOARDS; i++)
mfwic 0:44a3005d4f20 1529 {
mfwic 1:9f8583ba2431 1530 sprintf(strbuf, "\r\n\r\n Register [%d, %d]: ", i + 1, registerno + 1);
mfwic 1:9f8583ba2431 1531 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1532 sprintf(strbuf, "\r\n enabled = %d", ch[i][registerno].enabled);
mfwic 1:9f8583ba2431 1533 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1534 sprintf(strbuf, "\r\n a_dwell1_ov = %0.3f V", ch[i][registerno].a_dwell1_ov);
mfwic 1:9f8583ba2431 1535 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1536 sprintf(strbuf, "\r\n a_dwell1_volts = %0.3f V", ch[i][registerno].a_dwell1_volts);
mfwic 1:9f8583ba2431 1537 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1538
mfwic 0:44a3005d4f20 1539 }
mfwic 0:44a3005d4f20 1540 }
mfwic 1:9f8583ba2431 1541 }*/
mfwic 1:9f8583ba2431 1542 /* else if(!strcmp(commandString, "CAL"))
mfwic 0:44a3005d4f20 1543 {
mfwic 0:44a3005d4f20 1544 if (running == 1)
mfwic 0:44a3005d4f20 1545 {
mfwic 1:9f8583ba2431 1546 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1547 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1548 commandError = 1;
mfwic 0:44a3005d4f20 1549 }
mfwic 0:44a3005d4f20 1550 else if (!validateInt(SET, 1, MAX_BOARDS, &channelNum))
mfwic 0:44a3005d4f20 1551 {
mfwic 1:9f8583ba2431 1552 sprintf(strbuf, " Invalid board number (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 1553 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1554 commandError = 1;
mfwic 0:44a3005d4f20 1555 }
mfwic 0:44a3005d4f20 1556
mfwic 0:44a3005d4f20 1557 if (!commandError)
mfwic 0:44a3005d4f20 1558 {
mfwic 0:44a3005d4f20 1559 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1560 channelNum--;
mfwic 0:44a3005d4f20 1561
mfwic 0:44a3005d4f20 1562 // Skip over digits parsed as part of the atoi() call
mfwic 0:44a3005d4f20 1563 while (isdigit(rxbuf[bufloc])) bufloc++;
mfwic 0:44a3005d4f20 1564
mfwic 0:44a3005d4f20 1565 // Does the user simply want to read the current cal parameters?
mfwic 0:44a3005d4f20 1566 if (rxbuf[bufloc] == '?')
mfwic 0:44a3005d4f20 1567 {
mfwic 1:9f8583ba2431 1568 sprintf(strbuf, "\r\nChannel %dA Scale = %0.4f Offset = %0.4f", channelNum, cal[channelNum].a_scale, cal[channelNum].a_offset);
mfwic 1:9f8583ba2431 1569 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1570 sprintf(strbuf, "\r\nChannel %dB Scale = %0.4f Offset = %0.4f", channelNum, cal[channelNum].b_scale, cal[channelNum].b_offset);
mfwic 1:9f8583ba2431 1571 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1572 sendCRLF();
mfwic 0:44a3005d4f20 1573 return;
mfwic 0:44a3005d4f20 1574 }
mfwic 0:44a3005d4f20 1575
mfwic 0:44a3005d4f20 1576 // First character after digits must be either 'A' or 'B'
mfwic 0:44a3005d4f20 1577 channelSideChar = toupper(rxbuf[bufloc]);
mfwic 0:44a3005d4f20 1578
mfwic 0:44a3005d4f20 1579 if ((channelSideChar != 'A') && (channelSideChar != 'B'))
mfwic 0:44a3005d4f20 1580 {
mfwic 1:9f8583ba2431 1581 sprintf(strbuf, " Invalid channel (A/B)");
mfwic 1:9f8583ba2431 1582 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1583 commandError = 1;
mfwic 0:44a3005d4f20 1584 }
mfwic 0:44a3005d4f20 1585 }
mfwic 0:44a3005d4f20 1586
mfwic 0:44a3005d4f20 1587 if (!commandError)
mfwic 0:44a3005d4f20 1588 {
mfwic 0:44a3005d4f20 1589 // Translate 'A' to CHAN1 and 'B' to CHAN2
mfwic 0:44a3005d4f20 1590 channelSide = (channelSideChar == 'A' ? 1 : 2);
mfwic 0:44a3005d4f20 1591
mfwic 0:44a3005d4f20 1592 // Move past the channel side character
mfwic 0:44a3005d4f20 1593 bufloc++;
mfwic 0:44a3005d4f20 1594
mfwic 0:44a3005d4f20 1595 // Does the user simply want to read the current cal parameters?
mfwic 0:44a3005d4f20 1596 if (rxbuf[bufloc] == '?')
mfwic 0:44a3005d4f20 1597 {
mfwic 0:44a3005d4f20 1598 if (channelSide == 1)
mfwic 0:44a3005d4f20 1599 {
mfwic 1:9f8583ba2431 1600 sprintf(strbuf, "\r\nChannel %dA Scale = %0.4f Offset = %0.4f", channelNum, cal[channelNum].a_scale, cal[channelNum].a_offset);
mfwic 1:9f8583ba2431 1601 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1602 }
mfwic 0:44a3005d4f20 1603 else
mfwic 0:44a3005d4f20 1604 {
mfwic 1:9f8583ba2431 1605 sprintf(strbuf, "\r\nChannel %dB Scale = %0.4f Offset = %0.4f", channelNum, cal[channelNum].b_scale, cal[channelNum].b_offset);
mfwic 1:9f8583ba2431 1606 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1607 }
mfwic 0:44a3005d4f20 1608
mfwic 0:44a3005d4f20 1609 sendCRLF();
mfwic 0:44a3005d4f20 1610 return;
mfwic 0:44a3005d4f20 1611 }
mfwic 0:44a3005d4f20 1612
mfwic 0:44a3005d4f20 1613 // If no point value specified, silently default to 3-point cal
mfwic 0:44a3005d4f20 1614 if (!strcmp(&rxbuf[bufloc], ""))
mfwic 0:44a3005d4f20 1615 {
mfwic 0:44a3005d4f20 1616 numPoints = 3;
mfwic 0:44a3005d4f20 1617 }
mfwic 0:44a3005d4f20 1618 else if (!validateInt(SET, 3, 11, &numPoints))
mfwic 0:44a3005d4f20 1619 {
mfwic 1:9f8583ba2431 1620 sprintf(strbuf, " Invalid number of cal points (3 - 11)");
mfwic 1:9f8583ba2431 1621 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1622 commandError = 1;
mfwic 0:44a3005d4f20 1623 }
mfwic 0:44a3005d4f20 1624 }
mfwic 0:44a3005d4f20 1625
mfwic 0:44a3005d4f20 1626 if (!commandError)
mfwic 0:44a3005d4f20 1627 {
mfwic 1:9f8583ba2431 1628 sprintf(strbuf, " Starting %d-point Calibration on Channel %d%c", numPoints, channelNum, channelSideChar);
mfwic 1:9f8583ba2431 1629 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1630
mfwic 0:44a3005d4f20 1631 // Reset the serial buffer for the incoming user input
mfwic 0:44a3005d4f20 1632 bufloc = 0;
mfwic 0:44a3005d4f20 1633 rxbuf[bufloc] = 0;
mfwic 0:44a3005d4f20 1634
mfwic 0:44a3005d4f20 1635 calibrate(channelNum, channelSide, numPoints);
mfwic 0:44a3005d4f20 1636 }
mfwic 0:44a3005d4f20 1637 }
mfwic 0:44a3005d4f20 1638 else if (!strcmp(commandString, "COMMIT"))
mfwic 0:44a3005d4f20 1639 {
mfwic 0:44a3005d4f20 1640 commitParametersToFlash();
mfwic 0:44a3005d4f20 1641 }
mfwic 0:44a3005d4f20 1642 else if (!strcmp(commandString, "CHLPR"))
mfwic 0:44a3005d4f20 1643 {
mfwic 0:44a3005d4f20 1644 if (readback)
mfwic 0:44a3005d4f20 1645 {
mfwic 1:9f8583ba2431 1646 sprintf(strbuf, " [%i, %i]", chpair, registerno);
mfwic 1:9f8583ba2431 1647 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1648 }
mfwic 0:44a3005d4f20 1649 else if (running == 1)
mfwic 0:44a3005d4f20 1650 {
mfwic 1:9f8583ba2431 1651 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1652 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1653 }
mfwic 0:44a3005d4f20 1654 else
mfwic 0:44a3005d4f20 1655 {
mfwic 0:44a3005d4f20 1656 if (!validateInt(SET, 1, MAX_BOARDS, &chpair))
mfwic 0:44a3005d4f20 1657 {
mfwic 1:9f8583ba2431 1658 sprintf(strbuf, "Invalid board number (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 1659 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1660 commandError = 1;
mfwic 0:44a3005d4f20 1661 }
mfwic 0:44a3005d4f20 1662
mfwic 0:44a3005d4f20 1663 if (!commandError)
mfwic 0:44a3005d4f20 1664 {
mfwic 0:44a3005d4f20 1665 getDelimiter();
mfwic 0:44a3005d4f20 1666
mfwic 0:44a3005d4f20 1667 if (!validateInt(SET, 1, MAX_REGISTERS, &registerno))
mfwic 0:44a3005d4f20 1668 {
mfwic 1:9f8583ba2431 1669 sprintf(strbuf, "Invalid register number (1 - %d)", MAX_REGISTERS);
mfwic 1:9f8583ba2431 1670 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1671 commandError = 1;
mfwic 0:44a3005d4f20 1672 }
mfwic 0:44a3005d4f20 1673 }
mfwic 0:44a3005d4f20 1674
mfwic 0:44a3005d4f20 1675 if (!commandError)
mfwic 0:44a3005d4f20 1676 {
mfwic 0:44a3005d4f20 1677 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1678 chpair--;
mfwic 0:44a3005d4f20 1679 registerno--;
mfwic 0:44a3005d4f20 1680
mfwic 0:44a3005d4f20 1681 // ignore spaces
mfwic 0:44a3005d4f20 1682 while ((rxbuf[bufloc++] == ' ') && (rxbuf[bufloc] != 0x0D) && (rxbuf[bufloc] != 0) && (rxbuf[bufloc] != ';'));
mfwic 0:44a3005d4f20 1683
mfwic 0:44a3005d4f20 1684 if (rxbuf[bufloc] == 0 || rxbuf[bufloc] == 0x0D)
mfwic 0:44a3005d4f20 1685 {
mfwic 0:44a3005d4f20 1686 commandError = 1;
mfwic 0:44a3005d4f20 1687 }
mfwic 0:44a3005d4f20 1688 else
mfwic 0:44a3005d4f20 1689 {
mfwic 0:44a3005d4f20 1690 while((rxbuf[bufloc++] != ' ') && (rxbuf[bufloc] != 0x0D) && (rxbuf[bufloc] != 0) && (rxbuf[bufloc] == ';') );
mfwic 0:44a3005d4f20 1691
mfwic 0:44a3005d4f20 1692 if (rxbuf[bufloc] == 0 || rxbuf[bufloc] == 0x0D)
mfwic 0:44a3005d4f20 1693 {
mfwic 0:44a3005d4f20 1694 commandError = 1;
mfwic 0:44a3005d4f20 1695 }
mfwic 0:44a3005d4f20 1696 else
mfwic 0:44a3005d4f20 1697 {
mfwic 0:44a3005d4f20 1698 chlprMenu();
mfwic 0:44a3005d4f20 1699 }
mfwic 0:44a3005d4f20 1700 }
mfwic 0:44a3005d4f20 1701 }
mfwic 0:44a3005d4f20 1702 }
mfwic 0:44a3005d4f20 1703 }
mfwic 0:44a3005d4f20 1704 else if (!strcmp(commandString, "CHLSGL"))
mfwic 0:44a3005d4f20 1705 {
mfwic 0:44a3005d4f20 1706 if (readback)
mfwic 0:44a3005d4f20 1707 {
mfwic 1:9f8583ba2431 1708 sprintf(strbuf, " [%i%c, %i]", chpair, chsgl, registerno);
mfwic 1:9f8583ba2431 1709 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1710 }
mfwic 0:44a3005d4f20 1711 else if (running == 1)
mfwic 0:44a3005d4f20 1712 {
mfwic 1:9f8583ba2431 1713 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1714 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1715 }
mfwic 0:44a3005d4f20 1716 else
mfwic 0:44a3005d4f20 1717 {
mfwic 0:44a3005d4f20 1718 if (!validateInt(SET, 1, MAX_BOARDS, &chpair))
mfwic 0:44a3005d4f20 1719 {
mfwic 1:9f8583ba2431 1720 sprintf(strbuf, "Invalid board number (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 1721 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1722 commandError = 1;
mfwic 0:44a3005d4f20 1723 }
mfwic 0:44a3005d4f20 1724
mfwic 0:44a3005d4f20 1725 if (!commandError)
mfwic 0:44a3005d4f20 1726 {
mfwic 0:44a3005d4f20 1727 while(rxbuf[bufloc] == ' ' || rxbuf[bufloc] == '[' || isdigit(rxbuf[bufloc]) && rxbuf[bufloc] != 0x0D ){ bufloc++; }
mfwic 0:44a3005d4f20 1728
mfwic 0:44a3005d4f20 1729 channelSideChar = toupper(rxbuf[bufloc]);
mfwic 0:44a3005d4f20 1730
mfwic 0:44a3005d4f20 1731 if ((channelSideChar != 'A') && (channelSideChar != 'B'))
mfwic 0:44a3005d4f20 1732 {
mfwic 1:9f8583ba2431 1733 sprintf(strbuf, "Invalid channel (A/B)");
mfwic 1:9f8583ba2431 1734 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1735 commandError = 1;
mfwic 0:44a3005d4f20 1736 }
mfwic 0:44a3005d4f20 1737
mfwic 0:44a3005d4f20 1738 if (!commandError)
mfwic 0:44a3005d4f20 1739 {
mfwic 0:44a3005d4f20 1740 chsgl = channelSideChar;
mfwic 0:44a3005d4f20 1741 getDelimiter();
mfwic 0:44a3005d4f20 1742
mfwic 0:44a3005d4f20 1743 if (!validateInt(SET, 1, MAX_REGISTERS, &registerno))
mfwic 0:44a3005d4f20 1744 {
mfwic 1:9f8583ba2431 1745 sprintf(strbuf, "Invalid register number (1 - %d)", MAX_REGISTERS);
mfwic 1:9f8583ba2431 1746 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1747 commandError = 1;
mfwic 0:44a3005d4f20 1748 }
mfwic 0:44a3005d4f20 1749 }
mfwic 0:44a3005d4f20 1750
mfwic 0:44a3005d4f20 1751 if (!commandError)
mfwic 0:44a3005d4f20 1752 {
mfwic 0:44a3005d4f20 1753 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1754 chpair--;
mfwic 0:44a3005d4f20 1755 registerno--;
mfwic 0:44a3005d4f20 1756
mfwic 0:44a3005d4f20 1757 // ignore spaces
mfwic 0:44a3005d4f20 1758 while ((rxbuf[bufloc++] == ' ') && (rxbuf[bufloc] != 0x0D) && (rxbuf[bufloc] != 0) && (rxbuf[bufloc] == ';'));
mfwic 0:44a3005d4f20 1759
mfwic 0:44a3005d4f20 1760 if (rxbuf[bufloc] == 0 || rxbuf[bufloc] == 0x0D)
mfwic 0:44a3005d4f20 1761 {
mfwic 0:44a3005d4f20 1762 commandError = 1;
mfwic 0:44a3005d4f20 1763 }
mfwic 0:44a3005d4f20 1764 }
mfwic 0:44a3005d4f20 1765
mfwic 0:44a3005d4f20 1766 if (!commandError)
mfwic 0:44a3005d4f20 1767 {
mfwic 0:44a3005d4f20 1768 while ((rxbuf[bufloc++] != ' ') && (rxbuf[bufloc] != 0x0D) && (rxbuf[bufloc] != 0) && (rxbuf[bufloc] == ';'));
mfwic 0:44a3005d4f20 1769
mfwic 0:44a3005d4f20 1770 if (rxbuf[bufloc] == 0 || rxbuf[bufloc] == 0x0D)
mfwic 0:44a3005d4f20 1771 {
mfwic 0:44a3005d4f20 1772 commandError = 1;
mfwic 0:44a3005d4f20 1773 }
mfwic 0:44a3005d4f20 1774 else
mfwic 0:44a3005d4f20 1775 {
mfwic 0:44a3005d4f20 1776 chlsglMenu();
mfwic 0:44a3005d4f20 1777 }
mfwic 0:44a3005d4f20 1778 }
mfwic 0:44a3005d4f20 1779 }
mfwic 0:44a3005d4f20 1780 }
mfwic 1:9f8583ba2431 1781 }*/
mfwic 0:44a3005d4f20 1782 else
mfwic 0:44a3005d4f20 1783 {
mfwic 0:44a3005d4f20 1784 if (strcmp(commandString, ""))
mfwic 0:44a3005d4f20 1785 {
mfwic 0:44a3005d4f20 1786 commandError = 1;
mfwic 0:44a3005d4f20 1787 }
mfwic 0:44a3005d4f20 1788 }
mfwic 0:44a3005d4f20 1789
mfwic 0:44a3005d4f20 1790 if (commandError)
mfwic 0:44a3005d4f20 1791 {
mfwic 0:44a3005d4f20 1792 sendSerial(" ?");
mfwic 0:44a3005d4f20 1793 }
mfwic 0:44a3005d4f20 1794
mfwic 3:d8948c5b2951 1795 //sendCRLF();
mfwic 3:d8948c5b2951 1796 menuPrompt(MENU_DCM1);
mfwic 0:44a3005d4f20 1797 }
mfwic 0:44a3005d4f20 1798
mfwic 0:44a3005d4f20 1799 /************************************************************
mfwic 0:44a3005d4f20 1800 * Routine: processCommand
mfwic 0:44a3005d4f20 1801 * Input: none
mfwic 0:44a3005d4f20 1802 * Returns: none
mfwic 0:44a3005d4f20 1803 * Description:
mfwic 0:44a3005d4f20 1804 * This is the main serial communications routine. Everything
mfwic 0:44a3005d4f20 1805 * starts here as soon as a command is avaiable for processing.
mfwic 0:44a3005d4f20 1806 **************************************************************/
mfwic 0:44a3005d4f20 1807 void processCommand(void)
mfwic 0:44a3005d4f20 1808 {
mfwic 0:44a3005d4f20 1809 if (!serialStatus.command && !serialStatus.repeat)
mfwic 0:44a3005d4f20 1810 {
mfwic 0:44a3005d4f20 1811 return;
mfwic 0:44a3005d4f20 1812 }
mfwic 0:44a3005d4f20 1813
mfwic 0:44a3005d4f20 1814 doCommand(); // if not computer (i.e. terminal) you can do the command as well
mfwic 0:44a3005d4f20 1815
mfwic 0:44a3005d4f20 1816 bufloc = 0;
mfwic 0:44a3005d4f20 1817 rxbuf[bufloc] = 0;
mfwic 0:44a3005d4f20 1818
mfwic 0:44a3005d4f20 1819 serialStatus.computer = FALSE;
mfwic 0:44a3005d4f20 1820 serialStatus.command = FALSE;
mfwic 0:44a3005d4f20 1821 }