yuhang zhu / Mbed 2 deprecated ADAM_menu

Dependencies:   mbed

Committer:
yuhangzhu
Date:
Wed Jul 17 20:47:41 2013 +0000
Revision:
17:54a003ac9610
Parent:
16:fbe18dbc2fb7
Child:
18:452b5da21cfd
this maybe the final project ... 1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yuhangzhu 17:54a003ac9610 1 //This main funtion implements a mode transfer.
yuhangzhu 17:54a003ac9610 2 //When mcu resets, it's in MODE_IDLE. Then depends on the keyboard input(1 to 7), the
yuhangzhu 12:5e4cba1182ab 3 //mode switches to transition modes such as
yuhangzhu 12:5e4cba1182ab 4 //MODE_CHAxPHA, which is for phase input of channel x, or
yuhangzhu 12:5e4cba1182ab 5 //MODE_CHAxAMP, which is for attenuation input of channel x, or
yuhangzhu 12:5e4cba1182ab 6 //MODE_DISPLAY, which is for displaying the current parameters, or
yuhangzhu 12:5e4cba1182ab 7 //MODE_HELP, which is for displaying the help infomation, or
yuhangzhu 17:54a003ac9610 8 //MODE_SEND, which is for sending the bit stream through the SPI bus by MOSI and read the data back from MISO.
yuhangzhu 12:5e4cba1182ab 9 //After each transition mode completes, mcu returns to MODE_IDLE to wait for another user input.
yuhangzhu 12:5e4cba1182ab 10
yuhangzhu 12:5e4cba1182ab 11
yuhangzhu 0:249f6f78cd05 12 #include "mbed.h"
yuhangzhu 0:249f6f78cd05 13 #include "menu.h"
yuhangzhu 0:249f6f78cd05 14 #include "parameters.h"
yuhangzhu 3:32e67d121c7f 15 #include "handlers.h"
yuhangzhu 8:f0c3d5911b87 16 //#define DEBUG
yuhangzhu 0:249f6f78cd05 17
yuhangzhu 17:54a003ac9610 18 Serial pc(USBTX, USBRX); // serial io
yuhangzhu 15:3f3560332bc1 19 SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk
yuhangzhu 17:54a003ac9610 20 DigitalOut cs(PTD0); //SPI chip select
yuhangzhu 2:45db4f4ca70d 21
yuhangzhu 3:32e67d121c7f 22 char recv;
yuhangzhu 11:0e42dd431fb5 23 char temp;
yuhangzhu 11:0e42dd431fb5 24
yuhangzhu 2:45db4f4ca70d 25 int state;
yuhangzhu 6:e510aab8f2ce 26 char cha1_pha, cha2_pha;
yuhangzhu 6:e510aab8f2ce 27 char cha1_amp, cha2_amp;
yuhangzhu 6:e510aab8f2ce 28 int ret;
yuhangzhu 6:e510aab8f2ce 29
yuhangzhu 11:0e42dd431fb5 30 unsigned short spi_stream;
yuhangzhu 15:3f3560332bc1 31 unsigned char spi_first_byte_s;
yuhangzhu 15:3f3560332bc1 32 unsigned char spi_second_byte_s; // The first and second byte to send
yuhangzhu 15:3f3560332bc1 33
yuhangzhu 15:3f3560332bc1 34 unsigned char spi_first_byte_r; // The first and second byte to receive
yuhangzhu 15:3f3560332bc1 35 unsigned char spi_second_byte_r;
yuhangzhu 10:ff8c2470f019 36
yuhangzhu 12:5e4cba1182ab 37 char line_buf[4]; //line_buf[3] is used to indicate if it's empty 0 empty 1 not, other bytes for char data
yuhangzhu 4:e8142db2bbfd 38 int line_pt; //line buffer pointer points to next buffer location it's going to write
yuhangzhu 4:e8142db2bbfd 39 int line_length; //store the current line length
yuhangzhu 10:ff8c2470f019 40 int i;
yuhangzhu 2:45db4f4ca70d 41
yuhangzhu 0:249f6f78cd05 42 int main() {
yuhangzhu 0:249f6f78cd05 43
yuhangzhu 17:54a003ac9610 44 pc.baud(19200); //config buad rate. Note: 115200 seems too high for the current board
yuhangzhu 17:54a003ac9610 45 cs = 1; //spi config
yuhangzhu 17:54a003ac9610 46 spi.format(8,0); //16 bit frame is not working, so need to send twice 8 bit frame
yuhangzhu 17:54a003ac9610 47 //For more info about format, see http://mbed.org/forum/bugs-suggestions/topic/4419/?page=1#comment-22056
yuhangzhu 17:54a003ac9610 48 spi.frequency(1000000);
yuhangzhu 15:3f3560332bc1 49
yuhangzhu 1:cb6811ef87de 50 state = MODE_IDLE;
yuhangzhu 3:32e67d121c7f 51 line_buf[3] = 0;
yuhangzhu 3:32e67d121c7f 52 line_buf[2] = 255;
yuhangzhu 3:32e67d121c7f 53 line_buf[1] = 255;
yuhangzhu 3:32e67d121c7f 54 line_buf[0] = 255;
yuhangzhu 10:ff8c2470f019 55 cha1_pha = 0;
yuhangzhu 10:ff8c2470f019 56 cha2_pha = 0;
yuhangzhu 10:ff8c2470f019 57 cha1_amp = 0;
yuhangzhu 10:ff8c2470f019 58 cha2_amp = 0;
yuhangzhu 0:249f6f78cd05 59
yuhangzhu 0:249f6f78cd05 60 while(1)
yuhangzhu 0:249f6f78cd05 61 {
yuhangzhu 1:cb6811ef87de 62 switch(state)
yuhangzhu 0:249f6f78cd05 63 {
yuhangzhu 1:cb6811ef87de 64 case MODE_IDLE:
yuhangzhu 1:cb6811ef87de 65 pc.printf("%s", main_menu);
yuhangzhu 3:32e67d121c7f 66 recv = pc.getc();
yuhangzhu 14:fb67a8b1d1a5 67 mode_idle_handler(&state, recv); //change state based on recv input
yuhangzhu 17:54a003ac9610 68
yuhangzhu 3:32e67d121c7f 69 break;
yuhangzhu 11:0e42dd431fb5 70
yuhangzhu 3:32e67d121c7f 71 case MODE_CHA1PHA:
yuhangzhu 5:50ea1502a949 72 case MODE_CHA1AMP:
yuhangzhu 5:50ea1502a949 73 case MODE_CHA2PHA:
yuhangzhu 5:50ea1502a949 74 case MODE_CHA2AMP:
yuhangzhu 5:50ea1502a949 75 if(state == MODE_CHA1PHA)
yuhangzhu 5:50ea1502a949 76 pc.printf("%s", cmd1);
yuhangzhu 5:50ea1502a949 77 else if(state == MODE_CHA1AMP)
yuhangzhu 5:50ea1502a949 78 pc.printf("%s", cmd2);
yuhangzhu 5:50ea1502a949 79 else if(state == MODE_CHA2PHA)
yuhangzhu 5:50ea1502a949 80 pc.printf("%s", cmd3);
yuhangzhu 5:50ea1502a949 81 else
yuhangzhu 5:50ea1502a949 82 pc.printf("%s", cmd4);
yuhangzhu 5:50ea1502a949 83
yuhangzhu 3:32e67d121c7f 84 line_buf[3] = 0;
yuhangzhu 5:50ea1502a949 85 line_buf[2] = 255;
yuhangzhu 5:50ea1502a949 86 line_buf[1] = 255;
yuhangzhu 5:50ea1502a949 87 line_buf[0] = 255;
yuhangzhu 3:32e67d121c7f 88 line_pt = 0;
yuhangzhu 4:e8142db2bbfd 89 line_length = 0;
yuhangzhu 3:32e67d121c7f 90
yuhangzhu 12:5e4cba1182ab 91 while(1) //Character input into line buffer, terminated by enter key
yuhangzhu 3:32e67d121c7f 92 {
yuhangzhu 3:32e67d121c7f 93 recv = pc.getc();
yuhangzhu 6:e510aab8f2ce 94 if(recv == 13) //enter is pressed, break
yuhangzhu 3:32e67d121c7f 95 {
yuhangzhu 4:e8142db2bbfd 96 if(line_length == 0)
yuhangzhu 6:e510aab8f2ce 97 line_buf[3] = LINEBUF_EMPTY;
yuhangzhu 6:e510aab8f2ce 98 else if(line_length > 3)
yuhangzhu 6:e510aab8f2ce 99 line_buf[3] = LINEBUF_TOOLONG;
yuhangzhu 3:32e67d121c7f 100 else
yuhangzhu 6:e510aab8f2ce 101 line_buf[3] = LINEBUF_OK;
yuhangzhu 8:f0c3d5911b87 102 #ifdef DEBUG
yuhangzhu 8:f0c3d5911b87 103 pc.printf("decimal output : %d %d %d %d", line_buf[3], line_buf[2], line_buf[1], line_buf[0]);
yuhangzhu 8:f0c3d5911b87 104 pc.printf("char output: %c %c %c %c", line_buf[3], line_buf[2], line_buf[1], line_buf[0]);
yuhangzhu 8:f0c3d5911b87 105 #endif
yuhangzhu 8:f0c3d5911b87 106
yuhangzhu 4:e8142db2bbfd 107 break;
yuhangzhu 3:32e67d121c7f 108 }
yuhangzhu 6:e510aab8f2ce 109 else if(recv == 8) //backspace is pressed, delete one character both on screen and line buffer
yuhangzhu 3:32e67d121c7f 110 {
yuhangzhu 3:32e67d121c7f 111 pc.putc(8);
yuhangzhu 3:32e67d121c7f 112 pc.putc(32);
yuhangzhu 3:32e67d121c7f 113 pc.putc(8);
yuhangzhu 4:e8142db2bbfd 114
yuhangzhu 4:e8142db2bbfd 115 if(line_length <= 3 && line_length>=1)
yuhangzhu 3:32e67d121c7f 116 {
yuhangzhu 4:e8142db2bbfd 117 line_pt --;
yuhangzhu 3:32e67d121c7f 118 line_buf[line_pt] = 255;
yuhangzhu 3:32e67d121c7f 119 }
yuhangzhu 4:e8142db2bbfd 120 if(line_length > 0)
yuhangzhu 4:e8142db2bbfd 121 line_length --;
yuhangzhu 3:32e67d121c7f 122 }
yuhangzhu 6:e510aab8f2ce 123 else //other character is pressed, record that in line buffer
yuhangzhu 3:32e67d121c7f 124 {
yuhangzhu 3:32e67d121c7f 125 pc.putc(recv);
yuhangzhu 4:e8142db2bbfd 126 line_length ++;
yuhangzhu 4:e8142db2bbfd 127
yuhangzhu 4:e8142db2bbfd 128 if(line_length <= 3)
yuhangzhu 4:e8142db2bbfd 129 {
yuhangzhu 4:e8142db2bbfd 130 line_buf[line_pt] = recv;
yuhangzhu 3:32e67d121c7f 131 line_pt ++;
yuhangzhu 4:e8142db2bbfd 132 }
yuhangzhu 3:32e67d121c7f 133 }
yuhangzhu 3:32e67d121c7f 134 }
yuhangzhu 6:e510aab8f2ce 135 //input over, now checking
yuhangzhu 12:5e4cba1182ab 136 //check phase shift input
yuhangzhu 6:e510aab8f2ce 137 if(state == MODE_CHA1PHA || state == MODE_CHA2PHA)
yuhangzhu 6:e510aab8f2ce 138 {
yuhangzhu 6:e510aab8f2ce 139 if(state == MODE_CHA1PHA)
yuhangzhu 6:e510aab8f2ce 140 ret = parse_phase(line_buf, &cha1_pha);
yuhangzhu 6:e510aab8f2ce 141 else
yuhangzhu 6:e510aab8f2ce 142 ret = parse_phase(line_buf, &cha2_pha);
yuhangzhu 6:e510aab8f2ce 143
yuhangzhu 7:c268547fb6c8 144 if(ret == PARSE_LONG) //Input string too long
yuhangzhu 6:e510aab8f2ce 145 {
yuhangzhu 6:e510aab8f2ce 146 pc.printf("%s", msg_strlong);
yuhangzhu 6:e510aab8f2ce 147 pc.getc();
yuhangzhu 6:e510aab8f2ce 148 }
yuhangzhu 7:c268547fb6c8 149 else if(ret == PARSE_EMPTY)
yuhangzhu 7:c268547fb6c8 150 {
yuhangzhu 7:c268547fb6c8 151 pc.printf("%s", msg_empty);
yuhangzhu 7:c268547fb6c8 152 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 153 pc.getc();
yuhangzhu 7:c268547fb6c8 154 }
yuhangzhu 7:c268547fb6c8 155 else if(ret == PARSE_ERR) //Input string has error
yuhangzhu 6:e510aab8f2ce 156 {
yuhangzhu 6:e510aab8f2ce 157 pc.printf("%s", msg_err);
yuhangzhu 6:e510aab8f2ce 158 pc.getc();
yuhangzhu 6:e510aab8f2ce 159 }
yuhangzhu 7:c268547fb6c8 160 else if(ret == PARSE_ROUNDED) //Input is rounded,show the rounded value
yuhangzhu 6:e510aab8f2ce 161 {
yuhangzhu 6:e510aab8f2ce 162 if(state == MODE_CHA1PHA)
yuhangzhu 9:3eaacc1ad758 163 pc.printf("%s %d\n", msg_rounded, cha1_pha*-7);
yuhangzhu 6:e510aab8f2ce 164 else if(state == MODE_CHA2PHA)
yuhangzhu 9:3eaacc1ad758 165 pc.printf("%s %d\n", msg_rounded, cha2_pha*-7);
yuhangzhu 6:e510aab8f2ce 166
yuhangzhu 6:e510aab8f2ce 167 pc.printf("%s", msg_ret);
yuhangzhu 6:e510aab8f2ce 168 pc.getc();
yuhangzhu 6:e510aab8f2ce 169 }
yuhangzhu 7:c268547fb6c8 170 else //Input is good
yuhangzhu 6:e510aab8f2ce 171 {
yuhangzhu 6:e510aab8f2ce 172 pc.printf("%s", msg_ok);
yuhangzhu 8:f0c3d5911b87 173 #ifdef DEBUG
yuhangzhu 6:e510aab8f2ce 174 pc.printf("%d %d\n", cha1_pha*7, cha2_pha*7);
yuhangzhu 8:f0c3d5911b87 175 #endif
yuhangzhu 6:e510aab8f2ce 176 pc.printf("%s", msg_ret);
yuhangzhu 6:e510aab8f2ce 177 pc.getc();
yuhangzhu 6:e510aab8f2ce 178 }
yuhangzhu 6:e510aab8f2ce 179 }
yuhangzhu 3:32e67d121c7f 180
yuhangzhu 7:c268547fb6c8 181 //check attenuation input
yuhangzhu 7:c268547fb6c8 182 if(state == MODE_CHA1AMP || state == MODE_CHA2AMP)
yuhangzhu 7:c268547fb6c8 183 {
yuhangzhu 7:c268547fb6c8 184 if(state == MODE_CHA1AMP)
yuhangzhu 7:c268547fb6c8 185 ret = parse_amp(line_buf, &cha1_amp);
yuhangzhu 7:c268547fb6c8 186 else
yuhangzhu 7:c268547fb6c8 187 ret = parse_amp(line_buf, &cha2_amp);
yuhangzhu 7:c268547fb6c8 188
yuhangzhu 7:c268547fb6c8 189 if(ret == PARSE_LONG) //Input string too long
yuhangzhu 7:c268547fb6c8 190 {
yuhangzhu 7:c268547fb6c8 191 pc.printf("%s", msg_strlong);
yuhangzhu 7:c268547fb6c8 192 pc.getc();
yuhangzhu 7:c268547fb6c8 193 }
yuhangzhu 7:c268547fb6c8 194 else if(ret == PARSE_EMPTY)
yuhangzhu 7:c268547fb6c8 195 {
yuhangzhu 7:c268547fb6c8 196 pc.printf("%s", msg_empty);
yuhangzhu 7:c268547fb6c8 197 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 198 pc.getc();
yuhangzhu 7:c268547fb6c8 199 }
yuhangzhu 7:c268547fb6c8 200 else if(ret == PARSE_ERR) //Input string has error
yuhangzhu 7:c268547fb6c8 201 {
yuhangzhu 7:c268547fb6c8 202 pc.printf("%s", msg_err);
yuhangzhu 7:c268547fb6c8 203 pc.getc();
yuhangzhu 7:c268547fb6c8 204 }
yuhangzhu 7:c268547fb6c8 205 else if(ret == PARSE_ROUNDED) //Input is rounded, show the rounded value
yuhangzhu 7:c268547fb6c8 206 {
yuhangzhu 7:c268547fb6c8 207 if(state == MODE_CHA1AMP)
yuhangzhu 8:f0c3d5911b87 208 pc.printf("%s %.1f\n", msg_rounded, cha1_amp*5.0/10.0);
yuhangzhu 7:c268547fb6c8 209 else if(state == MODE_CHA2AMP)
yuhangzhu 8:f0c3d5911b87 210 pc.printf("%s %.1f\n", msg_rounded, cha2_amp*5.0/10.0);
yuhangzhu 7:c268547fb6c8 211
yuhangzhu 7:c268547fb6c8 212 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 213 pc.getc();
yuhangzhu 7:c268547fb6c8 214 }
yuhangzhu 7:c268547fb6c8 215 else //Input is good
yuhangzhu 7:c268547fb6c8 216 {
yuhangzhu 7:c268547fb6c8 217 pc.printf("%s", msg_ok);
yuhangzhu 8:f0c3d5911b87 218 #ifdef DEBUG
yuhangzhu 7:c268547fb6c8 219 pc.printf("%d %d\n", cha1_amp*5, cha2_amp*5);
yuhangzhu 8:f0c3d5911b87 220 #endif
yuhangzhu 7:c268547fb6c8 221 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 222 pc.getc();
yuhangzhu 7:c268547fb6c8 223 }
yuhangzhu 7:c268547fb6c8 224 }
yuhangzhu 7:c268547fb6c8 225 state = MODE_IDLE; //back to idle state after input
yuhangzhu 3:32e67d121c7f 226 break;
yuhangzhu 5:50ea1502a949 227
yuhangzhu 12:5e4cba1182ab 228 // In display mode, show current parameters
yuhangzhu 8:f0c3d5911b87 229 case MODE_DISPLAY:
yuhangzhu 11:0e42dd431fb5 230
yuhangzhu 14:fb67a8b1d1a5 231 pc.printf("Phase shift for RF out1 is %d degrees\n", cha1_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 232 pc.printf("Attentuation for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
yuhangzhu 14:fb67a8b1d1a5 233 pc.printf("Phase shift for RF out2 is %d degrees\n", cha2_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 234 pc.printf("Attentuation for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
yuhangzhu 8:f0c3d5911b87 235 pc.printf("%s", msg_ret);
yuhangzhu 8:f0c3d5911b87 236 pc.getc();
yuhangzhu 8:f0c3d5911b87 237 state = MODE_IDLE;
yuhangzhu 8:f0c3d5911b87 238 break;
yuhangzhu 12:5e4cba1182ab 239 //Help mode, displays help info
yuhangzhu 9:3eaacc1ad758 240 case MODE_HELP:
yuhangzhu 11:0e42dd431fb5 241
yuhangzhu 9:3eaacc1ad758 242 pc.printf("%s", msg_help);
yuhangzhu 9:3eaacc1ad758 243 pc.printf("%s", msg_ret);
yuhangzhu 9:3eaacc1ad758 244 pc.getc();
yuhangzhu 9:3eaacc1ad758 245 state = MODE_IDLE;
yuhangzhu 9:3eaacc1ad758 246 break;
yuhangzhu 9:3eaacc1ad758 247
yuhangzhu 12:5e4cba1182ab 248 case MODE_SEND: //In sending mode, display and send through SPI
yuhangzhu 15:3f3560332bc1 249
yuhangzhu 15:3f3560332bc1 250 //Calculate the send info
yuhangzhu 15:3f3560332bc1 251 spi_stream = (cha2_amp << 12) | (cha2_pha << 8) | (cha1_amp << 4) | (cha1_pha);
yuhangzhu 15:3f3560332bc1 252 spi_first_byte_s = (cha2_amp << 4) | (cha2_pha);
yuhangzhu 15:3f3560332bc1 253 spi_second_byte_s = (cha1_amp << 4) | (cha1_pha);
yuhangzhu 11:0e42dd431fb5 254
yuhangzhu 17:54a003ac9610 255 cs = 0; //SPI start sending, send and recond the response
yuhangzhu 15:3f3560332bc1 256 spi_first_byte_r = spi.write(spi_first_byte_s);
yuhangzhu 15:3f3560332bc1 257 spi_second_byte_r = spi.write(spi_second_byte_s);
yuhangzhu 15:3f3560332bc1 258 cs = 1;
yuhangzhu 15:3f3560332bc1 259
yuhangzhu 15:3f3560332bc1 260 //Start printint...
yuhangzhu 14:fb67a8b1d1a5 261 pc.printf("Phase shift for RF out1 is %d degrees\n", cha1_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 262 pc.printf("Attentuation for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
yuhangzhu 14:fb67a8b1d1a5 263 pc.printf("Phase shift for RF out2 is %d degrees\n", cha2_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 264 pc.printf("Attentuation for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
yuhangzhu 15:3f3560332bc1 265 pc.printf("\nSPI bit stream sent:\n");
yuhangzhu 15:3f3560332bc1 266 pc.printf("%s", bit_index);
yuhangzhu 14:fb67a8b1d1a5 267
yuhangzhu 15:3f3560332bc1 268 //Output the SPI bit stream sent for user reference
yuhangzhu 10:ff8c2470f019 269 for(i=0; i<=15; i++)
yuhangzhu 10:ff8c2470f019 270 {
yuhangzhu 14:fb67a8b1d1a5 271
yuhangzhu 11:0e42dd431fb5 272 if(spi_stream >= 0x8000)
yuhangzhu 14:fb67a8b1d1a5 273 pc.printf("%d ", 1);
yuhangzhu 10:ff8c2470f019 274 else
yuhangzhu 14:fb67a8b1d1a5 275 pc.printf("%d ", 0);
yuhangzhu 14:fb67a8b1d1a5 276
yuhangzhu 14:fb67a8b1d1a5 277 if(i == 7)
yuhangzhu 14:fb67a8b1d1a5 278 pc.printf(" ");
yuhangzhu 14:fb67a8b1d1a5 279
yuhangzhu 11:0e42dd431fb5 280 spi_stream = spi_stream << 1;
yuhangzhu 10:ff8c2470f019 281 }
yuhangzhu 16:fbe18dbc2fb7 282 pc.printf("\n\nParameters sent OK\n\n\n\n");
yuhangzhu 11:0e42dd431fb5 283
yuhangzhu 15:3f3560332bc1 284
yuhangzhu 17:54a003ac9610 285 //Output the previous parameters:
yuhangzhu 16:fbe18dbc2fb7 286 pc.printf("Now displaying the previous parameters\n");
yuhangzhu 16:fbe18dbc2fb7 287 pc.printf("\nPrevious phase shift for RF out1 is %d degrees\n", (spi_second_byte_r&0x07)*-7);
yuhangzhu 16:fbe18dbc2fb7 288 pc.printf("Previous attentuation for RF out1 is %.1f dB\n", (spi_second_byte_r>>4)*5.0/10.0);
yuhangzhu 16:fbe18dbc2fb7 289 pc.printf("Previous phase shift for RF out2 is %d degrees\n", (spi_first_byte_r&0x07)*-7);
yuhangzhu 16:fbe18dbc2fb7 290 pc.printf("Previous attentuation for RF out2 is %.1f dB\n", (spi_first_byte_r>>4)*5.0/10.0);
yuhangzhu 17:54a003ac9610 291 //SPI bit stream for previous parameters
yuhangzhu 15:3f3560332bc1 292 pc.printf("\nSPI bit stream received:\n");
yuhangzhu 15:3f3560332bc1 293 pc.printf("%s", bit_index);
yuhangzhu 15:3f3560332bc1 294 for(i=0; i<=7; i++)
yuhangzhu 15:3f3560332bc1 295 {
yuhangzhu 15:3f3560332bc1 296 if(spi_first_byte_r >= 0x80)
yuhangzhu 15:3f3560332bc1 297 pc.printf("%d ", 1);
yuhangzhu 15:3f3560332bc1 298 else
yuhangzhu 15:3f3560332bc1 299 pc.printf("%d ", 0);
yuhangzhu 15:3f3560332bc1 300
yuhangzhu 15:3f3560332bc1 301 spi_first_byte_r = spi_first_byte_r << 1;
yuhangzhu 15:3f3560332bc1 302 }
yuhangzhu 15:3f3560332bc1 303 pc.printf(" ");
yuhangzhu 15:3f3560332bc1 304 for(i=0; i<=7; i++)
yuhangzhu 15:3f3560332bc1 305 {
yuhangzhu 15:3f3560332bc1 306 if(spi_second_byte_r >= 0x80)
yuhangzhu 15:3f3560332bc1 307 pc.printf("%d ", 1);
yuhangzhu 15:3f3560332bc1 308 else
yuhangzhu 15:3f3560332bc1 309 pc.printf("%d ", 0);
yuhangzhu 15:3f3560332bc1 310
yuhangzhu 15:3f3560332bc1 311 spi_second_byte_r = spi_second_byte_r << 1;
yuhangzhu 15:3f3560332bc1 312 }
yuhangzhu 16:fbe18dbc2fb7 313
yuhangzhu 15:3f3560332bc1 314 pc.printf("\n\n\n");
yuhangzhu 15:3f3560332bc1 315
yuhangzhu 10:ff8c2470f019 316 pc.printf("%s", msg_ret);
yuhangzhu 10:ff8c2470f019 317 pc.getc();
yuhangzhu 10:ff8c2470f019 318 state = MODE_IDLE;
yuhangzhu 10:ff8c2470f019 319 break;
yuhangzhu 9:3eaacc1ad758 320 default:
yuhangzhu 9:3eaacc1ad758 321 state = MODE_IDLE;
yuhangzhu 1:cb6811ef87de 322 }
yuhangzhu 0:249f6f78cd05 323
yuhangzhu 0:249f6f78cd05 324
yuhangzhu 0:249f6f78cd05 325 }
yuhangzhu 0:249f6f78cd05 326
yuhangzhu 0:249f6f78cd05 327
yuhangzhu 0:249f6f78cd05 328 return 0;
yuhangzhu 0:249f6f78cd05 329 }