Solid experiment slow control.

Dependencies:   AD5384 SWSPI S_SCTRL_SMlib T_adt7320 adc_ad9249 mbed sscm_comm

Fork of sscm by wimbeaumont Project

Committer:
NickRyder
Date:
Tue Oct 07 21:42:17 2014 +0000
Revision:
6:dbc657396b7b
Parent:
5:1be2795321e2
Tidied up.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
wbeaumont 0:dcd70d1b89b1 1 #include "mbed.h"
wbeaumont 1:f792767b2223 2 /* SOLID SM1 Slow Control firmware
wbeaumont 1:f792767b2223 3 *
wbeaumont 1:f792767b2223 4
wbeaumont 1:f792767b2223 5 * V 1.0? initial version release
wbeaumont 1:f792767b2223 6 * v 1.11 version , added status field
wbeaumont 1:f792767b2223 7 * v 1.13 corrected error in ADC register write
wbeaumont 2:d18b1a1643e8 8 * v 1.14 added heartbeat off / in
wbeaumont 3:badf265a8898 9 * v 1.20 added DAC
wbeaumont 3:badf265a8898 10 * v 1.30 added Temperature probe support
wbeaumont 3:badf265a8898 11 * v 1.31 bug correction ,for selecting the probe the devnr has to be used
wbeaumont 3:badf265a8898 12 * v 1.35 added version read for software modules (comm, T , ADC , DAC SWSPI)
wbeaumont 3:badf265a8898 13 * v 1.36 added ini1 ini2 srst commands for DAC
wbeaumont 3:badf265a8898 14 * v 1.37 new get Version class
wbeaumont 1:f792767b2223 15 */
wbeaumont 0:dcd70d1b89b1 16
wbeaumont 3:badf265a8898 17 #define VERSION "1.37"
wbeaumont 0:dcd70d1b89b1 18
wbeaumont 2:d18b1a1643e8 19
wbeaumont 3:badf265a8898 20 #include "SWSPI_BI.h"
wbeaumont 0:dcd70d1b89b1 21 #include "solid_sctrl_def.h"
wbeaumont 0:dcd70d1b89b1 22 #include "S_SCTRL_SM1_PinDef.h"
wbeaumont 0:dcd70d1b89b1 23 #include "S_SCTRL_SM1_hwfunct.h"
wbeaumont 2:d18b1a1643e8 24 #include "AD9249.h"
wbeaumont 2:d18b1a1643e8 25 #include "AD5384.h"
wbeaumont 3:badf265a8898 26 #include "adt7320.h"
wbeaumont 3:badf265a8898 27 #include "getVersion.h"
wbeaumont 0:dcd70d1b89b1 28
wbeaumont 0:dcd70d1b89b1 29 #define DEBUGPF(x) printf((x));
wbeaumont 0:dcd70d1b89b1 30
wbeaumont 0:dcd70d1b89b1 31
wbeaumont 0:dcd70d1b89b1 32 #define MAXCMDLLENGTH 256
wbeaumont 0:dcd70d1b89b1 33
wbeaumont 0:dcd70d1b89b1 34 #include "sscm_comm.h"
wbeaumont 0:dcd70d1b89b1 35 using namespace sscm_comm ;
wbeaumont 0:dcd70d1b89b1 36
wbeaumont 0:dcd70d1b89b1 37 Serial pc(USBTX,USBRX);
wbeaumont 0:dcd70d1b89b1 38
wbeaumont 0:dcd70d1b89b1 39 char cmdin[MAXCMDLLENGTH];
wbeaumont 0:dcd70d1b89b1 40 u8 cmdready;
wbeaumont 0:dcd70d1b89b1 41 bool cmdstart=false;
wbeaumont 0:dcd70d1b89b1 42
wbeaumont 0:dcd70d1b89b1 43 void pc_callback() {
wbeaumont 0:dcd70d1b89b1 44 // Note: you need to actually read from the serial to clear the RX interrupt
wbeaumont 0:dcd70d1b89b1 45 static unsigned char cnt;
wbeaumont 0:dcd70d1b89b1 46 char c;
NickRyder 4:4f7a57fac239 47 c = pc.getc();
NickRyder 4:4f7a57fac239 48 if (c == CMDSTART && !cmdready) {
NickRyder 4:4f7a57fac239 49 cnt = 0;
NickRyder 4:4f7a57fac239 50 cmdstart = true;
NickRyder 4:4f7a57fac239 51 cmdready = false;
NickRyder 4:4f7a57fac239 52 }
NickRyder 4:4f7a57fac239 53 if (cmdstart) {
NickRyder 4:4f7a57fac239 54 cmdin[cnt] = c;
NickRyder 4:4f7a57fac239 55 cnt++;
NickRyder 4:4f7a57fac239 56 if (c == CMDSTOP) {
NickRyder 4:4f7a57fac239 57 cmdready = true;
NickRyder 4:4f7a57fac239 58 }
NickRyder 4:4f7a57fac239 59 }
wbeaumont 0:dcd70d1b89b1 60 //printf("%c:",c );
wbeaumont 0:dcd70d1b89b1 61 }
wbeaumont 0:dcd70d1b89b1 62
wbeaumont 0:dcd70d1b89b1 63 int main() {
wbeaumont 0:dcd70d1b89b1 64 pc.attach(pc_callback);
wbeaumont 0:dcd70d1b89b1 65 ssc_cmd cmd;
NickRyder 4:4f7a57fac239 66 bool heartbeat = true;
wbeaumont 0:dcd70d1b89b1 67 int i = 0;
NickRyder 4:4f7a57fac239 68 HWlines hwl;
NickRyder 4:4f7a57fac239 69 assignports(&hwl);
NickRyder 4:4f7a57fac239 70 setdefault(hwl);
wbeaumont 3:badf265a8898 71 // reuse getVesion
NickRyder 5:1be2795321e2 72 getVersion gv(VERSION, VERSION, __TIME__, __DATE__);
wbeaumont 3:badf265a8898 73 getVersion gvc;
wbeaumont 3:badf265a8898 74 getsscmVersion gvsscm;
NickRyder 4:4f7a57fac239 75 SWSPI spi(hwl.mosi[0], hwl.miso[0], hwl.sclk[0]); // mosi, miso, sclk
NickRyder 4:4f7a57fac239 76 SWSPI spi2(hwl.mosi[1], hwl.miso[1], hwl.sclk[1]); // mosi, miso, sclk
wbeaumont 0:dcd70d1b89b1 77
NickRyder 4:4f7a57fac239 78 SWSPI_BI spi_adc(hwl.msio[0], hwl.direction[0], hwl.stio_mo[0],
NickRyder 4:4f7a57fac239 79 hwl.sclk[0]); // msio, dir , sclk
NickRyder 4:4f7a57fac239 80 SWSPI_BI spi_adc2(hwl.msio[1], hwl.direction[1], hwl.stio_mo[1],
NickRyder 4:4f7a57fac239 81 hwl.sclk[1]); // msio, dir , sclk
wbeaumont 0:dcd70d1b89b1 82 // initalize ADC classes
NickRyder 4:4f7a57fac239 83 AD9249 adc[2][2] = {AD9249(&spi_adc, hwl.csb1[0]),
NickRyder 4:4f7a57fac239 84 AD9249(&spi_adc, hwl.csb2[0]),
NickRyder 4:4f7a57fac239 85 AD9249(&spi_adc2, hwl.csb1[1]),
NickRyder 4:4f7a57fac239 86 AD9249(&spi_adc2, hwl.csb2[1])};
NickRyder 4:4f7a57fac239 87 AD5384 dac[2][1] = {AD5384(&spi, hwl.dac_cs[0]),
NickRyder 4:4f7a57fac239 88 AD5384(&spi2, hwl.dac_cs[1])};
wbeaumont 0:dcd70d1b89b1 89
NickRyder 4:4f7a57fac239 90 adt7320 temp[2][3] = {adt7320(&spi, hwl.t_cs[0]),
NickRyder 4:4f7a57fac239 91 adt7320(&spi, hwl.tc_cs1[0]),
NickRyder 4:4f7a57fac239 92 adt7320(&spi, hwl.tc_cs2[0]),
NickRyder 4:4f7a57fac239 93 adt7320(&spi2, hwl.t_cs[1]),
NickRyder 4:4f7a57fac239 94 adt7320(&spi2, hwl.tc_cs1[1]),
NickRyder 4:4f7a57fac239 95 adt7320(&spi2, hwl.tc_cs2[1])};
NickRyder 4:4f7a57fac239 96
NickRyder 4:4f7a57fac239 97 pc.printf("\nSOLID SLOW CONTROL for SM1 version %s %s %s \n\r", VERSION,
NickRyder 4:4f7a57fac239 98 __DATE__, __TIME__);
NickRyder 4:4f7a57fac239 99 cmdready = false;
wbeaumont 0:dcd70d1b89b1 100 while (1) {
wbeaumont 0:dcd70d1b89b1 101 wait(0.5);
wbeaumont 3:badf265a8898 102 char cmdoutstr[100];
wbeaumont 0:dcd70d1b89b1 103 if (cmdready) {
NickRyder 4:4f7a57fac239 104 cmdready = false;
NickRyder 4:4f7a57fac239 105 int decresult = decode_cmd(cmdin, &cmd);
NickRyder 4:4f7a57fac239 106 printf("decode result = %d \n\r", decresult);
NickRyder 4:4f7a57fac239 107 if (decresult) {
NickRyder 4:4f7a57fac239 108 cmd.status = abs(decresult);
NickRyder 4:4f7a57fac239 109 encode_cmd(cmdoutstr, &cmd);
NickRyder 4:4f7a57fac239 110 continue;
NickRyder 4:4f7a57fac239 111 }
wbeaumont 0:dcd70d1b89b1 112 u8 do8; // dataout
wbeaumont 0:dcd70d1b89b1 113 u16 do16;
NickRyder 4:4f7a57fac239 114 cmd.status = 1; // use it for the moment as error handling ,
NickRyder 4:4f7a57fac239 115 switch (cmd.dev) {
NickRyder 4:4f7a57fac239 116 case ADC:
NickRyder 4:4f7a57fac239 117 cmd.status = 2;
NickRyder 4:4f7a57fac239 118 pc.printf("ADC cmd = %s \n\r", cmd.cmd);
NickRyder 4:4f7a57fac239 119 pc.printf("check now ranges %d %d \n\r", cmd.con,
NickRyder 4:4f7a57fac239 120 cmd.devnr);
NickRyder 4:4f7a57fac239 121 if (!strcmp(cmd.cmd, "spa1")) {
NickRyder 5:1be2795321e2 122 adc[cmd.con - 1][cmd.devnr - 1].setPattern1(cmd.datain);
NickRyder 4:4f7a57fac239 123 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 124 cmd.status = 0;
NickRyder 4:4f7a57fac239 125 }
NickRyder 4:4f7a57fac239 126 if (!strcmp(cmd.cmd, "spa2")) {
NickRyder 5:1be2795321e2 127 adc[cmd.con - 1][cmd.devnr - 1].setPattern2(cmd.datain);
NickRyder 4:4f7a57fac239 128 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 129 cmd.status = 0;
NickRyder 4:4f7a57fac239 130 }
NickRyder 4:4f7a57fac239 131 if (!strcmp(cmd.cmd, "rpa1")) {
NickRyder 5:1be2795321e2 132 adc[cmd.con - 1][cmd.devnr - 1].readPattern1(do16);
NickRyder 4:4f7a57fac239 133 cmd.dataout=do16;
NickRyder 4:4f7a57fac239 134 cmd.status=0;
NickRyder 4:4f7a57fac239 135 }
NickRyder 4:4f7a57fac239 136 if (!strcmp(cmd.cmd, "rpa2")) {
NickRyder 5:1be2795321e2 137 adc[cmd.con - 1][cmd.devnr - 1].readPattern2(do16);
NickRyder 4:4f7a57fac239 138 cmd.dataout=do16;
NickRyder 4:4f7a57fac239 139 cmd.status=0;
NickRyder 4:4f7a57fac239 140 }
NickRyder 4:4f7a57fac239 141 if (!strcmp(cmd.cmd, "rr08")) {
NickRyder 5:1be2795321e2 142 adc[cmd.con - 1][cmd.devnr - 1].readReg8(cmd.ch, do8);
NickRyder 4:4f7a57fac239 143 cmd.dataout = (u16) do8;
NickRyder 5:1be2795321e2 144 cmd.status= 0 ;
NickRyder 4:4f7a57fac239 145 }
NickRyder 4:4f7a57fac239 146 if (!strcmp(cmd.cmd, "rr16")) {
NickRyder 5:1be2795321e2 147 adc[cmd.con - 1][cmd.devnr - 1].readReg16(cmd.ch, do16);
NickRyder 5:1be2795321e2 148 cmd.dataout = (u32) do16;
NickRyder 5:1be2795321e2 149 cmd.status = 0;
NickRyder 4:4f7a57fac239 150 }
NickRyder 4:4f7a57fac239 151 if (!strcmp(cmd.cmd, "sr08")) {
NickRyder 5:1be2795321e2 152 adc[cmd.con - 1][cmd.devnr - 1].setReg8(cmd.ch, (u8) cmd.datain);
NickRyder 4:4f7a57fac239 153 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 154 cmd.status = 0;
NickRyder 4:4f7a57fac239 155 }
NickRyder 4:4f7a57fac239 156 if (!strcmp(cmd.cmd, "sr16")) {
NickRyder 5:1be2795321e2 157 adc[cmd.con - 1][cmd.devnr - 1].setReg16(cmd.ch, (u16) cmd.datain);
NickRyder 4:4f7a57fac239 158 cmd.dataout = cmd.datain;
NickRyder 5:1be2795321e2 159 cmd.status = 0;
NickRyder 4:4f7a57fac239 160 }
NickRyder 4:4f7a57fac239 161 if (!strcmp(cmd.cmd, "ghrv")) {
NickRyder 5:1be2795321e2 162 do16 = adc[cmd.con - 1][cmd.devnr - 1].getHdrVersion();
NickRyder 4:4f7a57fac239 163 cmd.dataout = do16;
NickRyder 4:4f7a57fac239 164 cmd.status=0;
NickRyder 4:4f7a57fac239 165 }
NickRyder 4:4f7a57fac239 166 if (!strcmp(cmd.cmd, "gscv")) {
NickRyder 5:1be2795321e2 167 do16 = adc[cmd.con - 1][cmd.devnr - 1].getSrcVersion();
NickRyder 4:4f7a57fac239 168 cmd.dataout = do16;
NickRyder 5:1be2795321e2 169 cmd.status = 0;
NickRyder 4:4f7a57fac239 170 }
NickRyder 4:4f7a57fac239 171 if (!strcmp(cmd.cmd, "ini1")) {
NickRyder 5:1be2795321e2 172 adc[cmd.con - 1][cmd.devnr - 1].init1();
NickRyder 4:4f7a57fac239 173 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 174 cmd.status = 0;
NickRyder 4:4f7a57fac239 175 }
NickRyder 4:4f7a57fac239 176 if (!strcmp(cmd.cmd, "ini2")) {
NickRyder 5:1be2795321e2 177 adc[cmd.con - 1][cmd.devnr - 1].init2();
NickRyder 4:4f7a57fac239 178 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 179 cmd.status = 0;
NickRyder 4:4f7a57fac239 180 }
NickRyder 4:4f7a57fac239 181 break;
wbeaumont 2:d18b1a1643e8 182 case DAC :
NickRyder 4:4f7a57fac239 183 cmd.status = 2;
NickRyder 4:4f7a57fac239 184 if (!strcmp(cmd.cmd, "sdac")) {
NickRyder 5:1be2795321e2 185 dac[cmd.con - 1][cmd.devnr - 1].set_dac(cmd.ch, cmd.datain);
NickRyder 4:4f7a57fac239 186 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 187 cmd.status = 0;
NickRyder 4:4f7a57fac239 188 }
NickRyder 4:4f7a57fac239 189 if (!strcmp(cmd.cmd, "rdac")) {
NickRyder 5:1be2795321e2 190 do16=dac[cmd.con - 1][cmd.devnr - 1].get_dac(cmd.ch);
NickRyder 5:1be2795321e2 191 cmd.dataout = do16;
NickRyder 5:1be2795321e2 192 cmd.status = 0;
NickRyder 4:4f7a57fac239 193 }
NickRyder 4:4f7a57fac239 194 if (!strcmp(cmd.cmd, "ini1")) {
NickRyder 5:1be2795321e2 195 dac[cmd.con - 1][cmd.devnr - 1].init1();
NickRyder 4:4f7a57fac239 196 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 197 cmd.status = 0;
NickRyder 4:4f7a57fac239 198 }
NickRyder 4:4f7a57fac239 199 if (!strcmp(cmd.cmd, "ini2")) {
NickRyder 5:1be2795321e2 200 dac[cmd.con - 1][cmd.devnr - 1].init2();
NickRyder 4:4f7a57fac239 201 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 202 cmd.status = 0;
NickRyder 4:4f7a57fac239 203 }
NickRyder 4:4f7a57fac239 204 if (!strcmp(cmd.cmd, "srst")) {
NickRyder 5:1be2795321e2 205 dac[cmd.con - 1][cmd.devnr - 1].soft_rst();
NickRyder 4:4f7a57fac239 206 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 207 cmd.status = 0;
NickRyder 4:4f7a57fac239 208 }
NickRyder 4:4f7a57fac239 209 if (!strcmp(cmd.cmd, "ghrv")) {
NickRyder 5:1be2795321e2 210 do16 = dac[cmd.con - 1][cmd.devnr - 1].getHdrVersion();
NickRyder 4:4f7a57fac239 211 cmd.dataout = do16;
NickRyder 4:4f7a57fac239 212 cmd.status = 0;
NickRyder 4:4f7a57fac239 213 }
NickRyder 4:4f7a57fac239 214 if (!strcmp(cmd.cmd, "gscv")) {
NickRyder 5:1be2795321e2 215 do16 = dac[cmd.con - 1][cmd.devnr - 1].getSrcVersion();
NickRyder 4:4f7a57fac239 216 cmd.dataout = do16;
NickRyder 4:4f7a57fac239 217 cmd.status = 0;
NickRyder 4:4f7a57fac239 218 }
NickRyder 4:4f7a57fac239 219 break;
NickRyder 4:4f7a57fac239 220 case TEMP:
NickRyder 5:1be2795321e2 221 cmd.status = 2;
NickRyder 4:4f7a57fac239 222 if (!strcmp(cmd.cmd, "rtpd")) {
NickRyder 5:1be2795321e2 223 do16 = temp[cmd.con - 1][cmd.devnr - 1].get_T();
NickRyder 4:4f7a57fac239 224 cmd.dataout = do16;
NickRyder 4:4f7a57fac239 225 cmd.status = 0;
NickRyder 4:4f7a57fac239 226 }
NickRyder 4:4f7a57fac239 227 if (!strcmp(cmd.cmd, "gtid")) {
NickRyder 5:1be2795321e2 228 do8 = temp[cmd.con - 1][cmd.devnr - 1].getId();
NickRyder 4:4f7a57fac239 229 cmd.dataout = do8;
NickRyder 4:4f7a57fac239 230 cmd.status = 0;
NickRyder 4:4f7a57fac239 231 }
NickRyder 4:4f7a57fac239 232 if (!strcmp(cmd.cmd, "rtcr")) {
NickRyder 5:1be2795321e2 233 do16 = temp[cmd.con - 1][cmd.devnr - 1].get_TcritSP();
NickRyder 4:4f7a57fac239 234 cmd.dataout = do16;
NickRyder 4:4f7a57fac239 235 cmd.status = 0;
NickRyder 4:4f7a57fac239 236 }
NickRyder 4:4f7a57fac239 237 if (!strcmp(cmd.cmd, "stcr")) {
NickRyder 5:1be2795321e2 238 temp[cmd.con - 1][cmd.devnr - 1].set_TcritSP(cmd.datain);
NickRyder 4:4f7a57fac239 239 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 240 cmd.status = 0;
NickRyder 4:4f7a57fac239 241 }
NickRyder 4:4f7a57fac239 242 if (!strcmp(cmd.cmd, "ghrv")) {
NickRyder 5:1be2795321e2 243 do16 = temp[cmd.con - 1][cmd.devnr - 1].getHdrVersion();
NickRyder 4:4f7a57fac239 244 cmd.dataout = do16;
NickRyder 5:1be2795321e2 245 cmd.status = 0;
NickRyder 4:4f7a57fac239 246 }
NickRyder 5:1be2795321e2 247 if (!strcmp(cmd.cmd, "gscv")) {
NickRyder 5:1be2795321e2 248 do16 = temp[cmd.con - 1][cmd.devnr - 1].getSrcVersion();
NickRyder 4:4f7a57fac239 249 cmd.dataout = do16;
NickRyder 5:1be2795321e2 250 cmd.status = 0;
NickRyder 4:4f7a57fac239 251 }
NickRyder 4:4f7a57fac239 252 if (!strcmp(cmd.cmd, "ini1")) {
NickRyder 5:1be2795321e2 253 temp[cmd.con - 1][cmd.devnr - 1].init1();
NickRyder 4:4f7a57fac239 254 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 255 cmd.status = 0;
NickRyder 4:4f7a57fac239 256 }
NickRyder 4:4f7a57fac239 257 if (!strcmp(cmd.cmd, "ini2")) {
NickRyder 5:1be2795321e2 258 temp[cmd.con - 1][cmd.devnr - 1].init2();
NickRyder 4:4f7a57fac239 259 cmd.dataout = cmd.datain;
NickRyder 4:4f7a57fac239 260 cmd.status = 0;
NickRyder 4:4f7a57fac239 261 }
NickRyder 4:4f7a57fac239 262 break;
wbeaumont 3:badf265a8898 263 case SSCM:
NickRyder 4:4f7a57fac239 264 cmd.status = 2;
NickRyder 4:4f7a57fac239 265 if (!strcmp(cmd.cmd, "t_hb")) {
NickRyder 4:4f7a57fac239 266 heartbeat = !heartbeat;
NickRyder 5:1be2795321e2 267 cmd.status = 2;
NickRyder 4:4f7a57fac239 268 }
NickRyder 4:4f7a57fac239 269 if (!strcmp(cmd.cmd, "gmpv")) {
NickRyder 4:4f7a57fac239 270 do16 = gv.getHdrVersion();
NickRyder 4:4f7a57fac239 271 cmd.dataout = do16;
NickRyder 5:1be2795321e2 272 cmd.status = 0;
NickRyder 4:4f7a57fac239 273 }
NickRyder 4:4f7a57fac239 274 if (!strcmp(cmd.cmd, "gvhv")) {
NickRyder 4:4f7a57fac239 275 do16 = gvc.getHdrVersion();
NickRyder 4:4f7a57fac239 276 cmd.dataout = do16;
NickRyder 4:4f7a57fac239 277 cmd.status = 0;
NickRyder 4:4f7a57fac239 278 }
NickRyder 4:4f7a57fac239 279 if (!strcmp(cmd.cmd, "msnr")) {
NickRyder 4:4f7a57fac239 280 do8 = get_serialnr(&hwl);
NickRyder 4:4f7a57fac239 281 cmd.dataout = (u16) do8;
NickRyder 4:4f7a57fac239 282 cmd.status = 0;
NickRyder 4:4f7a57fac239 283 }
NickRyder 4:4f7a57fac239 284 if (!strcmp(cmd.cmd, "gchv")) {
NickRyder 4:4f7a57fac239 285 do16 = gvsscm.getHdrVersion();
NickRyder 4:4f7a57fac239 286 cmd.dataout = do16;
NickRyder 4:4f7a57fac239 287 cmd.status = 0;
NickRyder 4:4f7a57fac239 288 }
NickRyder 4:4f7a57fac239 289 if (!strcmp(cmd.cmd, "gcsv")) {
NickRyder 4:4f7a57fac239 290 do16 = gvsscm.getSrcVersion();
NickRyder 4:4f7a57fac239 291 cmd.dataout = do16;
NickRyder 4:4f7a57fac239 292 cmd.status = 0;
NickRyder 4:4f7a57fac239 293 }
NickRyder 4:4f7a57fac239 294 break;
NickRyder 4:4f7a57fac239 295 default:
NickRyder 5:1be2795321e2 296 cmd.status = 1;
wbeaumont 1:f792767b2223 297 break;
NickRyder 4:4f7a57fac239 298 } // end switch
NickRyder 4:4f7a57fac239 299 encode_cmd(cmdoutstr, &cmd);
NickRyder 4:4f7a57fac239 300 pc.printf("%s", cmdoutstr);
NickRyder 4:4f7a57fac239 301 } else {//end if cmdready
NickRyder 4:4f7a57fac239 302 if (heartbeat) printf("%03d>%s\n\r", (i++ % 1000), cmdin);
NickRyder 4:4f7a57fac239 303 }
wbeaumont 0:dcd70d1b89b1 304 }// end while
wbeaumont 0:dcd70d1b89b1 305 }