Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL2

Dependencies:   mbed

Committer:
mfwic
Date:
Thu Nov 29 00:07:25 2018 +0000
Revision:
4:db38665c3727
Parent:
3:d8948c5b2951
Child:
5:09be5bbb5020
Added lut.h and lut.c, still work in progress but it compiles.

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