Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL2

Dependencies:   mbed

Committer:
mfwic
Date:
Wed Dec 05 00:20:34 2018 +0000
Revision:
7:860b3a8275cb
Parent:
6:39442d493098
Child:
8:d3d7dca419b3
Added power efficiency calcs.; Changed color of text sent to terminal.; Fixed loop timer.

Who changed what in which revision?

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