Treehouse Mbed Team / Mbed 2 deprecated APS_DCM1SL2

Dependencies:   mbed

Committer:
mfwic
Date:
Fri Dec 07 20:42:41 2018 +0000
Revision:
11:01dcfb29fbc4
Parent:
10:6c3233b03658
Child:
12:fd1fd1857628
Cleaned up code, reduced global variables, deleted commented out lines and stale sections.

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 "parameters.h"
mfwic 1:9f8583ba2431 36 #include "all_io.h"
mfwic 1:9f8583ba2431 37 //#include "calibrate.h"
mfwic 1:9f8583ba2431 38 #include "boards.h"
mfwic 1:9f8583ba2431 39 #include "menu.h"
mfwic 8:d3d7dca419b3 40 #include "command.h"
mfwic 0:44a3005d4f20 41
mfwic 11:01dcfb29fbc4 42 unsigned int boardsActive;
mfwic 11:01dcfb29fbc4 43 unsigned int boardMults;
mfwic 11:01dcfb29fbc4 44 unsigned int commandData;
mfwic 6:39442d493098 45 extern unsigned short my12;
mfwic 0:44a3005d4f20 46
mfwic 0:44a3005d4f20 47 /************* FILE SCOPE VARIABLES ************************/
mfwic 0:44a3005d4f20 48 char setvalue = FALSE;
mfwic 0:44a3005d4f20 49 int endOfCommand = 0;
mfwic 0:44a3005d4f20 50 int commandError = 0;
mfwic 0:44a3005d4f20 51 int menuLevel = LEVEL_MAIN;
mfwic 0:44a3005d4f20 52 int readback = 0;
mfwic 0:44a3005d4f20 53
mfwic 0:44a3005d4f20 54 /************************************************************
mfwic 0:44a3005d4f20 55 * Routine: getDelimiter
mfwic 0:44a3005d4f20 56 * Input: none
mfwic 0:44a3005d4f20 57 * Output: none
mfwic 0:44a3005d4f20 58 * Description:
mfwic 0:44a3005d4f20 59 * searches for a delimiter and moves the buffer location
mfwic 0:44a3005d4f20 60 * to be just past it
mfwic 0:44a3005d4f20 61 *
mfwic 0:44a3005d4f20 62 **************************************************************/
mfwic 0:44a3005d4f20 63 void getDelimiter(void)
mfwic 0:44a3005d4f20 64 {
mfwic 0:44a3005d4f20 65 ++bufloc;
mfwic 0:44a3005d4f20 66
mfwic 0:44a3005d4f20 67 while ((rxbuf[bufloc] != ' ') &&
mfwic 0:44a3005d4f20 68 (rxbuf[bufloc] != ',') &&
mfwic 0:44a3005d4f20 69 (rxbuf[bufloc] != '=') &&
mfwic 0:44a3005d4f20 70 (rxbuf[bufloc] != 0 ))
mfwic 0:44a3005d4f20 71 {
mfwic 0:44a3005d4f20 72 bufloc++;
mfwic 0:44a3005d4f20 73 }
mfwic 0:44a3005d4f20 74 }
mfwic 0:44a3005d4f20 75
mfwic 0:44a3005d4f20 76
mfwic 0:44a3005d4f20 77
mfwic 0:44a3005d4f20 78 /************************************************************
mfwic 0:44a3005d4f20 79 * Routine: gethex
mfwic 0:44a3005d4f20 80 * Input: hex character
mfwic 0:44a3005d4f20 81 * Returns: hex integer
mfwic 0:44a3005d4f20 82 * Description:
mfwic 0:44a3005d4f20 83 * Converts a hex character to a value
mfwic 0:44a3005d4f20 84 **************************************************************/
mfwic 0:44a3005d4f20 85 char gethex(char val)
mfwic 0:44a3005d4f20 86 {
mfwic 0:44a3005d4f20 87 int retval;
mfwic 0:44a3005d4f20 88 switch(val)
mfwic 0:44a3005d4f20 89 {
mfwic 0:44a3005d4f20 90 case '0':
mfwic 0:44a3005d4f20 91 retval = 0;
mfwic 0:44a3005d4f20 92 break;
mfwic 0:44a3005d4f20 93 case '1':
mfwic 0:44a3005d4f20 94 retval = 1;
mfwic 0:44a3005d4f20 95 break;
mfwic 0:44a3005d4f20 96 case '2':
mfwic 0:44a3005d4f20 97 retval = 2;
mfwic 0:44a3005d4f20 98 break;
mfwic 0:44a3005d4f20 99 case '3':
mfwic 0:44a3005d4f20 100 retval = 3;
mfwic 0:44a3005d4f20 101 break;
mfwic 0:44a3005d4f20 102 case '4':
mfwic 0:44a3005d4f20 103 retval = 4;
mfwic 0:44a3005d4f20 104 break;
mfwic 0:44a3005d4f20 105 case '5':
mfwic 0:44a3005d4f20 106 retval = 5;
mfwic 0:44a3005d4f20 107 break;
mfwic 0:44a3005d4f20 108 case '6':
mfwic 0:44a3005d4f20 109 retval = 6;
mfwic 0:44a3005d4f20 110 break;
mfwic 0:44a3005d4f20 111 case '7':
mfwic 0:44a3005d4f20 112 retval = 7;
mfwic 0:44a3005d4f20 113 break;
mfwic 0:44a3005d4f20 114 case '8':
mfwic 0:44a3005d4f20 115 retval = 8;
mfwic 0:44a3005d4f20 116 break;
mfwic 0:44a3005d4f20 117 case '9':
mfwic 0:44a3005d4f20 118 retval = 9;
mfwic 0:44a3005d4f20 119 break;
mfwic 0:44a3005d4f20 120 case 'A':
mfwic 0:44a3005d4f20 121 retval = 10;
mfwic 0:44a3005d4f20 122 break;
mfwic 0:44a3005d4f20 123 case 'B':
mfwic 0:44a3005d4f20 124 retval = 11;
mfwic 0:44a3005d4f20 125 break;
mfwic 0:44a3005d4f20 126 case 'C':
mfwic 0:44a3005d4f20 127 retval = 12;
mfwic 0:44a3005d4f20 128 break;
mfwic 0:44a3005d4f20 129 case 'D':
mfwic 0:44a3005d4f20 130 retval = 13;
mfwic 0:44a3005d4f20 131 break;
mfwic 0:44a3005d4f20 132 case 'E':
mfwic 0:44a3005d4f20 133 retval = 14;
mfwic 0:44a3005d4f20 134 break;
mfwic 0:44a3005d4f20 135 case 'F':
mfwic 0:44a3005d4f20 136 retval = 15;
mfwic 0:44a3005d4f20 137 break;
mfwic 0:44a3005d4f20 138 default:
mfwic 0:44a3005d4f20 139 retval = 0;
mfwic 0:44a3005d4f20 140 break;
mfwic 0:44a3005d4f20 141
mfwic 0:44a3005d4f20 142 }
mfwic 0:44a3005d4f20 143 return retval;
mfwic 0:44a3005d4f20 144 }
mfwic 0:44a3005d4f20 145
mfwic 0:44a3005d4f20 146 /************************************************************
mfwic 0:44a3005d4f20 147 * Routine: showfval
mfwic 0:44a3005d4f20 148 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 149 * value (float value to display)
mfwic 0:44a3005d4f20 150 * Output: none
mfwic 0:44a3005d4f20 151 * Description:
mfwic 0:44a3005d4f20 152 * Sends a floating point number (value) over the serial port
mfwic 0:44a3005d4f20 153 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 154 *
mfwic 0:44a3005d4f20 155 **************************************************************/
mfwic 0:44a3005d4f20 156 void showfval(char setval,float value)
mfwic 0:44a3005d4f20 157 {
mfwic 0:44a3005d4f20 158 if(!setval)
mfwic 0:44a3005d4f20 159 {
mfwic 1:9f8583ba2431 160 sprintf(strbuf," %4.9f",value);
mfwic 1:9f8583ba2431 161 sendSerial(strbuf);
mfwic 0:44a3005d4f20 162 }
mfwic 0:44a3005d4f20 163 }
mfwic 0:44a3005d4f20 164
mfwic 0:44a3005d4f20 165 /************************************************************
mfwic 0:44a3005d4f20 166 * Routine: showival
mfwic 0:44a3005d4f20 167 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 168 * value (integer value to display)
mfwic 0:44a3005d4f20 169 * Output: none
mfwic 0:44a3005d4f20 170 * Description:
mfwic 0:44a3005d4f20 171 * Sends an integer (value) over the serial port
mfwic 0:44a3005d4f20 172 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 173 *
mfwic 0:44a3005d4f20 174 **************************************************************/
mfwic 0:44a3005d4f20 175 void showival(char setval, int value)
mfwic 0:44a3005d4f20 176 {
mfwic 0:44a3005d4f20 177 if(!setval)
mfwic 0:44a3005d4f20 178 {
mfwic 1:9f8583ba2431 179 sprintf(strbuf," %i",value);
mfwic 1:9f8583ba2431 180 sendSerial(strbuf);
mfwic 0:44a3005d4f20 181 }
mfwic 0:44a3005d4f20 182 }
mfwic 0:44a3005d4f20 183 /************************************************************
mfwic 0:44a3005d4f20 184 * Routine: showcval
mfwic 0:44a3005d4f20 185 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 186 * value (character to display)
mfwic 0:44a3005d4f20 187 * Output: none
mfwic 0:44a3005d4f20 188 * Description:
mfwic 0:44a3005d4f20 189 * Sends a character over the serial port
mfwic 0:44a3005d4f20 190 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 191 *
mfwic 0:44a3005d4f20 192 **************************************************************/
mfwic 0:44a3005d4f20 193 void showcval(char setval, int value)
mfwic 0:44a3005d4f20 194 {
mfwic 0:44a3005d4f20 195 if(!setval)
mfwic 0:44a3005d4f20 196 {
mfwic 1:9f8583ba2431 197 sprintf(strbuf," %c",(char)value);
mfwic 1:9f8583ba2431 198 sendSerial(strbuf);
mfwic 0:44a3005d4f20 199 }
mfwic 0:44a3005d4f20 200 }
mfwic 0:44a3005d4f20 201
mfwic 0:44a3005d4f20 202 /************************************************************
mfwic 0:44a3005d4f20 203 * Routine: showlval
mfwic 0:44a3005d4f20 204 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 205 * value (integer value to display)
mfwic 0:44a3005d4f20 206 * Output: none
mfwic 0:44a3005d4f20 207 * Description:
mfwic 0:44a3005d4f20 208 * Sends an long (value) over the serial port
mfwic 0:44a3005d4f20 209 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 210 *
mfwic 0:44a3005d4f20 211 **************************************************************/
mfwic 0:44a3005d4f20 212 void showlval(char setval, long value)
mfwic 0:44a3005d4f20 213 {
mfwic 0:44a3005d4f20 214 if(!setval)
mfwic 0:44a3005d4f20 215 {
mfwic 1:9f8583ba2431 216 sprintf(strbuf," %ld",value);
mfwic 1:9f8583ba2431 217 sendSerial(strbuf);
mfwic 0:44a3005d4f20 218 }
mfwic 0:44a3005d4f20 219 }
mfwic 0:44a3005d4f20 220
mfwic 0:44a3005d4f20 221 /************************************************************
mfwic 0:44a3005d4f20 222 * Routine: showuival
mfwic 0:44a3005d4f20 223 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 224 * value (integer value to display)
mfwic 0:44a3005d4f20 225 * Output: none
mfwic 0:44a3005d4f20 226 * Description:
mfwic 0:44a3005d4f20 227 * Sends an unsigned int (value) over the serial port
mfwic 0:44a3005d4f20 228 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 229 *
mfwic 0:44a3005d4f20 230 **************************************************************/
mfwic 0:44a3005d4f20 231 void showuival(char setval, unsigned int value)
mfwic 0:44a3005d4f20 232 {
mfwic 0:44a3005d4f20 233 if(!setval)
mfwic 0:44a3005d4f20 234 {
mfwic 1:9f8583ba2431 235 sprintf(strbuf," %u",value);
mfwic 1:9f8583ba2431 236 sendSerial(strbuf);
mfwic 0:44a3005d4f20 237 }
mfwic 0:44a3005d4f20 238 }
mfwic 0:44a3005d4f20 239
mfwic 0:44a3005d4f20 240 /************************************************************
mfwic 0:44a3005d4f20 241 * Routine: showhval
mfwic 0:44a3005d4f20 242 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 243 * value (hex integeger value to display)
mfwic 0:44a3005d4f20 244 * Output: none
mfwic 0:44a3005d4f20 245 * Description:
mfwic 0:44a3005d4f20 246 * Sends an integer (value) in hex over the serial port
mfwic 0:44a3005d4f20 247 * if it is being retrieved (GET)
mfwic 0:44a3005d4f20 248 *
mfwic 0:44a3005d4f20 249 **************************************************************/
mfwic 0:44a3005d4f20 250 void showhval(char setval, int value)
mfwic 0:44a3005d4f20 251 {
mfwic 0:44a3005d4f20 252 if(!setval)
mfwic 0:44a3005d4f20 253 {
mfwic 0:44a3005d4f20 254 if(serialStatus.computer)
mfwic 1:9f8583ba2431 255 sprintf(strbuf," %u",(unsigned int)value);
mfwic 0:44a3005d4f20 256 else
mfwic 1:9f8583ba2431 257 sprintf(strbuf," 0x%04x",value);
mfwic 1:9f8583ba2431 258 sendSerial(strbuf);
mfwic 0:44a3005d4f20 259 }
mfwic 0:44a3005d4f20 260 }
mfwic 0:44a3005d4f20 261
mfwic 0:44a3005d4f20 262
mfwic 0:44a3005d4f20 263 /************************************************************
mfwic 0:44a3005d4f20 264 * Routine: getival
mfwic 0:44a3005d4f20 265 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 266 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 267 * Description:
mfwic 0:44a3005d4f20 268 * Gets an integer from the serial port connection.
mfwic 0:44a3005d4f20 269 *
mfwic 0:44a3005d4f20 270 **************************************************************/
mfwic 0:44a3005d4f20 271 int getival(char setval)
mfwic 0:44a3005d4f20 272 {
mfwic 0:44a3005d4f20 273 if (setval)
mfwic 0:44a3005d4f20 274 {
mfwic 0:44a3005d4f20 275 return atoi(&rxbuf[++bufloc]);
mfwic 0:44a3005d4f20 276 }
mfwic 0:44a3005d4f20 277
mfwic 0:44a3005d4f20 278 return 0;
mfwic 0:44a3005d4f20 279 }
mfwic 0:44a3005d4f20 280
mfwic 0:44a3005d4f20 281 /************************************************************
mfwic 0:44a3005d4f20 282 * Routine: getcval
mfwic 0:44a3005d4f20 283 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 284 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 285 * Description:
mfwic 0:44a3005d4f20 286 * Gets an character from the serial port connection.
mfwic 0:44a3005d4f20 287 *
mfwic 0:44a3005d4f20 288 **************************************************************/
mfwic 0:44a3005d4f20 289 int getcval(char setval)
mfwic 0:44a3005d4f20 290 {
mfwic 0:44a3005d4f20 291 if(setval)
mfwic 0:44a3005d4f20 292 {
mfwic 0:44a3005d4f20 293 // skip one space
mfwic 0:44a3005d4f20 294 ++bufloc;
mfwic 0:44a3005d4f20 295 // skip spaces and the equals sign
mfwic 0:44a3005d4f20 296 while((rxbuf[bufloc] == ' ') || (rxbuf[bufloc] == '='))
mfwic 0:44a3005d4f20 297 bufloc++;
mfwic 0:44a3005d4f20 298 return rxbuf[bufloc++];
mfwic 0:44a3005d4f20 299 }
mfwic 0:44a3005d4f20 300 else
mfwic 0:44a3005d4f20 301 return 0;
mfwic 0:44a3005d4f20 302
mfwic 0:44a3005d4f20 303 }
mfwic 0:44a3005d4f20 304 /************************************************************
mfwic 0:44a3005d4f20 305 * Routine: getlval
mfwic 0:44a3005d4f20 306 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 307 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 308 * Description:
mfwic 0:44a3005d4f20 309 * Gets an long from the serial port connection.
mfwic 0:44a3005d4f20 310 *
mfwic 0:44a3005d4f20 311 **************************************************************/
mfwic 0:44a3005d4f20 312 long getlval(char setval)
mfwic 0:44a3005d4f20 313 {
mfwic 0:44a3005d4f20 314 if(setval)
mfwic 0:44a3005d4f20 315 return atol(&rxbuf[++bufloc]);
mfwic 0:44a3005d4f20 316 else
mfwic 0:44a3005d4f20 317 return 0;
mfwic 0:44a3005d4f20 318
mfwic 0:44a3005d4f20 319 }
mfwic 0:44a3005d4f20 320
mfwic 0:44a3005d4f20 321 /************************************************************
mfwic 0:44a3005d4f20 322 * Routine: getfval
mfwic 0:44a3005d4f20 323 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 324 * Returns: the value if it is being SET or 0 if it is a GET
mfwic 0:44a3005d4f20 325 * Description:
mfwic 0:44a3005d4f20 326 * Gets an float from the serial port connection.
mfwic 0:44a3005d4f20 327 *
mfwic 0:44a3005d4f20 328 **************************************************************/
mfwic 0:44a3005d4f20 329 float getfval(char setval)
mfwic 0:44a3005d4f20 330 {
mfwic 0:44a3005d4f20 331 if(setval)
mfwic 0:44a3005d4f20 332 return atof(&rxbuf[++bufloc]);
mfwic 0:44a3005d4f20 333 else
mfwic 0:44a3005d4f20 334 return 0;
mfwic 0:44a3005d4f20 335 }
mfwic 0:44a3005d4f20 336
mfwic 0:44a3005d4f20 337 /************************************************************
mfwic 0:44a3005d4f20 338 * Routine: validateEntry
mfwic 0:44a3005d4f20 339 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 340 * limlo -- low limit
mfwic 0:44a3005d4f20 341 * limhi -- high limit
mfwic 0:44a3005d4f20 342 * address -- address in eeprom to use
mfwic 0:44a3005d4f20 343 * Returns: 0 if entry validates and is written
mfwic 0:44a3005d4f20 344 * 1 if entry fails
mfwic 0:44a3005d4f20 345 * Description:
mfwic 0:44a3005d4f20 346 * Gets or sets a value in eeprom at the address but only
mfwic 0:44a3005d4f20 347 * if it is between the limits will it write the value to
mfwic 0:44a3005d4f20 348 * eeprom
mfwic 0:44a3005d4f20 349 *
mfwic 0:44a3005d4f20 350 **************************************************************/
mfwic 0:44a3005d4f20 351 int validateEntry(char setvalue, float limlo, float limhi, float *address)
mfwic 0:44a3005d4f20 352 {
mfwic 0:44a3005d4f20 353 float val;
mfwic 0:44a3005d4f20 354
mfwic 0:44a3005d4f20 355 if (setvalue)
mfwic 0:44a3005d4f20 356 {
mfwic 0:44a3005d4f20 357 val = getfval(SET);
mfwic 0:44a3005d4f20 358
mfwic 0:44a3005d4f20 359 if ((val >= limlo) && (val <= limhi))
mfwic 0:44a3005d4f20 360 {
mfwic 0:44a3005d4f20 361 *address = val;
mfwic 0:44a3005d4f20 362 }
mfwic 0:44a3005d4f20 363 else
mfwic 0:44a3005d4f20 364 {
mfwic 0:44a3005d4f20 365 showRangeError(0, 0, val);
mfwic 0:44a3005d4f20 366 return 0;
mfwic 0:44a3005d4f20 367 }
mfwic 0:44a3005d4f20 368 }
mfwic 0:44a3005d4f20 369 else
mfwic 0:44a3005d4f20 370 {
mfwic 0:44a3005d4f20 371 val = *address;
mfwic 1:9f8583ba2431 372 sprintf(strbuf, " %4.3f", val);
mfwic 1:9f8583ba2431 373 sendSerial(strbuf);
mfwic 0:44a3005d4f20 374 }
mfwic 0:44a3005d4f20 375
mfwic 0:44a3005d4f20 376 return 1;
mfwic 0:44a3005d4f20 377 }
mfwic 0:44a3005d4f20 378
mfwic 0:44a3005d4f20 379
mfwic 0:44a3005d4f20 380 /************************************************************
mfwic 0:44a3005d4f20 381 * Routine: validateEntry
mfwic 0:44a3005d4f20 382 * Input: setval (GET or SET)
mfwic 0:44a3005d4f20 383 * limlo -- low limit
mfwic 0:44a3005d4f20 384 * limhi -- high limit
mfwic 0:44a3005d4f20 385 * address -- address in eeprom to use
mfwic 0:44a3005d4f20 386 *
mfwic 0:44a3005d4f20 387 * Returns: FALSE if entry fails
mfwic 0:44a3005d4f20 388 * TRUE if entry validates and is written
mfwic 0:44a3005d4f20 389 *
mfwic 0:44a3005d4f20 390 * Description:
mfwic 0:44a3005d4f20 391 * Gets or sets a value in eeprom at the address but only
mfwic 0:44a3005d4f20 392 * if it is between the limits will it write the value to
mfwic 0:44a3005d4f20 393 * eeprom
mfwic 0:44a3005d4f20 394 *
mfwic 0:44a3005d4f20 395 **************************************************************/
mfwic 0:44a3005d4f20 396 int validateInt(char setvalue, int limlo, int limhi, int *address)
mfwic 0:44a3005d4f20 397 {
mfwic 0:44a3005d4f20 398 float val;
mfwic 0:44a3005d4f20 399
mfwic 0:44a3005d4f20 400 if (setvalue)
mfwic 0:44a3005d4f20 401 {
mfwic 0:44a3005d4f20 402 val = getfval(SET);
mfwic 0:44a3005d4f20 403
mfwic 0:44a3005d4f20 404 if ((val >= limlo) && (val <= limhi))
mfwic 0:44a3005d4f20 405 {
mfwic 0:44a3005d4f20 406 *address = val;
mfwic 0:44a3005d4f20 407 }
mfwic 0:44a3005d4f20 408 else
mfwic 0:44a3005d4f20 409 {
mfwic 0:44a3005d4f20 410 showRangeError(1, val, 0);
mfwic 0:44a3005d4f20 411 return FALSE;
mfwic 0:44a3005d4f20 412 }
mfwic 0:44a3005d4f20 413 }
mfwic 0:44a3005d4f20 414 else
mfwic 0:44a3005d4f20 415 {
mfwic 0:44a3005d4f20 416 val = *address;
mfwic 1:9f8583ba2431 417 sprintf(strbuf, " %4.0f", val);
mfwic 1:9f8583ba2431 418 sendSerial(strbuf);
mfwic 0:44a3005d4f20 419 }
mfwic 0:44a3005d4f20 420
mfwic 0:44a3005d4f20 421 return TRUE;
mfwic 0:44a3005d4f20 422 }
mfwic 0:44a3005d4f20 423
mfwic 0:44a3005d4f20 424
mfwic 0:44a3005d4f20 425 /************************************************************
mfwic 0:44a3005d4f20 426 * Routine: parseCommand
mfwic 0:44a3005d4f20 427 * Input: setvalue (GET or SET), command buffer
mfwic 0:44a3005d4f20 428 * Returns: none
mfwic 0:44a3005d4f20 429 * Description:
mfwic 0:44a3005d4f20 430 * parses a command and gets the commandstring
mfwic 0:44a3005d4f20 431 **************************************************************/
mfwic 0:44a3005d4f20 432 void parseCommand(char setvalue, char *commandString)
mfwic 0:44a3005d4f20 433 {
mfwic 0:44a3005d4f20 434 int i, endofc;
mfwic 0:44a3005d4f20 435 char store;
mfwic 0:44a3005d4f20 436
mfwic 0:44a3005d4f20 437 // Ignore any white space and the optional ';' character before the start of
mfwic 0:44a3005d4f20 438 // the command string (any ']' character is from the last command so skip that,
mfwic 0:44a3005d4f20 439 // too)
mfwic 0:44a3005d4f20 440 while ((isspace(rxbuf[bufloc])) || (rxbuf[bufloc] == ';') || (rxbuf[bufloc] == ']'))
mfwic 0:44a3005d4f20 441 {
mfwic 0:44a3005d4f20 442 bufloc++;
mfwic 0:44a3005d4f20 443 if ((rxbuf[bufloc] == 0x0D) || (rxbuf[bufloc] == 0)) break;
mfwic 0:44a3005d4f20 444 }
mfwic 0:44a3005d4f20 445
mfwic 0:44a3005d4f20 446 if (setvalue)
mfwic 0:44a3005d4f20 447 {
mfwic 0:44a3005d4f20 448 // We need a value for SET so hitting the end is a problem
mfwic 0:44a3005d4f20 449 if ((rxbuf[bufloc] == 0) || (rxbuf[bufloc] == 0x0D))
mfwic 0:44a3005d4f20 450 {
mfwic 0:44a3005d4f20 451 commandError = 1;
mfwic 0:44a3005d4f20 452 return;
mfwic 0:44a3005d4f20 453 }
mfwic 0:44a3005d4f20 454 }
mfwic 0:44a3005d4f20 455
mfwic 0:44a3005d4f20 456 // Find the end of the command string
mfwic 0:44a3005d4f20 457 endofc = bufloc + 1;
mfwic 0:44a3005d4f20 458
mfwic 0:44a3005d4f20 459 // White space, '[' and '?' all terminate the command string
mfwic 0:44a3005d4f20 460 while ((!isspace(rxbuf[endofc])) && (rxbuf[endofc] != '[') && (rxbuf[endofc] != '?'))
mfwic 0:44a3005d4f20 461 {
mfwic 0:44a3005d4f20 462 endofc++;
mfwic 0:44a3005d4f20 463 // (As does hitting the end of rxbuf!)
mfwic 0:44a3005d4f20 464 if ((rxbuf[endofc] == 0x0D) || (rxbuf[endofc] == 0)) break;
mfwic 0:44a3005d4f20 465 }
mfwic 0:44a3005d4f20 466
mfwic 0:44a3005d4f20 467 // Save the character that marks the end of the command string
mfwic 0:44a3005d4f20 468 store = rxbuf[endofc];
mfwic 0:44a3005d4f20 469
mfwic 1:9f8583ba2431 470 // sprintf(strbuf, "store == %c\r\n", store);
mfwic 1:9f8583ba2431 471 // sendSerial(strbuf);
mfwic 0:44a3005d4f20 472
mfwic 0:44a3005d4f20 473 // Command strings ending in '?' are readbacks
mfwic 0:44a3005d4f20 474 readback = ((store == '?') ? 1 : 0);
mfwic 0:44a3005d4f20 475
mfwic 0:44a3005d4f20 476 // Set end to null character so string can now be copied
mfwic 0:44a3005d4f20 477 rxbuf[endofc] = 0;
mfwic 0:44a3005d4f20 478
mfwic 0:44a3005d4f20 479 // Copy the command string into commandString
mfwic 5:09be5bbb5020 480 char commandStringBuf[80];
mfwic 5:09be5bbb5020 481 char *tok;
mfwic 5:09be5bbb5020 482 strcpy(commandStringBuf, &rxbuf[bufloc]);
mfwic 5:09be5bbb5020 483 if(strstr(commandStringBuf, "=")){
mfwic 5:09be5bbb5020 484 tok = strtok(commandStringBuf, "=");
mfwic 5:09be5bbb5020 485 strcpy(commandString, tok);
mfwic 5:09be5bbb5020 486 tok = strtok(NULL, "=");
mfwic 5:09be5bbb5020 487 commandData = atoi(tok);
mfwic 6:39442d493098 488 //if(DEBUG){
mfwic 6:39442d493098 489 // sprintf(strbuf, "commandStringBuf= %s, commandData= %d", commandStringBuf, commandData);
mfwic 6:39442d493098 490 // sendSerial(strbuf);
mfwic 6:39442d493098 491 //}
mfwic 5:09be5bbb5020 492 }
mfwic 5:09be5bbb5020 493 else{
mfwic 5:09be5bbb5020 494 strcpy(commandString, commandStringBuf);
mfwic 5:09be5bbb5020 495 }
mfwic 0:44a3005d4f20 496
mfwic 0:44a3005d4f20 497 // Convert the command string to all uppercase characters
mfwic 0:44a3005d4f20 498 for (i = 0; i < strlen(commandString); i++)
mfwic 0:44a3005d4f20 499 {
mfwic 0:44a3005d4f20 500 commandString[i] = toupper(commandString[i]);
mfwic 0:44a3005d4f20 501 }
mfwic 0:44a3005d4f20 502
mfwic 0:44a3005d4f20 503 // Replace the character we clobbered in rxbuf
mfwic 0:44a3005d4f20 504 rxbuf[endofc] = store;
mfwic 0:44a3005d4f20 505
mfwic 0:44a3005d4f20 506 // Update bufloc to the end of the command string
mfwic 0:44a3005d4f20 507 bufloc = endofc;
mfwic 0:44a3005d4f20 508 }
mfwic 0:44a3005d4f20 509
mfwic 0:44a3005d4f20 510 /************************************************************
mfwic 0:44a3005d4f20 511 * Routine: validateChannel
mfwic 0:44a3005d4f20 512 * Input: channel
mfwic 0:44a3005d4f20 513 * Returns: none
mfwic 0:44a3005d4f20 514 * Description:
mfwic 0:44a3005d4f20 515 * Verifies that the channel number is a valid value between
mfwic 0:44a3005d4f20 516 * 1 and MAX_BOARDS, setting commandError if the check fails
mfwic 0:44a3005d4f20 517 **************************************************************/
mfwic 0:44a3005d4f20 518 void validateChannel(int channel)
mfwic 0:44a3005d4f20 519 {
mfwic 0:44a3005d4f20 520 if ((channel < 1) || (channel > MAX_BOARDS))
mfwic 0:44a3005d4f20 521 {
mfwic 1:9f8583ba2431 522 sprintf(strbuf, " Invalid channel/board: %d (range is 1 - %d)", channel, MAX_BOARDS);
mfwic 1:9f8583ba2431 523 sendSerial(strbuf);
mfwic 0:44a3005d4f20 524 commandError = 1;
mfwic 0:44a3005d4f20 525 }
mfwic 0:44a3005d4f20 526 }
mfwic 0:44a3005d4f20 527
mfwic 0:44a3005d4f20 528 /************************************************************
mfwic 0:44a3005d4f20 529 * Routine: setPairVariable
mfwic 0:44a3005d4f20 530 * Input: *avariable,*bvariable
mfwic 0:44a3005d4f20 531 * Returns: none
mfwic 0:44a3005d4f20 532 * Description:
mfwic 0:44a3005d4f20 533 * sets a single channel variable
mfwic 0:44a3005d4f20 534 **************************************************************/
mfwic 0:44a3005d4f20 535 void setPairVariable(float *avariable, float *bvariable, float limitlo, float limithi)
mfwic 0:44a3005d4f20 536 {
mfwic 0:44a3005d4f20 537 if (!readback)
mfwic 0:44a3005d4f20 538 {
mfwic 0:44a3005d4f20 539 if (validateEntry(SET, limitlo, limithi, avariable))
mfwic 0:44a3005d4f20 540 {
mfwic 0:44a3005d4f20 541 *bvariable = *avariable;
mfwic 0:44a3005d4f20 542 }
mfwic 0:44a3005d4f20 543 }
mfwic 0:44a3005d4f20 544 }
mfwic 0:44a3005d4f20 545
mfwic 0:44a3005d4f20 546 /************************************************************
mfwic 0:44a3005d4f20 547 * Routine: testMenu
mfwic 0:44a3005d4f20 548 * Input: none
mfwic 0:44a3005d4f20 549 * Returns: none
mfwic 0:44a3005d4f20 550 * Description:
mfwic 0:44a3005d4f20 551 * testMenu
mfwic 0:44a3005d4f20 552 **************************************************************/
mfwic 0:44a3005d4f20 553 void testMenu(void)
mfwic 0:44a3005d4f20 554 {
mfwic 0:44a3005d4f20 555 int ival;
mfwic 0:44a3005d4f20 556 int ch, dac;
mfwic 6:39442d493098 557 //float fval;
mfwic 0:44a3005d4f20 558 unsigned int data;
mfwic 0:44a3005d4f20 559
mfwic 0:44a3005d4f20 560 char commandString[80] = { 0 };
mfwic 5:09be5bbb5020 561
mfwic 0:44a3005d4f20 562
mfwic 0:44a3005d4f20 563 commandError = 0;
mfwic 0:44a3005d4f20 564 parseCommand(GET, commandString);
mfwic 0:44a3005d4f20 565
mfwic 0:44a3005d4f20 566 if (!strcmp(commandString, "LEDS")) // duh do I have to tell you?
mfwic 0:44a3005d4f20 567 {
mfwic 1:9f8583ba2431 568 //testLEDs();
mfwic 0:44a3005d4f20 569 return;
mfwic 0:44a3005d4f20 570 }
mfwic 0:44a3005d4f20 571
mfwic 0:44a3005d4f20 572 if (!strcmp(commandString, "SELFTEST"))
mfwic 0:44a3005d4f20 573 {
mfwic 0:44a3005d4f20 574 if ((rxbuf[bufloc] == 0x0D) || (rxbuf[bufloc] == 0))
mfwic 0:44a3005d4f20 575 {
mfwic 1:9f8583ba2431 576 //ival = DEFAULT_SELFTEST_BOARDS;
mfwic 1:9f8583ba2431 577 ival = 0;
mfwic 0:44a3005d4f20 578 }
mfwic 0:44a3005d4f20 579 else
mfwic 0:44a3005d4f20 580 {
mfwic 0:44a3005d4f20 581 ival = getival(SET);
mfwic 0:44a3005d4f20 582
mfwic 0:44a3005d4f20 583 if ((ival < 1) || (ival > MAX_BOARDS))
mfwic 0:44a3005d4f20 584 {
mfwic 1:9f8583ba2431 585 sprintf(strbuf, " Invalid number of channels/boards (range is 1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 586 sendSerial(strbuf);
mfwic 0:44a3005d4f20 587 commandError = 1;
mfwic 0:44a3005d4f20 588 return;
mfwic 0:44a3005d4f20 589 }
mfwic 0:44a3005d4f20 590 }
mfwic 0:44a3005d4f20 591
mfwic 1:9f8583ba2431 592 //selfTest(ival);
mfwic 0:44a3005d4f20 593 return;
mfwic 0:44a3005d4f20 594 }
mfwic 0:44a3005d4f20 595
mfwic 0:44a3005d4f20 596 if (!strcmp(commandString, "HVEN")) // high voltage enable
mfwic 0:44a3005d4f20 597 {
mfwic 0:44a3005d4f20 598 ival = getival(SET);
mfwic 1:9f8583ba2431 599 //hv_en = ival;
mfwic 0:44a3005d4f20 600 return;
mfwic 0:44a3005d4f20 601 }
mfwic 0:44a3005d4f20 602
mfwic 0:44a3005d4f20 603 if (!strcmp(commandString, "DAC"))
mfwic 0:44a3005d4f20 604 {
mfwic 0:44a3005d4f20 605 ch = getival(SET);
mfwic 0:44a3005d4f20 606 getDelimiter();
mfwic 0:44a3005d4f20 607 dac = getival(SET);
mfwic 0:44a3005d4f20 608 getDelimiter();
mfwic 0:44a3005d4f20 609 data = getival(SET);
mfwic 0:44a3005d4f20 610
mfwic 0:44a3005d4f20 611 validateChannel(ch);
mfwic 0:44a3005d4f20 612 if (commandError) return;
mfwic 0:44a3005d4f20 613 ch--;
mfwic 0:44a3005d4f20 614
mfwic 1:9f8583ba2431 615 //sendData((unsigned int)ch, (unsigned int)dac, data);
mfwic 1:9f8583ba2431 616 sprintf(strbuf, " ch: %u dac: %u value: %u", ch + 1, dac, data);
mfwic 1:9f8583ba2431 617 sendSerial(strbuf);
mfwic 0:44a3005d4f20 618 return;
mfwic 0:44a3005d4f20 619 }
mfwic 0:44a3005d4f20 620
mfwic 0:44a3005d4f20 621 if (!strcmp(commandString, "DINIT"))
mfwic 0:44a3005d4f20 622 {
mfwic 1:9f8583ba2431 623 //initDACs();
mfwic 0:44a3005d4f20 624 return;
mfwic 0:44a3005d4f20 625 }
mfwic 0:44a3005d4f20 626
mfwic 0:44a3005d4f20 627 if (!strcmp(commandString, "FINIT"))
mfwic 0:44a3005d4f20 628 {
mfwic 1:9f8583ba2431 629 //formatParameterSector();
mfwic 0:44a3005d4f20 630 return;
mfwic 0:44a3005d4f20 631 }
mfwic 0:44a3005d4f20 632
mfwic 0:44a3005d4f20 633 if (!strcmp(commandString, "CINIT"))
mfwic 0:44a3005d4f20 634 {
mfwic 1:9f8583ba2431 635 //initCalParameters();
mfwic 1:9f8583ba2431 636 sprintf(strbuf, " All calibration parameters set to default values");
mfwic 1:9f8583ba2431 637 sendSerial(strbuf);
mfwic 0:44a3005d4f20 638 return;
mfwic 0:44a3005d4f20 639 }
mfwic 0:44a3005d4f20 640
mfwic 0:44a3005d4f20 641 if (strcmp(commandString, ""))
mfwic 0:44a3005d4f20 642 {
mfwic 0:44a3005d4f20 643 commandError = 1;
mfwic 0:44a3005d4f20 644 }
mfwic 11:01dcfb29fbc4 645 }//end void testMenu
mfwic 0:44a3005d4f20 646
mfwic 11:01dcfb29fbc4 647 unsigned int checkRegisterCompatibility(unsigned int reg)
mfwic 0:44a3005d4f20 648 {
mfwic 0:44a3005d4f20 649 int i;
mfwic 11:01dcfb29fbc4 650
mfwic 11:01dcfb29fbc4 651 unsigned int boardsEnabled = 0;
mfwic 0:44a3005d4f20 652
mfwic 0:44a3005d4f20 653 for (i = 0; i < MAX_BOARDS; i++)
mfwic 0:44a3005d4f20 654 {
mfwic 11:01dcfb29fbc4 655 //if (ch[i][reg].enabled == 1)
mfwic 11:01dcfb29fbc4 656 //{
mfwic 11:01dcfb29fbc4 657 // Set the corresponding bit
mfwic 11:01dcfb29fbc4 658 boardsEnabled |= (1 << i);
mfwic 11:01dcfb29fbc4 659 //}
mfwic 11:01dcfb29fbc4 660 }
mfwic 11:01dcfb29fbc4 661
mfwic 11:01dcfb29fbc4 662 // Invert the bits because 0 == enabled on the SPI write
mfwic 11:01dcfb29fbc4 663 boardsEnabled = ~boardsEnabled;
mfwic 0:44a3005d4f20 664
mfwic 11:01dcfb29fbc4 665 return (boardsEnabled ^ boardEnableBits) & 0x000003FF;
mfwic 11:01dcfb29fbc4 666 }
mfwic 0:44a3005d4f20 667
mfwic 0:44a3005d4f20 668 /************************************************************
mfwic 0:44a3005d4f20 669 * Routine: doCommand
mfwic 0:44a3005d4f20 670 * Input: none
mfwic 0:44a3005d4f20 671 * Returns: none
mfwic 0:44a3005d4f20 672 * Description:
mfwic 0:44a3005d4f20 673 * This is the start of the command string.
mfwic 0:44a3005d4f20 674 **************************************************************/
mfwic 0:44a3005d4f20 675 void doCommand(void)
mfwic 0:44a3005d4f20 676 {
mfwic 6:39442d493098 677 int ival;
mfwic 0:44a3005d4f20 678 unsigned int boardEnables;
mfwic 0:44a3005d4f20 679
mfwic 0:44a3005d4f20 680 char commandString[80] = { 0 };
mfwic 0:44a3005d4f20 681
mfwic 0:44a3005d4f20 682 bufloc = 0;
mfwic 0:44a3005d4f20 683 commandError = 0;
mfwic 0:44a3005d4f20 684
mfwic 0:44a3005d4f20 685 parseCommand(GET, commandString);
mfwic 0:44a3005d4f20 686
mfwic 1:9f8583ba2431 687 if (!strcmp(commandString, "MENU"))
mfwic 1:9f8583ba2431 688 {
mfwic 8:d3d7dca419b3 689 menuRedraw(NO_PROMPT);
mfwic 1:9f8583ba2431 690 }
mfwic 3:d8948c5b2951 691 else if (!strcmp(commandString, "HELP"))
mfwic 3:d8948c5b2951 692 {
mfwic 8:d3d7dca419b3 693 menuRedraw(NO_PROMPT);
mfwic 3:d8948c5b2951 694 }
mfwic 1:9f8583ba2431 695 else if (!strcmp(commandString, "BRDS"))
mfwic 1:9f8583ba2431 696 // BRDS is used to get/set the wr_out value.
mfwic 5:09be5bbb5020 697 // The integer value of boardsActive is used to change wr_out via setBoardEnables(boardsActive).
mfwic 1:9f8583ba2431 698 // Slots 12 to 0 are activated with the wr_out signals
mfwic 1:9f8583ba2431 699 // wr_out[13] = slots[12:0]
mfwic 0:44a3005d4f20 700 {
mfwic 5:09be5bbb5020 701
mfwic 5:09be5bbb5020 702 boardsActive = commandData;
mfwic 5:09be5bbb5020 703
mfwic 0:44a3005d4f20 704 if (readback)
mfwic 0:44a3005d4f20 705 {
mfwic 5:09be5bbb5020 706 sprintf(strbuf, " %d", boardsActive);
mfwic 1:9f8583ba2431 707 sendSerial(strbuf);
mfwic 0:44a3005d4f20 708 }
mfwic 1:9f8583ba2431 709 //else if (running == 1)
mfwic 1:9f8583ba2431 710 //{
mfwic 1:9f8583ba2431 711 // sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 712 // sendSerial(strbuf);
mfwic 1:9f8583ba2431 713 //}
mfwic 0:44a3005d4f20 714 else
mfwic 0:44a3005d4f20 715 {
mfwic 5:09be5bbb5020 716 if(checkRange(boardsActive, 0, 63) == 1){
mfwic 6:39442d493098 717 en_out_code = setBoardWeights(boardsActive);
mfwic 1:9f8583ba2431 718 }else{
mfwic 5:09be5bbb5020 719 showRangeError(1, boardsActive, 0.0);
mfwic 1:9f8583ba2431 720 }
mfwic 1:9f8583ba2431 721 }
mfwic 1:9f8583ba2431 722 }
mfwic 1:9f8583ba2431 723 else if (!strcmp(commandString, "MULT"))
mfwic 1:9f8583ba2431 724 // MULT is used to get/set the en_out value.
mfwic 5:09be5bbb5020 725 // The integer value of boardMults is used to change en_out via setBoardWeights(boardMults).
mfwic 1:9f8583ba2431 726 // en_out are binary weighted signals that activate groups of DC-DC converters on the slot cards.
mfwic 1:9f8583ba2431 727 // en_out[6] = {en32, en16, en8, en4, en2, en1}
mfwic 1:9f8583ba2431 728 {
mfwic 5:09be5bbb5020 729 boardMults = commandData;
mfwic 5:09be5bbb5020 730
mfwic 1:9f8583ba2431 731 if (readback)
mfwic 1:9f8583ba2431 732 {
mfwic 5:09be5bbb5020 733 sprintf(strbuf, " %d", boardMults);
mfwic 1:9f8583ba2431 734 sendSerial(strbuf);
mfwic 1:9f8583ba2431 735 }
mfwic 1:9f8583ba2431 736 //else if (running == 1)
mfwic 1:9f8583ba2431 737 //{
mfwic 1:9f8583ba2431 738 // sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 739 // sendSerial(strbuf);
mfwic 1:9f8583ba2431 740 //}
mfwic 1:9f8583ba2431 741 else
mfwic 1:9f8583ba2431 742 {
mfwic 5:09be5bbb5020 743 if(checkRange(boardMults, 0, 63) == 1){
mfwic 6:39442d493098 744 en_out_code = setBoardWeights(boardMults);
mfwic 1:9f8583ba2431 745 }else{
mfwic 5:09be5bbb5020 746 showRangeError(1, boardMults, 0.0);
mfwic 1:9f8583ba2431 747 }
mfwic 0:44a3005d4f20 748 }
mfwic 0:44a3005d4f20 749 }
mfwic 6:39442d493098 750 else if (!strcmp(commandString, "MY12"))
mfwic 6:39442d493098 751 // MULT is used to get/set the en_out value.
mfwic 6:39442d493098 752 // The integer value of boardMults is used to change en_out via setBoardWeights(boardMults).
mfwic 6:39442d493098 753 // en_out are binary weighted signals that activate groups of DC-DC converters on the slot cards.
mfwic 6:39442d493098 754 // en_out[6] = {en32, en16, en8, en4, en2, en1}
mfwic 6:39442d493098 755 {
mfwic 6:39442d493098 756 my12 = commandData;
mfwic 6:39442d493098 757
mfwic 6:39442d493098 758 //if(DEBUG){
mfwic 6:39442d493098 759 // sprintf(strbuf, "my12=%d commandData=%d\r\n", my12, commandData);
mfwic 6:39442d493098 760 // sendSerial(strbuf);
mfwic 6:39442d493098 761 //}
mfwic 6:39442d493098 762
mfwic 6:39442d493098 763 if (readback)
mfwic 6:39442d493098 764 {
mfwic 6:39442d493098 765 sprintf(strbuf, " %d", my12);
mfwic 6:39442d493098 766 sendSerial(strbuf);
mfwic 6:39442d493098 767 }
mfwic 6:39442d493098 768 }
mfwic 0:44a3005d4f20 769 else if (!strcmp(commandString, "ALLOFF"))
mfwic 0:44a3005d4f20 770 {
mfwic 7:860b3a8275cb 771 my12 = 0;
mfwic 7:860b3a8275cb 772 running = FALSE;
mfwic 7:860b3a8275cb 773 if(DEBUG){
mfwic 7:860b3a8275cb 774 sprintf(strbuf, "wr_out_code=%d\r\n", wr_out_code);
mfwic 7:860b3a8275cb 775 sendSerial(strbuf);
mfwic 7:860b3a8275cb 776 }
mfwic 0:44a3005d4f20 777 }
mfwic 0:44a3005d4f20 778 else if (!strcmp(commandString, "ALLON"))
mfwic 0:44a3005d4f20 779 {
mfwic 7:860b3a8275cb 780 wr_out_code = setBoardEnables((unsigned int)ALLON);
mfwic 0:44a3005d4f20 781 }
mfwic 0:44a3005d4f20 782 else if (!strcmp(commandString, "RUN"))
mfwic 0:44a3005d4f20 783 {
mfwic 0:44a3005d4f20 784 // Skip over any white space and the optional '[' character
mfwic 0:44a3005d4f20 785 while ((isspace(rxbuf[bufloc])) || (rxbuf[bufloc] == '[')) bufloc++;
mfwic 0:44a3005d4f20 786
mfwic 9:816b9a4e4f21 787 if(rxbuf[bufloc] == NULL){
mfwic 9:816b9a4e4f21 788 boardsActive = 1;
mfwic 9:816b9a4e4f21 789 startConverter(boardsActive);
mfwic 9:816b9a4e4f21 790 }
mfwic 9:816b9a4e4f21 791 else if (rxbuf[bufloc] == '0')
mfwic 9:816b9a4e4f21 792 //if (rxbuf[bufloc] == '0')
mfwic 0:44a3005d4f20 793 {
mfwic 1:9f8583ba2431 794 stopConverter();
mfwic 1:9f8583ba2431 795 //setDacsToZeroVolts();
mfwic 0:44a3005d4f20 796 }
mfwic 1:9f8583ba2431 797 else if ((rxbuf[bufloc] > '0') && (rxbuf[bufloc] < '0' + MAX_BOARDS))
mfwic 0:44a3005d4f20 798 {
mfwic 0:44a3005d4f20 799 ival = atoi(&rxbuf[bufloc]);
mfwic 9:816b9a4e4f21 800 //ival--;
mfwic 0:44a3005d4f20 801
mfwic 0:44a3005d4f20 802 if (running == 0)
mfwic 0:44a3005d4f20 803 {
mfwic 1:9f8583ba2431 804 boardsActive = ival;
mfwic 1:9f8583ba2431 805 startConverter(boardsActive);
mfwic 0:44a3005d4f20 806 }
mfwic 0:44a3005d4f20 807 else
mfwic 0:44a3005d4f20 808 {
mfwic 0:44a3005d4f20 809 // Compare the board enable flags between registers
mfwic 0:44a3005d4f20 810 boardEnables = checkRegisterCompatibility(ival);
mfwic 0:44a3005d4f20 811
mfwic 0:44a3005d4f20 812 // If board enable flags match, change the register set
mfwic 0:44a3005d4f20 813 if (boardEnables == 0)
mfwic 0:44a3005d4f20 814 {
mfwic 1:9f8583ba2431 815 boardsActive = ival;
mfwic 0:44a3005d4f20 816 }
mfwic 0:44a3005d4f20 817 else
mfwic 0:44a3005d4f20 818 {
mfwic 1:9f8583ba2431 819 sprintf(strbuf, " Board enable flags do not match (0x%08x)", boardEnables);
mfwic 1:9f8583ba2431 820 sendSerial(strbuf);
mfwic 0:44a3005d4f20 821 }
mfwic 0:44a3005d4f20 822 }
mfwic 0:44a3005d4f20 823 }
mfwic 0:44a3005d4f20 824 else
mfwic 0:44a3005d4f20 825 {
mfwic 9:816b9a4e4f21 826 sprintf(strbuf, " Invalid number of boards (1 - %d)", MAX_BOARDS);
mfwic 1:9f8583ba2431 827 sendSerial(strbuf);
mfwic 0:44a3005d4f20 828 commandError = 1;
mfwic 0:44a3005d4f20 829 }
mfwic 0:44a3005d4f20 830 }
mfwic 0:44a3005d4f20 831 else if (!strcmp(commandString, "STOP"))
mfwic 0:44a3005d4f20 832 {
mfwic 1:9f8583ba2431 833 stopConverter();
mfwic 1:9f8583ba2431 834 //hv_en = OFF;
mfwic 0:44a3005d4f20 835 }
mfwic 0:44a3005d4f20 836 else if(!strcmp(commandString, "TEST"))
mfwic 0:44a3005d4f20 837 {
mfwic 0:44a3005d4f20 838 if (running == 1)
mfwic 0:44a3005d4f20 839 {
mfwic 1:9f8583ba2431 840 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 841 sendSerial(strbuf);
mfwic 0:44a3005d4f20 842 }
mfwic 0:44a3005d4f20 843 else
mfwic 0:44a3005d4f20 844 {
mfwic 0:44a3005d4f20 845 testMenu();
mfwic 0:44a3005d4f20 846 }
mfwic 0:44a3005d4f20 847 }
mfwic 8:d3d7dca419b3 848 else if(!strcmp(commandString, "CAL"))
mfwic 0:44a3005d4f20 849 {
mfwic 0:44a3005d4f20 850 if (running == 1)
mfwic 0:44a3005d4f20 851 {
mfwic 1:9f8583ba2431 852 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 1:9f8583ba2431 853 sendSerial(strbuf);
mfwic 0:44a3005d4f20 854 commandError = 1;
mfwic 0:44a3005d4f20 855 }
mfwic 11:01dcfb29fbc4 856
mfwic 8:d3d7dca419b3 857 if (!commandError){
mfwic 8:d3d7dca419b3 858 raw = TRUE;
mfwic 8:d3d7dca419b3 859 menuRedraw(NO_PROMPT);
mfwic 0:44a3005d4f20 860 }
mfwic 8:d3d7dca419b3 861 }
mfwic 8:d3d7dca419b3 862 else if(!strcmp(commandString, "UNCAL"))
mfwic 8:d3d7dca419b3 863 {
mfwic 8:d3d7dca419b3 864 if (running == 1)
mfwic 8:d3d7dca419b3 865 {
mfwic 8:d3d7dca419b3 866 sprintf(strbuf, " Parameters may not be updated while running!");
mfwic 8:d3d7dca419b3 867 sendSerial(strbuf);
mfwic 8:d3d7dca419b3 868 commandError = 1;
mfwic 8:d3d7dca419b3 869 }
mfwic 11:01dcfb29fbc4 870
mfwic 8:d3d7dca419b3 871 if (!commandError){
mfwic 8:d3d7dca419b3 872 raw = FALSE;
mfwic 8:d3d7dca419b3 873 menuRedraw(NO_PROMPT);
mfwic 8:d3d7dca419b3 874 }
mfwic 8:d3d7dca419b3 875 }
mfwic 0:44a3005d4f20 876 else
mfwic 0:44a3005d4f20 877 {
mfwic 0:44a3005d4f20 878 if (strcmp(commandString, ""))
mfwic 0:44a3005d4f20 879 {
mfwic 0:44a3005d4f20 880 commandError = 1;
mfwic 0:44a3005d4f20 881 }
mfwic 0:44a3005d4f20 882 }
mfwic 0:44a3005d4f20 883
mfwic 0:44a3005d4f20 884 if (commandError)
mfwic 0:44a3005d4f20 885 {
mfwic 6:39442d493098 886 sendSerial(" !");
mfwic 0:44a3005d4f20 887 }
mfwic 0:44a3005d4f20 888
mfwic 3:d8948c5b2951 889 //sendCRLF();
mfwic 3:d8948c5b2951 890 menuPrompt(MENU_DCM1);
mfwic 0:44a3005d4f20 891 }
mfwic 0:44a3005d4f20 892
mfwic 0:44a3005d4f20 893 /************************************************************
mfwic 0:44a3005d4f20 894 * Routine: processCommand
mfwic 0:44a3005d4f20 895 * Input: none
mfwic 0:44a3005d4f20 896 * Returns: none
mfwic 0:44a3005d4f20 897 * Description:
mfwic 0:44a3005d4f20 898 * This is the main serial communications routine. Everything
mfwic 0:44a3005d4f20 899 * starts here as soon as a command is avaiable for processing.
mfwic 0:44a3005d4f20 900 **************************************************************/
mfwic 0:44a3005d4f20 901 void processCommand(void)
mfwic 0:44a3005d4f20 902 {
mfwic 0:44a3005d4f20 903 if (!serialStatus.command && !serialStatus.repeat)
mfwic 0:44a3005d4f20 904 {
mfwic 0:44a3005d4f20 905 return;
mfwic 0:44a3005d4f20 906 }
mfwic 0:44a3005d4f20 907
mfwic 0:44a3005d4f20 908 doCommand(); // if not computer (i.e. terminal) you can do the command as well
mfwic 0:44a3005d4f20 909
mfwic 0:44a3005d4f20 910 bufloc = 0;
mfwic 0:44a3005d4f20 911 rxbuf[bufloc] = 0;
mfwic 0:44a3005d4f20 912
mfwic 0:44a3005d4f20 913 serialStatus.computer = FALSE;
mfwic 0:44a3005d4f20 914 serialStatus.command = FALSE;
mfwic 9:816b9a4e4f21 915
mfwic 9:816b9a4e4f21 916 //sendSerial("didCommand\r\n");
mfwic 0:44a3005d4f20 917 }
mfwic 8:d3d7dca419b3 918
mfwic 8:d3d7dca419b3 919 /************************************************************
mfwic 8:d3d7dca419b3 920 * Routine: waitCommand
mfwic 8:d3d7dca419b3 921 * Input: none
mfwic 8:d3d7dca419b3 922 * Returns: none
mfwic 8:d3d7dca419b3 923 * Description:
mfwic 8:d3d7dca419b3 924 **************************************************************/
mfwic 8:d3d7dca419b3 925 bool waitCommand(void)
mfwic 8:d3d7dca419b3 926 {
mfwic 8:d3d7dca419b3 927 if (!serialStatus.command && !serialStatus.repeat)
mfwic 8:d3d7dca419b3 928 {
mfwic 8:d3d7dca419b3 929 return TRUE;
mfwic 8:d3d7dca419b3 930 }
mfwic 8:d3d7dca419b3 931
mfwic 8:d3d7dca419b3 932 serialStatus.computer = FALSE;
mfwic 8:d3d7dca419b3 933 serialStatus.command = FALSE;
mfwic 8:d3d7dca419b3 934
mfwic 8:d3d7dca419b3 935 return FALSE;
mfwic 8:d3d7dca419b3 936 }
mfwic 11:01dcfb29fbc4 937
mfwic 11:01dcfb29fbc4 938 // Verify that the same boards are enabled in both the current register and
mfwic 11:01dcfb29fbc4 939 // the specified register
mfwic 11:01dcfb29fbc4 940
mfwic 11:01dcfb29fbc4 941