Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL2

Dependencies:   mbed

Committer:
mfwic
Date:
Sun Nov 25 00:36:35 2018 +0000
Revision:
1:9f8583ba2431
Parent:
0:44a3005d4f20
Child:
3:d8948c5b2951
Code compiles after major surgery.

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 1:9f8583ba2431 1304 else if (!strcmp(commandString, "BRDS"))
mfwic 1:9f8583ba2431 1305 // BRDS is used to get/set the wr_out value.
mfwic 1:9f8583ba2431 1306 // The integer value of multiplier is used to change wr_out via setBoardEnables(multiplier).
mfwic 1:9f8583ba2431 1307 // Slots 12 to 0 are activated with the wr_out signals
mfwic 1:9f8583ba2431 1308 // wr_out[13] = slots[12:0]
mfwic 0:44a3005d4f20 1309 {
mfwic 0:44a3005d4f20 1310 if (readback)
mfwic 0:44a3005d4f20 1311 {
mfwic 1:9f8583ba2431 1312 sprintf(strbuf, " %d", multiplier);
mfwic 1:9f8583ba2431 1313 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1314 }
mfwic 1:9f8583ba2431 1315 //else if (running == 1)
mfwic 1:9f8583ba2431 1316 //{
mfwic 1:9f8583ba2431 1317 // sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1318 // sendSerial(strbuf);
mfwic 1:9f8583ba2431 1319 //}
mfwic 0:44a3005d4f20 1320 else
mfwic 0:44a3005d4f20 1321 {
mfwic 1:9f8583ba2431 1322 if(checkRange(0, 63, multiplier) == 1){
mfwic 1:9f8583ba2431 1323 setBoardEnables(multiplier);
mfwic 1:9f8583ba2431 1324 }else{
mfwic 1:9f8583ba2431 1325 showRangeError(1, multiplier, 0.0);
mfwic 1:9f8583ba2431 1326 }
mfwic 1:9f8583ba2431 1327 }
mfwic 1:9f8583ba2431 1328 }
mfwic 1:9f8583ba2431 1329 else if (!strcmp(commandString, "MULT"))
mfwic 1:9f8583ba2431 1330 // MULT is used to get/set the en_out value.
mfwic 1:9f8583ba2431 1331 // The integer value of multiplier is used to change en_out via setBoardWeights(multiplier).
mfwic 1:9f8583ba2431 1332 // en_out are binary weighted signals that activate groups of DC-DC converters on the slot cards.
mfwic 1:9f8583ba2431 1333 // en_out[6] = {en32, en16, en8, en4, en2, en1}
mfwic 1:9f8583ba2431 1334 {
mfwic 1:9f8583ba2431 1335 if (readback)
mfwic 1:9f8583ba2431 1336 {
mfwic 1:9f8583ba2431 1337 sprintf(strbuf, " %d", multiplier);
mfwic 1:9f8583ba2431 1338 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1339 }
mfwic 1:9f8583ba2431 1340 //else if (running == 1)
mfwic 1:9f8583ba2431 1341 //{
mfwic 1:9f8583ba2431 1342 // sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1343 // sendSerial(strbuf);
mfwic 1:9f8583ba2431 1344 //}
mfwic 1:9f8583ba2431 1345 else
mfwic 1:9f8583ba2431 1346 {
mfwic 1:9f8583ba2431 1347 if(checkRange(0, 63, multiplier) == 1){
mfwic 1:9f8583ba2431 1348 setBoardWeights(multiplier);
mfwic 1:9f8583ba2431 1349 }else{
mfwic 1:9f8583ba2431 1350 showRangeError(1, multiplier, 0.0);
mfwic 1:9f8583ba2431 1351 }
mfwic 0:44a3005d4f20 1352 }
mfwic 0:44a3005d4f20 1353 }
mfwic 0:44a3005d4f20 1354 else if (!strcmp(commandString, "ALLOFF"))
mfwic 0:44a3005d4f20 1355 {
mfwic 1:9f8583ba2431 1356 //hv_en = 1;
mfwic 0:44a3005d4f20 1357 setBoardEnables(ALLOFF);
mfwic 0:44a3005d4f20 1358 }
mfwic 0:44a3005d4f20 1359 else if (!strcmp(commandString, "ALLON"))
mfwic 0:44a3005d4f20 1360 {
mfwic 1:9f8583ba2431 1361 //hv_en = 0;
mfwic 0:44a3005d4f20 1362 setBoardEnables(ALLON);
mfwic 0:44a3005d4f20 1363 }
mfwic 0:44a3005d4f20 1364 else if (!strcmp(commandString, "DWL1_OV_TIME"))
mfwic 0:44a3005d4f20 1365 {
mfwic 1:9f8583ba2431 1366 //setDwellTime(DWELL_1_OV_TIME);
mfwic 0:44a3005d4f20 1367 }
mfwic 0:44a3005d4f20 1368 else if (!strcmp(commandString, "DWL1_TIME"))
mfwic 0:44a3005d4f20 1369 {
mfwic 1:9f8583ba2431 1370 //setDwellTime(DWELL_1_TIME);
mfwic 0:44a3005d4f20 1371 }
mfwic 0:44a3005d4f20 1372 else if (!strcmp(commandString, "RUN"))
mfwic 0:44a3005d4f20 1373 {
mfwic 0:44a3005d4f20 1374 // Skip over any white space and the optional '[' character
mfwic 0:44a3005d4f20 1375 while ((isspace(rxbuf[bufloc])) || (rxbuf[bufloc] == '[')) bufloc++;
mfwic 0:44a3005d4f20 1376
mfwic 0:44a3005d4f20 1377 if (rxbuf[bufloc] == '0')
mfwic 0:44a3005d4f20 1378 {
mfwic 1:9f8583ba2431 1379 stopConverter();
mfwic 1:9f8583ba2431 1380 //setDacsToZeroVolts();
mfwic 0:44a3005d4f20 1381 }
mfwic 1:9f8583ba2431 1382 else if ((rxbuf[bufloc] > '0') && (rxbuf[bufloc] < '0' + MAX_BOARDS))
mfwic 0:44a3005d4f20 1383 {
mfwic 0:44a3005d4f20 1384 ival = atoi(&rxbuf[bufloc]);
mfwic 0:44a3005d4f20 1385 ival--;
mfwic 0:44a3005d4f20 1386
mfwic 0:44a3005d4f20 1387 if (running == 0)
mfwic 0:44a3005d4f20 1388 {
mfwic 1:9f8583ba2431 1389 //setDacsToZeroVolts();
mfwic 1:9f8583ba2431 1390 //Delay(1000);
mfwic 1:9f8583ba2431 1391 wait(0.5);
mfwic 1:9f8583ba2431 1392 boardsActive = ival;
mfwic 1:9f8583ba2431 1393 startConverter(boardsActive);
mfwic 0:44a3005d4f20 1394 }
mfwic 0:44a3005d4f20 1395 else
mfwic 0:44a3005d4f20 1396 {
mfwic 0:44a3005d4f20 1397 // Compare the board enable flags between registers
mfwic 0:44a3005d4f20 1398 boardEnables = checkRegisterCompatibility(ival);
mfwic 0:44a3005d4f20 1399
mfwic 0:44a3005d4f20 1400 // If board enable flags match, change the register set
mfwic 0:44a3005d4f20 1401 if (boardEnables == 0)
mfwic 0:44a3005d4f20 1402 {
mfwic 1:9f8583ba2431 1403 boardsActive = ival;
mfwic 0:44a3005d4f20 1404 }
mfwic 0:44a3005d4f20 1405 else
mfwic 0:44a3005d4f20 1406 {
mfwic 1:9f8583ba2431 1407 sprintf(strbuf, " Board enable flags do not match (0x%08x)", boardEnables);
mfwic 1:9f8583ba2431 1408 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1409 }
mfwic 0:44a3005d4f20 1410 }
mfwic 0:44a3005d4f20 1411 }
mfwic 0:44a3005d4f20 1412 else
mfwic 0:44a3005d4f20 1413 {
mfwic 1:9f8583ba2431 1414 sprintf(strbuf, " Invalid register number (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 1415 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1416 commandError = 1;
mfwic 0:44a3005d4f20 1417 }
mfwic 0:44a3005d4f20 1418 }
mfwic 0:44a3005d4f20 1419 else if (!strcmp(commandString, "STOP"))
mfwic 0:44a3005d4f20 1420 {
mfwic 1:9f8583ba2431 1421 stopConverter();
mfwic 0:44a3005d4f20 1422 setBoardEnables(ALLOFF);
mfwic 1:9f8583ba2431 1423 //hv_en = OFF;
mfwic 0:44a3005d4f20 1424 }
mfwic 1:9f8583ba2431 1425 /* else if (!strcmp(commandString, "CLEAR"))
mfwic 0:44a3005d4f20 1426 {
mfwic 0:44a3005d4f20 1427 if (running == 1)
mfwic 0:44a3005d4f20 1428 {
mfwic 1:9f8583ba2431 1429 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1430 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1431 commandError = 1;
mfwic 0:44a3005d4f20 1432 }
mfwic 0:44a3005d4f20 1433 else if (!validateInt(SET, 0, MAX_REGISTERS, &registerno))
mfwic 0:44a3005d4f20 1434 {
mfwic 1:9f8583ba2431 1435 sprintf(strbuf, " Invalid register number (1 - %d)", MAX_REGISTERS);
mfwic 1:9f8583ba2431 1436 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1437 commandError = 1;
mfwic 0:44a3005d4f20 1438 }
mfwic 0:44a3005d4f20 1439
mfwic 0:44a3005d4f20 1440 if (!commandError)
mfwic 0:44a3005d4f20 1441 {
mfwic 0:44a3005d4f20 1442 if (registerno == 0)
mfwic 0:44a3005d4f20 1443 {
mfwic 0:44a3005d4f20 1444 frequency = 1000;
mfwic 0:44a3005d4f20 1445
mfwic 0:44a3005d4f20 1446 clearRegister(0);
mfwic 0:44a3005d4f20 1447 clearRegister(1);
mfwic 0:44a3005d4f20 1448 clearRegister(2);
mfwic 0:44a3005d4f20 1449 clearRegister(3);
mfwic 0:44a3005d4f20 1450
mfwic 0:44a3005d4f20 1451 initCalParameters();
mfwic 0:44a3005d4f20 1452
mfwic 1:9f8583ba2431 1453 sprintf(strbuf, " All parameters reset to default values");
mfwic 1:9f8583ba2431 1454 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1455 }
mfwic 0:44a3005d4f20 1456 else
mfwic 0:44a3005d4f20 1457 {
mfwic 0:44a3005d4f20 1458 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1459 registerno--;
mfwic 0:44a3005d4f20 1460
mfwic 0:44a3005d4f20 1461 clearRegister(registerno);
mfwic 0:44a3005d4f20 1462
mfwic 1:9f8583ba2431 1463 sprintf(strbuf, " [x, %d] voltages are 0", registerno);
mfwic 1:9f8583ba2431 1464 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1465 }
mfwic 0:44a3005d4f20 1466 }
mfwic 1:9f8583ba2431 1467 }*/
mfwic 0:44a3005d4f20 1468 else if(!strcmp(commandString, "TEST"))
mfwic 0:44a3005d4f20 1469 {
mfwic 0:44a3005d4f20 1470 if (running == 1)
mfwic 0:44a3005d4f20 1471 {
mfwic 1:9f8583ba2431 1472 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1473 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1474 }
mfwic 0:44a3005d4f20 1475 else
mfwic 0:44a3005d4f20 1476 {
mfwic 0:44a3005d4f20 1477 testMenu();
mfwic 0:44a3005d4f20 1478 }
mfwic 0:44a3005d4f20 1479 }
mfwic 1:9f8583ba2431 1480 /* else if(!strcmp(commandString, "READ"))
mfwic 0:44a3005d4f20 1481 {
mfwic 0:44a3005d4f20 1482 if (!validateInt(SET, 1, MAX_REGISTERS, &registerno))
mfwic 0:44a3005d4f20 1483 {
mfwic 1:9f8583ba2431 1484 sprintf(strbuf, " Invalid register number (1 - %d)", MAX_REGISTERS);
mfwic 1:9f8583ba2431 1485 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1486 commandError = 1;
mfwic 0:44a3005d4f20 1487 }
mfwic 0:44a3005d4f20 1488
mfwic 0:44a3005d4f20 1489 if (!commandError)
mfwic 0:44a3005d4f20 1490 {
mfwic 0:44a3005d4f20 1491 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1492 registerno--;
mfwic 0:44a3005d4f20 1493
mfwic 1:9f8583ba2431 1494 sprintf(strbuf, "\r\n Register [x, %d]: ", registerno + 1);
mfwic 1:9f8583ba2431 1495 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1496 sprintf(strbuf, "\r\n frequency = %0.3f Hz", frequency);
mfwic 1:9f8583ba2431 1497 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1498 sprintf(strbuf, "\r\n dwell1_ov_time = %0.3f ms", dwells[registerno].a_dwell1_ov_time);
mfwic 1:9f8583ba2431 1499 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1500 sprintf(strbuf, "\r\n dwell1_time = %0.3f ms", dwells[registerno].a_dwell1_time);
mfwic 1:9f8583ba2431 1501 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1502
mfwic 0:44a3005d4f20 1503 for (i = 0; i < MAX_BOARDS; i++)
mfwic 0:44a3005d4f20 1504 {
mfwic 1:9f8583ba2431 1505 sprintf(strbuf, "\r\n\r\n Register [%d, %d]: ", i + 1, registerno + 1);
mfwic 1:9f8583ba2431 1506 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1507 sprintf(strbuf, "\r\n enabled = %d", ch[i][registerno].enabled);
mfwic 1:9f8583ba2431 1508 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1509 sprintf(strbuf, "\r\n a_dwell1_ov = %0.3f V", ch[i][registerno].a_dwell1_ov);
mfwic 1:9f8583ba2431 1510 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1511 sprintf(strbuf, "\r\n a_dwell1_volts = %0.3f V", ch[i][registerno].a_dwell1_volts);
mfwic 1:9f8583ba2431 1512 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1513
mfwic 0:44a3005d4f20 1514 }
mfwic 0:44a3005d4f20 1515 }
mfwic 1:9f8583ba2431 1516 }*/
mfwic 1:9f8583ba2431 1517 /* else if(!strcmp(commandString, "CAL"))
mfwic 0:44a3005d4f20 1518 {
mfwic 0:44a3005d4f20 1519 if (running == 1)
mfwic 0:44a3005d4f20 1520 {
mfwic 1:9f8583ba2431 1521 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1522 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1523 commandError = 1;
mfwic 0:44a3005d4f20 1524 }
mfwic 0:44a3005d4f20 1525 else if (!validateInt(SET, 1, MAX_BOARDS, &channelNum))
mfwic 0:44a3005d4f20 1526 {
mfwic 1:9f8583ba2431 1527 sprintf(strbuf, " Invalid board number (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 1528 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1529 commandError = 1;
mfwic 0:44a3005d4f20 1530 }
mfwic 0:44a3005d4f20 1531
mfwic 0:44a3005d4f20 1532 if (!commandError)
mfwic 0:44a3005d4f20 1533 {
mfwic 0:44a3005d4f20 1534 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1535 channelNum--;
mfwic 0:44a3005d4f20 1536
mfwic 0:44a3005d4f20 1537 // Skip over digits parsed as part of the atoi() call
mfwic 0:44a3005d4f20 1538 while (isdigit(rxbuf[bufloc])) bufloc++;
mfwic 0:44a3005d4f20 1539
mfwic 0:44a3005d4f20 1540 // Does the user simply want to read the current cal parameters?
mfwic 0:44a3005d4f20 1541 if (rxbuf[bufloc] == '?')
mfwic 0:44a3005d4f20 1542 {
mfwic 1:9f8583ba2431 1543 sprintf(strbuf, "\r\nChannel %dA Scale = %0.4f Offset = %0.4f", channelNum, cal[channelNum].a_scale, cal[channelNum].a_offset);
mfwic 1:9f8583ba2431 1544 sendSerial(strbuf);
mfwic 1:9f8583ba2431 1545 sprintf(strbuf, "\r\nChannel %dB Scale = %0.4f Offset = %0.4f", channelNum, cal[channelNum].b_scale, cal[channelNum].b_offset);
mfwic 1:9f8583ba2431 1546 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1547 sendCRLF();
mfwic 0:44a3005d4f20 1548 return;
mfwic 0:44a3005d4f20 1549 }
mfwic 0:44a3005d4f20 1550
mfwic 0:44a3005d4f20 1551 // First character after digits must be either 'A' or 'B'
mfwic 0:44a3005d4f20 1552 channelSideChar = toupper(rxbuf[bufloc]);
mfwic 0:44a3005d4f20 1553
mfwic 0:44a3005d4f20 1554 if ((channelSideChar != 'A') && (channelSideChar != 'B'))
mfwic 0:44a3005d4f20 1555 {
mfwic 1:9f8583ba2431 1556 sprintf(strbuf, " Invalid channel (A/B)");
mfwic 1:9f8583ba2431 1557 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1558 commandError = 1;
mfwic 0:44a3005d4f20 1559 }
mfwic 0:44a3005d4f20 1560 }
mfwic 0:44a3005d4f20 1561
mfwic 0:44a3005d4f20 1562 if (!commandError)
mfwic 0:44a3005d4f20 1563 {
mfwic 0:44a3005d4f20 1564 // Translate 'A' to CHAN1 and 'B' to CHAN2
mfwic 0:44a3005d4f20 1565 channelSide = (channelSideChar == 'A' ? 1 : 2);
mfwic 0:44a3005d4f20 1566
mfwic 0:44a3005d4f20 1567 // Move past the channel side character
mfwic 0:44a3005d4f20 1568 bufloc++;
mfwic 0:44a3005d4f20 1569
mfwic 0:44a3005d4f20 1570 // Does the user simply want to read the current cal parameters?
mfwic 0:44a3005d4f20 1571 if (rxbuf[bufloc] == '?')
mfwic 0:44a3005d4f20 1572 {
mfwic 0:44a3005d4f20 1573 if (channelSide == 1)
mfwic 0:44a3005d4f20 1574 {
mfwic 1:9f8583ba2431 1575 sprintf(strbuf, "\r\nChannel %dA Scale = %0.4f Offset = %0.4f", channelNum, cal[channelNum].a_scale, cal[channelNum].a_offset);
mfwic 1:9f8583ba2431 1576 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1577 }
mfwic 0:44a3005d4f20 1578 else
mfwic 0:44a3005d4f20 1579 {
mfwic 1:9f8583ba2431 1580 sprintf(strbuf, "\r\nChannel %dB Scale = %0.4f Offset = %0.4f", channelNum, cal[channelNum].b_scale, cal[channelNum].b_offset);
mfwic 1:9f8583ba2431 1581 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1582 }
mfwic 0:44a3005d4f20 1583
mfwic 0:44a3005d4f20 1584 sendCRLF();
mfwic 0:44a3005d4f20 1585 return;
mfwic 0:44a3005d4f20 1586 }
mfwic 0:44a3005d4f20 1587
mfwic 0:44a3005d4f20 1588 // If no point value specified, silently default to 3-point cal
mfwic 0:44a3005d4f20 1589 if (!strcmp(&rxbuf[bufloc], ""))
mfwic 0:44a3005d4f20 1590 {
mfwic 0:44a3005d4f20 1591 numPoints = 3;
mfwic 0:44a3005d4f20 1592 }
mfwic 0:44a3005d4f20 1593 else if (!validateInt(SET, 3, 11, &numPoints))
mfwic 0:44a3005d4f20 1594 {
mfwic 1:9f8583ba2431 1595 sprintf(strbuf, " Invalid number of cal points (3 - 11)");
mfwic 1:9f8583ba2431 1596 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1597 commandError = 1;
mfwic 0:44a3005d4f20 1598 }
mfwic 0:44a3005d4f20 1599 }
mfwic 0:44a3005d4f20 1600
mfwic 0:44a3005d4f20 1601 if (!commandError)
mfwic 0:44a3005d4f20 1602 {
mfwic 1:9f8583ba2431 1603 sprintf(strbuf, " Starting %d-point Calibration on Channel %d%c", numPoints, channelNum, channelSideChar);
mfwic 1:9f8583ba2431 1604 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1605
mfwic 0:44a3005d4f20 1606 // Reset the serial buffer for the incoming user input
mfwic 0:44a3005d4f20 1607 bufloc = 0;
mfwic 0:44a3005d4f20 1608 rxbuf[bufloc] = 0;
mfwic 0:44a3005d4f20 1609
mfwic 0:44a3005d4f20 1610 calibrate(channelNum, channelSide, numPoints);
mfwic 0:44a3005d4f20 1611 }
mfwic 0:44a3005d4f20 1612 }
mfwic 0:44a3005d4f20 1613 else if (!strcmp(commandString, "COMMIT"))
mfwic 0:44a3005d4f20 1614 {
mfwic 0:44a3005d4f20 1615 commitParametersToFlash();
mfwic 0:44a3005d4f20 1616 }
mfwic 0:44a3005d4f20 1617 else if (!strcmp(commandString, "CHLPR"))
mfwic 0:44a3005d4f20 1618 {
mfwic 0:44a3005d4f20 1619 if (readback)
mfwic 0:44a3005d4f20 1620 {
mfwic 1:9f8583ba2431 1621 sprintf(strbuf, " [%i, %i]", chpair, registerno);
mfwic 1:9f8583ba2431 1622 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1623 }
mfwic 0:44a3005d4f20 1624 else if (running == 1)
mfwic 0:44a3005d4f20 1625 {
mfwic 1:9f8583ba2431 1626 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1627 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1628 }
mfwic 0:44a3005d4f20 1629 else
mfwic 0:44a3005d4f20 1630 {
mfwic 0:44a3005d4f20 1631 if (!validateInt(SET, 1, MAX_BOARDS, &chpair))
mfwic 0:44a3005d4f20 1632 {
mfwic 1:9f8583ba2431 1633 sprintf(strbuf, "Invalid board number (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 1634 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1635 commandError = 1;
mfwic 0:44a3005d4f20 1636 }
mfwic 0:44a3005d4f20 1637
mfwic 0:44a3005d4f20 1638 if (!commandError)
mfwic 0:44a3005d4f20 1639 {
mfwic 0:44a3005d4f20 1640 getDelimiter();
mfwic 0:44a3005d4f20 1641
mfwic 0:44a3005d4f20 1642 if (!validateInt(SET, 1, MAX_REGISTERS, &registerno))
mfwic 0:44a3005d4f20 1643 {
mfwic 1:9f8583ba2431 1644 sprintf(strbuf, "Invalid register number (1 - %d)", MAX_REGISTERS);
mfwic 1:9f8583ba2431 1645 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1646 commandError = 1;
mfwic 0:44a3005d4f20 1647 }
mfwic 0:44a3005d4f20 1648 }
mfwic 0:44a3005d4f20 1649
mfwic 0:44a3005d4f20 1650 if (!commandError)
mfwic 0:44a3005d4f20 1651 {
mfwic 0:44a3005d4f20 1652 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1653 chpair--;
mfwic 0:44a3005d4f20 1654 registerno--;
mfwic 0:44a3005d4f20 1655
mfwic 0:44a3005d4f20 1656 // ignore spaces
mfwic 0:44a3005d4f20 1657 while ((rxbuf[bufloc++] == ' ') && (rxbuf[bufloc] != 0x0D) && (rxbuf[bufloc] != 0) && (rxbuf[bufloc] != ';'));
mfwic 0:44a3005d4f20 1658
mfwic 0:44a3005d4f20 1659 if (rxbuf[bufloc] == 0 || rxbuf[bufloc] == 0x0D)
mfwic 0:44a3005d4f20 1660 {
mfwic 0:44a3005d4f20 1661 commandError = 1;
mfwic 0:44a3005d4f20 1662 }
mfwic 0:44a3005d4f20 1663 else
mfwic 0:44a3005d4f20 1664 {
mfwic 0:44a3005d4f20 1665 while((rxbuf[bufloc++] != ' ') && (rxbuf[bufloc] != 0x0D) && (rxbuf[bufloc] != 0) && (rxbuf[bufloc] == ';') );
mfwic 0:44a3005d4f20 1666
mfwic 0:44a3005d4f20 1667 if (rxbuf[bufloc] == 0 || rxbuf[bufloc] == 0x0D)
mfwic 0:44a3005d4f20 1668 {
mfwic 0:44a3005d4f20 1669 commandError = 1;
mfwic 0:44a3005d4f20 1670 }
mfwic 0:44a3005d4f20 1671 else
mfwic 0:44a3005d4f20 1672 {
mfwic 0:44a3005d4f20 1673 chlprMenu();
mfwic 0:44a3005d4f20 1674 }
mfwic 0:44a3005d4f20 1675 }
mfwic 0:44a3005d4f20 1676 }
mfwic 0:44a3005d4f20 1677 }
mfwic 0:44a3005d4f20 1678 }
mfwic 0:44a3005d4f20 1679 else if (!strcmp(commandString, "CHLSGL"))
mfwic 0:44a3005d4f20 1680 {
mfwic 0:44a3005d4f20 1681 if (readback)
mfwic 0:44a3005d4f20 1682 {
mfwic 1:9f8583ba2431 1683 sprintf(strbuf, " [%i%c, %i]", chpair, chsgl, registerno);
mfwic 1:9f8583ba2431 1684 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1685 }
mfwic 0:44a3005d4f20 1686 else if (running == 1)
mfwic 0:44a3005d4f20 1687 {
mfwic 1:9f8583ba2431 1688 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 1689 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1690 }
mfwic 0:44a3005d4f20 1691 else
mfwic 0:44a3005d4f20 1692 {
mfwic 0:44a3005d4f20 1693 if (!validateInt(SET, 1, MAX_BOARDS, &chpair))
mfwic 0:44a3005d4f20 1694 {
mfwic 1:9f8583ba2431 1695 sprintf(strbuf, "Invalid board number (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 1696 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1697 commandError = 1;
mfwic 0:44a3005d4f20 1698 }
mfwic 0:44a3005d4f20 1699
mfwic 0:44a3005d4f20 1700 if (!commandError)
mfwic 0:44a3005d4f20 1701 {
mfwic 0:44a3005d4f20 1702 while(rxbuf[bufloc] == ' ' || rxbuf[bufloc] == '[' || isdigit(rxbuf[bufloc]) && rxbuf[bufloc] != 0x0D ){ bufloc++; }
mfwic 0:44a3005d4f20 1703
mfwic 0:44a3005d4f20 1704 channelSideChar = toupper(rxbuf[bufloc]);
mfwic 0:44a3005d4f20 1705
mfwic 0:44a3005d4f20 1706 if ((channelSideChar != 'A') && (channelSideChar != 'B'))
mfwic 0:44a3005d4f20 1707 {
mfwic 1:9f8583ba2431 1708 sprintf(strbuf, "Invalid channel (A/B)");
mfwic 1:9f8583ba2431 1709 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1710 commandError = 1;
mfwic 0:44a3005d4f20 1711 }
mfwic 0:44a3005d4f20 1712
mfwic 0:44a3005d4f20 1713 if (!commandError)
mfwic 0:44a3005d4f20 1714 {
mfwic 0:44a3005d4f20 1715 chsgl = channelSideChar;
mfwic 0:44a3005d4f20 1716 getDelimiter();
mfwic 0:44a3005d4f20 1717
mfwic 0:44a3005d4f20 1718 if (!validateInt(SET, 1, MAX_REGISTERS, &registerno))
mfwic 0:44a3005d4f20 1719 {
mfwic 1:9f8583ba2431 1720 sprintf(strbuf, "Invalid register number (1 - %d)", MAX_REGISTERS);
mfwic 1:9f8583ba2431 1721 sendSerial(strbuf);
mfwic 0:44a3005d4f20 1722 commandError = 1;
mfwic 0:44a3005d4f20 1723 }
mfwic 0:44a3005d4f20 1724 }
mfwic 0:44a3005d4f20 1725
mfwic 0:44a3005d4f20 1726 if (!commandError)
mfwic 0:44a3005d4f20 1727 {
mfwic 0:44a3005d4f20 1728 // Adjust user values (1 - MAX) to 0 offset values (0 - (MAX - 1))
mfwic 0:44a3005d4f20 1729 chpair--;
mfwic 0:44a3005d4f20 1730 registerno--;
mfwic 0:44a3005d4f20 1731
mfwic 0:44a3005d4f20 1732 // ignore spaces
mfwic 0:44a3005d4f20 1733 while ((rxbuf[bufloc++] == ' ') && (rxbuf[bufloc] != 0x0D) && (rxbuf[bufloc] != 0) && (rxbuf[bufloc] == ';'));
mfwic 0:44a3005d4f20 1734
mfwic 0:44a3005d4f20 1735 if (rxbuf[bufloc] == 0 || rxbuf[bufloc] == 0x0D)
mfwic 0:44a3005d4f20 1736 {
mfwic 0:44a3005d4f20 1737 commandError = 1;
mfwic 0:44a3005d4f20 1738 }
mfwic 0:44a3005d4f20 1739 }
mfwic 0:44a3005d4f20 1740
mfwic 0:44a3005d4f20 1741 if (!commandError)
mfwic 0:44a3005d4f20 1742 {
mfwic 0:44a3005d4f20 1743 while ((rxbuf[bufloc++] != ' ') && (rxbuf[bufloc] != 0x0D) && (rxbuf[bufloc] != 0) && (rxbuf[bufloc] == ';'));
mfwic 0:44a3005d4f20 1744
mfwic 0:44a3005d4f20 1745 if (rxbuf[bufloc] == 0 || rxbuf[bufloc] == 0x0D)
mfwic 0:44a3005d4f20 1746 {
mfwic 0:44a3005d4f20 1747 commandError = 1;
mfwic 0:44a3005d4f20 1748 }
mfwic 0:44a3005d4f20 1749 else
mfwic 0:44a3005d4f20 1750 {
mfwic 0:44a3005d4f20 1751 chlsglMenu();
mfwic 0:44a3005d4f20 1752 }
mfwic 0:44a3005d4f20 1753 }
mfwic 0:44a3005d4f20 1754 }
mfwic 0:44a3005d4f20 1755 }
mfwic 1:9f8583ba2431 1756 }*/
mfwic 0:44a3005d4f20 1757 else
mfwic 0:44a3005d4f20 1758 {
mfwic 0:44a3005d4f20 1759 if (strcmp(commandString, ""))
mfwic 0:44a3005d4f20 1760 {
mfwic 0:44a3005d4f20 1761 commandError = 1;
mfwic 0:44a3005d4f20 1762 }
mfwic 0:44a3005d4f20 1763 }
mfwic 0:44a3005d4f20 1764
mfwic 0:44a3005d4f20 1765 if (commandError)
mfwic 0:44a3005d4f20 1766 {
mfwic 0:44a3005d4f20 1767 sendSerial(" ?");
mfwic 0:44a3005d4f20 1768 }
mfwic 0:44a3005d4f20 1769
mfwic 0:44a3005d4f20 1770 sendCRLF();
mfwic 0:44a3005d4f20 1771 }
mfwic 0:44a3005d4f20 1772
mfwic 0:44a3005d4f20 1773 /************************************************************
mfwic 0:44a3005d4f20 1774 * Routine: processCommand
mfwic 0:44a3005d4f20 1775 * Input: none
mfwic 0:44a3005d4f20 1776 * Returns: none
mfwic 0:44a3005d4f20 1777 * Description:
mfwic 0:44a3005d4f20 1778 * This is the main serial communications routine. Everything
mfwic 0:44a3005d4f20 1779 * starts here as soon as a command is avaiable for processing.
mfwic 0:44a3005d4f20 1780 **************************************************************/
mfwic 0:44a3005d4f20 1781 void processCommand(void)
mfwic 0:44a3005d4f20 1782 {
mfwic 0:44a3005d4f20 1783 if (!serialStatus.command && !serialStatus.repeat)
mfwic 0:44a3005d4f20 1784 {
mfwic 0:44a3005d4f20 1785 return;
mfwic 0:44a3005d4f20 1786 }
mfwic 0:44a3005d4f20 1787
mfwic 0:44a3005d4f20 1788 doCommand(); // if not computer (i.e. terminal) you can do the command as well
mfwic 0:44a3005d4f20 1789
mfwic 0:44a3005d4f20 1790 bufloc = 0;
mfwic 0:44a3005d4f20 1791 rxbuf[bufloc] = 0;
mfwic 0:44a3005d4f20 1792
mfwic 0:44a3005d4f20 1793 serialStatus.computer = FALSE;
mfwic 0:44a3005d4f20 1794 serialStatus.command = FALSE;
mfwic 0:44a3005d4f20 1795 }