yuhang zhu / Mbed 2 deprecated ADAM_menu

Dependencies:   mbed

Committer:
yuhangzhu
Date:
Sat Jul 20 16:20:14 2013 +0000
Revision:
21:4d6b26eecdac
Parent:
18:452b5da21cfd
Child:
23:0b6901c9302c
This program is made to be more robust, and is good for both putty and Tera Term.

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 18:452b5da21cfd 23
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 21:4d6b26eecdac 109 else if(recv == 8 || recv == 127) //backspace is pressed, delete one character both on screen and line buffer
yuhangzhu 3:32e67d121c7f 110 {
yuhangzhu 21:4d6b26eecdac 111 if(line_length > 0) //delete one char on screen
yuhangzhu 21:4d6b26eecdac 112 {
yuhangzhu 21:4d6b26eecdac 113 pc.putc(8);
yuhangzhu 21:4d6b26eecdac 114 pc.putc(32);
yuhangzhu 21:4d6b26eecdac 115 pc.putc(8);
yuhangzhu 21:4d6b26eecdac 116 }
yuhangzhu 4:e8142db2bbfd 117
yuhangzhu 4:e8142db2bbfd 118 if(line_length <= 3 && line_length>=1)
yuhangzhu 3:32e67d121c7f 119 {
yuhangzhu 4:e8142db2bbfd 120 line_pt --;
yuhangzhu 3:32e67d121c7f 121 line_buf[line_pt] = 255;
yuhangzhu 3:32e67d121c7f 122 }
yuhangzhu 4:e8142db2bbfd 123 if(line_length > 0)
yuhangzhu 4:e8142db2bbfd 124 line_length --;
yuhangzhu 3:32e67d121c7f 125 }
yuhangzhu 21:4d6b26eecdac 126 else if(recv == '.' || recv == '-' || (recv >= '0' && recv <= '9') ) //the line buffer accepts -, ., 0-9 only
yuhangzhu 3:32e67d121c7f 127 {
yuhangzhu 3:32e67d121c7f 128 pc.putc(recv);
yuhangzhu 4:e8142db2bbfd 129 line_length ++;
yuhangzhu 4:e8142db2bbfd 130
yuhangzhu 4:e8142db2bbfd 131 if(line_length <= 3)
yuhangzhu 4:e8142db2bbfd 132 {
yuhangzhu 4:e8142db2bbfd 133 line_buf[line_pt] = recv;
yuhangzhu 3:32e67d121c7f 134 line_pt ++;
yuhangzhu 4:e8142db2bbfd 135 }
yuhangzhu 3:32e67d121c7f 136 }
yuhangzhu 3:32e67d121c7f 137 }
yuhangzhu 6:e510aab8f2ce 138 //input over, now checking
yuhangzhu 12:5e4cba1182ab 139 //check phase shift input
yuhangzhu 6:e510aab8f2ce 140 if(state == MODE_CHA1PHA || state == MODE_CHA2PHA)
yuhangzhu 6:e510aab8f2ce 141 {
yuhangzhu 6:e510aab8f2ce 142 if(state == MODE_CHA1PHA)
yuhangzhu 6:e510aab8f2ce 143 ret = parse_phase(line_buf, &cha1_pha);
yuhangzhu 6:e510aab8f2ce 144 else
yuhangzhu 6:e510aab8f2ce 145 ret = parse_phase(line_buf, &cha2_pha);
yuhangzhu 6:e510aab8f2ce 146
yuhangzhu 7:c268547fb6c8 147 if(ret == PARSE_LONG) //Input string too long
yuhangzhu 6:e510aab8f2ce 148 {
yuhangzhu 6:e510aab8f2ce 149 pc.printf("%s", msg_strlong);
yuhangzhu 6:e510aab8f2ce 150 pc.getc();
yuhangzhu 6:e510aab8f2ce 151 }
yuhangzhu 7:c268547fb6c8 152 else if(ret == PARSE_EMPTY)
yuhangzhu 7:c268547fb6c8 153 {
yuhangzhu 7:c268547fb6c8 154 pc.printf("%s", msg_empty);
yuhangzhu 7:c268547fb6c8 155 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 156 pc.getc();
yuhangzhu 7:c268547fb6c8 157 }
yuhangzhu 7:c268547fb6c8 158 else if(ret == PARSE_ERR) //Input string has error
yuhangzhu 6:e510aab8f2ce 159 {
yuhangzhu 6:e510aab8f2ce 160 pc.printf("%s", msg_err);
yuhangzhu 6:e510aab8f2ce 161 pc.getc();
yuhangzhu 6:e510aab8f2ce 162 }
yuhangzhu 7:c268547fb6c8 163 else if(ret == PARSE_ROUNDED) //Input is rounded,show the rounded value
yuhangzhu 6:e510aab8f2ce 164 {
yuhangzhu 6:e510aab8f2ce 165 if(state == MODE_CHA1PHA)
yuhangzhu 9:3eaacc1ad758 166 pc.printf("%s %d\n", msg_rounded, cha1_pha*-7);
yuhangzhu 6:e510aab8f2ce 167 else if(state == MODE_CHA2PHA)
yuhangzhu 9:3eaacc1ad758 168 pc.printf("%s %d\n", msg_rounded, cha2_pha*-7);
yuhangzhu 6:e510aab8f2ce 169
yuhangzhu 6:e510aab8f2ce 170 pc.printf("%s", msg_ret);
yuhangzhu 6:e510aab8f2ce 171 pc.getc();
yuhangzhu 6:e510aab8f2ce 172 }
yuhangzhu 7:c268547fb6c8 173 else //Input is good
yuhangzhu 6:e510aab8f2ce 174 {
yuhangzhu 6:e510aab8f2ce 175 pc.printf("%s", msg_ok);
yuhangzhu 8:f0c3d5911b87 176 #ifdef DEBUG
yuhangzhu 6:e510aab8f2ce 177 pc.printf("%d %d\n", cha1_pha*7, cha2_pha*7);
yuhangzhu 8:f0c3d5911b87 178 #endif
yuhangzhu 6:e510aab8f2ce 179 pc.printf("%s", msg_ret);
yuhangzhu 6:e510aab8f2ce 180 pc.getc();
yuhangzhu 6:e510aab8f2ce 181 }
yuhangzhu 6:e510aab8f2ce 182 }
yuhangzhu 3:32e67d121c7f 183
yuhangzhu 7:c268547fb6c8 184 //check attenuation input
yuhangzhu 7:c268547fb6c8 185 if(state == MODE_CHA1AMP || state == MODE_CHA2AMP)
yuhangzhu 7:c268547fb6c8 186 {
yuhangzhu 7:c268547fb6c8 187 if(state == MODE_CHA1AMP)
yuhangzhu 7:c268547fb6c8 188 ret = parse_amp(line_buf, &cha1_amp);
yuhangzhu 7:c268547fb6c8 189 else
yuhangzhu 7:c268547fb6c8 190 ret = parse_amp(line_buf, &cha2_amp);
yuhangzhu 7:c268547fb6c8 191
yuhangzhu 7:c268547fb6c8 192 if(ret == PARSE_LONG) //Input string too long
yuhangzhu 7:c268547fb6c8 193 {
yuhangzhu 7:c268547fb6c8 194 pc.printf("%s", msg_strlong);
yuhangzhu 7:c268547fb6c8 195 pc.getc();
yuhangzhu 7:c268547fb6c8 196 }
yuhangzhu 7:c268547fb6c8 197 else if(ret == PARSE_EMPTY)
yuhangzhu 7:c268547fb6c8 198 {
yuhangzhu 7:c268547fb6c8 199 pc.printf("%s", msg_empty);
yuhangzhu 7:c268547fb6c8 200 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 201 pc.getc();
yuhangzhu 7:c268547fb6c8 202 }
yuhangzhu 7:c268547fb6c8 203 else if(ret == PARSE_ERR) //Input string has error
yuhangzhu 7:c268547fb6c8 204 {
yuhangzhu 7:c268547fb6c8 205 pc.printf("%s", msg_err);
yuhangzhu 7:c268547fb6c8 206 pc.getc();
yuhangzhu 7:c268547fb6c8 207 }
yuhangzhu 7:c268547fb6c8 208 else if(ret == PARSE_ROUNDED) //Input is rounded, show the rounded value
yuhangzhu 7:c268547fb6c8 209 {
yuhangzhu 7:c268547fb6c8 210 if(state == MODE_CHA1AMP)
yuhangzhu 8:f0c3d5911b87 211 pc.printf("%s %.1f\n", msg_rounded, cha1_amp*5.0/10.0);
yuhangzhu 7:c268547fb6c8 212 else if(state == MODE_CHA2AMP)
yuhangzhu 8:f0c3d5911b87 213 pc.printf("%s %.1f\n", msg_rounded, cha2_amp*5.0/10.0);
yuhangzhu 7:c268547fb6c8 214
yuhangzhu 7:c268547fb6c8 215 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 216 pc.getc();
yuhangzhu 7:c268547fb6c8 217 }
yuhangzhu 7:c268547fb6c8 218 else //Input is good
yuhangzhu 7:c268547fb6c8 219 {
yuhangzhu 7:c268547fb6c8 220 pc.printf("%s", msg_ok);
yuhangzhu 8:f0c3d5911b87 221 #ifdef DEBUG
yuhangzhu 7:c268547fb6c8 222 pc.printf("%d %d\n", cha1_amp*5, cha2_amp*5);
yuhangzhu 8:f0c3d5911b87 223 #endif
yuhangzhu 7:c268547fb6c8 224 pc.printf("%s", msg_ret);
yuhangzhu 7:c268547fb6c8 225 pc.getc();
yuhangzhu 7:c268547fb6c8 226 }
yuhangzhu 7:c268547fb6c8 227 }
yuhangzhu 7:c268547fb6c8 228 state = MODE_IDLE; //back to idle state after input
yuhangzhu 3:32e67d121c7f 229 break;
yuhangzhu 5:50ea1502a949 230
yuhangzhu 12:5e4cba1182ab 231 // In display mode, show current parameters
yuhangzhu 8:f0c3d5911b87 232 case MODE_DISPLAY:
yuhangzhu 18:452b5da21cfd 233 pc.printf("\n\n ******** Current Parameters ********\n\n");
yuhangzhu 14:fb67a8b1d1a5 234 pc.printf("Phase shift for RF out1 is %d degrees\n", cha1_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 235 pc.printf("Attentuation for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
yuhangzhu 14:fb67a8b1d1a5 236 pc.printf("Phase shift for RF out2 is %d degrees\n", cha2_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 237 pc.printf("Attentuation for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
yuhangzhu 8:f0c3d5911b87 238 pc.printf("%s", msg_ret);
yuhangzhu 8:f0c3d5911b87 239 pc.getc();
yuhangzhu 8:f0c3d5911b87 240 state = MODE_IDLE;
yuhangzhu 8:f0c3d5911b87 241 break;
yuhangzhu 12:5e4cba1182ab 242 //Help mode, displays help info
yuhangzhu 9:3eaacc1ad758 243 case MODE_HELP:
yuhangzhu 18:452b5da21cfd 244 pc.printf("\n\n******** Help info ********\n");
yuhangzhu 9:3eaacc1ad758 245 pc.printf("%s", msg_help);
yuhangzhu 9:3eaacc1ad758 246 pc.printf("%s", msg_ret);
yuhangzhu 9:3eaacc1ad758 247 pc.getc();
yuhangzhu 9:3eaacc1ad758 248 state = MODE_IDLE;
yuhangzhu 9:3eaacc1ad758 249 break;
yuhangzhu 9:3eaacc1ad758 250
yuhangzhu 12:5e4cba1182ab 251 case MODE_SEND: //In sending mode, display and send through SPI
yuhangzhu 15:3f3560332bc1 252
yuhangzhu 15:3f3560332bc1 253 //Calculate the send info
yuhangzhu 15:3f3560332bc1 254 spi_stream = (cha2_amp << 12) | (cha2_pha << 8) | (cha1_amp << 4) | (cha1_pha);
yuhangzhu 15:3f3560332bc1 255 spi_first_byte_s = (cha2_amp << 4) | (cha2_pha);
yuhangzhu 15:3f3560332bc1 256 spi_second_byte_s = (cha1_amp << 4) | (cha1_pha);
yuhangzhu 11:0e42dd431fb5 257
yuhangzhu 17:54a003ac9610 258 cs = 0; //SPI start sending, send and recond the response
yuhangzhu 15:3f3560332bc1 259 spi_first_byte_r = spi.write(spi_first_byte_s);
yuhangzhu 15:3f3560332bc1 260 spi_second_byte_r = spi.write(spi_second_byte_s);
yuhangzhu 15:3f3560332bc1 261 cs = 1;
yuhangzhu 15:3f3560332bc1 262
yuhangzhu 15:3f3560332bc1 263 //Start printint...
yuhangzhu 18:452b5da21cfd 264 pc.printf("******** Now sending parameters ********\n\n");
yuhangzhu 14:fb67a8b1d1a5 265 pc.printf("Phase shift for RF out1 is %d degrees\n", cha1_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 266 pc.printf("Attentuation for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
yuhangzhu 14:fb67a8b1d1a5 267 pc.printf("Phase shift for RF out2 is %d degrees\n", cha2_pha*-7);
yuhangzhu 14:fb67a8b1d1a5 268 pc.printf("Attentuation for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
yuhangzhu 15:3f3560332bc1 269 pc.printf("\nSPI bit stream sent:\n");
yuhangzhu 15:3f3560332bc1 270 pc.printf("%s", bit_index);
yuhangzhu 14:fb67a8b1d1a5 271
yuhangzhu 15:3f3560332bc1 272 //Output the SPI bit stream sent for user reference
yuhangzhu 10:ff8c2470f019 273 for(i=0; i<=15; i++)
yuhangzhu 10:ff8c2470f019 274 {
yuhangzhu 14:fb67a8b1d1a5 275
yuhangzhu 11:0e42dd431fb5 276 if(spi_stream >= 0x8000)
yuhangzhu 14:fb67a8b1d1a5 277 pc.printf("%d ", 1);
yuhangzhu 10:ff8c2470f019 278 else
yuhangzhu 14:fb67a8b1d1a5 279 pc.printf("%d ", 0);
yuhangzhu 14:fb67a8b1d1a5 280
yuhangzhu 14:fb67a8b1d1a5 281 if(i == 7)
yuhangzhu 14:fb67a8b1d1a5 282 pc.printf(" ");
yuhangzhu 14:fb67a8b1d1a5 283
yuhangzhu 11:0e42dd431fb5 284 spi_stream = spi_stream << 1;
yuhangzhu 10:ff8c2470f019 285 }
yuhangzhu 18:452b5da21cfd 286 //pc.printf("\n\nParameters sent OK\n\n\n\n");
yuhangzhu 11:0e42dd431fb5 287
yuhangzhu 15:3f3560332bc1 288
yuhangzhu 17:54a003ac9610 289 //Output the previous parameters:
yuhangzhu 18:452b5da21cfd 290 pc.printf("\n\n\n******** Now displaying previous parameters ********\n");
yuhangzhu 16:fbe18dbc2fb7 291 pc.printf("\nPrevious phase shift for RF out1 is %d degrees\n", (spi_second_byte_r&0x07)*-7);
yuhangzhu 16:fbe18dbc2fb7 292 pc.printf("Previous attentuation for RF out1 is %.1f dB\n", (spi_second_byte_r>>4)*5.0/10.0);
yuhangzhu 16:fbe18dbc2fb7 293 pc.printf("Previous phase shift for RF out2 is %d degrees\n", (spi_first_byte_r&0x07)*-7);
yuhangzhu 16:fbe18dbc2fb7 294 pc.printf("Previous attentuation for RF out2 is %.1f dB\n", (spi_first_byte_r>>4)*5.0/10.0);
yuhangzhu 17:54a003ac9610 295 //SPI bit stream for previous parameters
yuhangzhu 15:3f3560332bc1 296 pc.printf("\nSPI bit stream received:\n");
yuhangzhu 15:3f3560332bc1 297 pc.printf("%s", bit_index);
yuhangzhu 15:3f3560332bc1 298 for(i=0; i<=7; i++)
yuhangzhu 15:3f3560332bc1 299 {
yuhangzhu 15:3f3560332bc1 300 if(spi_first_byte_r >= 0x80)
yuhangzhu 15:3f3560332bc1 301 pc.printf("%d ", 1);
yuhangzhu 15:3f3560332bc1 302 else
yuhangzhu 15:3f3560332bc1 303 pc.printf("%d ", 0);
yuhangzhu 15:3f3560332bc1 304
yuhangzhu 15:3f3560332bc1 305 spi_first_byte_r = spi_first_byte_r << 1;
yuhangzhu 15:3f3560332bc1 306 }
yuhangzhu 15:3f3560332bc1 307 pc.printf(" ");
yuhangzhu 15:3f3560332bc1 308 for(i=0; i<=7; i++)
yuhangzhu 15:3f3560332bc1 309 {
yuhangzhu 15:3f3560332bc1 310 if(spi_second_byte_r >= 0x80)
yuhangzhu 15:3f3560332bc1 311 pc.printf("%d ", 1);
yuhangzhu 15:3f3560332bc1 312 else
yuhangzhu 15:3f3560332bc1 313 pc.printf("%d ", 0);
yuhangzhu 15:3f3560332bc1 314
yuhangzhu 15:3f3560332bc1 315 spi_second_byte_r = spi_second_byte_r << 1;
yuhangzhu 15:3f3560332bc1 316 }
yuhangzhu 16:fbe18dbc2fb7 317
yuhangzhu 15:3f3560332bc1 318 pc.printf("\n\n\n");
yuhangzhu 15:3f3560332bc1 319
yuhangzhu 10:ff8c2470f019 320 pc.printf("%s", msg_ret);
yuhangzhu 10:ff8c2470f019 321 pc.getc();
yuhangzhu 10:ff8c2470f019 322 state = MODE_IDLE;
yuhangzhu 10:ff8c2470f019 323 break;
yuhangzhu 9:3eaacc1ad758 324 default:
yuhangzhu 9:3eaacc1ad758 325 state = MODE_IDLE;
yuhangzhu 1:cb6811ef87de 326 }
yuhangzhu 0:249f6f78cd05 327
yuhangzhu 0:249f6f78cd05 328
yuhangzhu 0:249f6f78cd05 329 }
yuhangzhu 0:249f6f78cd05 330
yuhangzhu 0:249f6f78cd05 331
yuhangzhu 0:249f6f78cd05 332 return 0;
yuhangzhu 0:249f6f78cd05 333 }