Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL2

Dependencies:   mbed

Committer:
mfwic
Date:
Tue Nov 27 17:47:57 2018 +0000
Revision:
3:d8948c5b2951
Parent:
1:9f8583ba2431
Child:
4:db38665c3727
Menu works

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