yuhang zhu / Mbed 2 deprecated ADAM_menu

Dependencies:   mbed

Revision:
24:f8fea5e5bf73
Parent:
23:0b6901c9302c
Child:
25:57de395d89aa
--- a/main.cpp	Mon Jul 22 17:53:24 2013 +0000
+++ b/main.cpp	Tue Jul 23 04:33:02 2013 +0000
@@ -21,7 +21,7 @@
 #include "menu.h"
 #include "parameters.h"
 #include "handlers.h"
-//#define DEBUG
+#define DEBUG
 
 Serial pc(USBTX, USBRX);   // serial io
 SPI spi(PTD2, PTD3, PTD1); // mosi, miso, sclk
@@ -75,6 +75,86 @@
                 mode_idle_handler(&state, recv);  //Change state based on recv input
                 
                 break;
+            case MODE_SPI_RAW:                    //Input the SPI raw bits
+                pc.printf("%s", cmd5);
+                line_buf[3] = 255;
+                line_buf[2] = 255;
+                line_buf[1] = 255;
+                line_buf[0] = 255;
+                line_pt = 0;
+                line_length = 0;
+                while(1)
+                {
+                    recv = pc.getc();
+                    if(recv == 13)    //enter is pressed
+                    {
+                        #ifdef DEBUG
+                        pc.printf("decimal output : %d %d %d %d", line_buf[3], line_buf[2], line_buf[1], line_buf[0]);
+                        pc.printf("char output: %c %c %c %c", line_buf[3], line_buf[2], line_buf[1], line_buf[0]);
+                        pc.printf("length = %d\n", line_length);
+                        #endif
+                        break;
+                    }
+                    else if(recv == 8 || recv == 127)
+                    {
+                        if(line_length > 0)  //Delete one char on screen
+                        {
+                            pc.putc(8);
+                            pc.putc(32);
+                            pc.putc(8);
+                        }
+                        if(line_length <= 4 && line_length>=1)   
+                        {
+                            line_pt --;
+                            line_buf[line_pt] = 255;
+                        }
+                        if(line_length > 0)
+                            line_length --;
+                    }
+                    else if( (recv >= '0' && recv <= '9')||(recv >= 'a' && recv <= 'f')||(recv >= 'A' && recv <= 'F') )
+                    {
+                        pc.putc(recv);
+                        line_length ++;
+                        
+                        if(line_length <= 4)
+                        {
+                            line_buf[line_pt] = recv;
+                            line_pt ++;
+                        }
+                    
+                    }
+                
+                }
+            ret = parse_spi_raw(line_buf, line_length, &cha1_pha, &cha2_pha, &cha1_amp, &cha2_amp);
+            
+            if(ret == PARSE_LONG)   //Input string too long
+            { 
+                pc.printf("%s", msg_strlong);
+                pc.getc();
+            }
+            else if(ret == PARSE_EMPTY)
+            {
+                pc.printf("%s", msg_empty);
+                pc.printf("%s", msg_ret);
+                pc.getc();
+            }
+            else if(ret == PARSE_SHORT) //Input string has error
+            {
+                 pc.printf("%s", msg_strshort);
+                 pc.getc();
+            } 
+            else   //Input is good
+            {    
+                 pc.printf("%s", msg_ok);
+                 #ifdef DEBUG
+                 pc.printf("%d %d %d %d \n", cha2_amp, cha2_pha, cha1_amp, cha1_pha);
+                 #endif
+                 pc.printf("%s", msg_ret);
+                 pc.getc();
+            }  
+            state = MODE_IDLE;
+            break;
+            
                 
             case MODE_CHA1PHA:
             case MODE_CHA1AMP:
@@ -240,9 +320,9 @@
             case MODE_DISPLAY:
                 pc.printf("\n\n ******** Current Parameters ********\n\n");
                 pc.printf("Phase shift  for RF out1 is %d degrees\n", cha1_pha*-7);
-                pc.printf("Attenuation for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
+                pc.printf("Attenuation  for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
                 pc.printf("Phase shift  for RF out2 is %d degrees\n", cha2_pha*-7);
-                pc.printf("Attenuation for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
+                pc.printf("Attenuation  for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
                 pc.printf("%s", msg_ret);
                 pc.getc();
                 state = MODE_IDLE;
@@ -271,9 +351,9 @@
                 //Start printint...
                 pc.printf("******** Now sending parameters ********\n\n");
                 pc.printf("Phase shift  for RF out1 is %d degrees\n", cha1_pha*-7);
-                pc.printf("Attenuation for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
+                pc.printf("Attenuation  for RF out1 is %.1f dB\n", cha1_amp*5.0/10.0);
                 pc.printf("Phase shift  for RF out2 is %d degrees\n", cha2_pha*-7);
-                pc.printf("Attenuation for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
+                pc.printf("Attenuation  for RF out2 is %.1f dB\n", cha2_amp*5.0/10.0);
                 pc.printf("\nSPI bit stream sent:\n");
                 pc.printf("%s", bit_index);