yuhang zhu / Mbed 2 deprecated ADAM_menu

Dependencies:   mbed

Revision:
7:c268547fb6c8
Parent:
6:e510aab8f2ce
Child:
8:f0c3d5911b87
--- a/main.cpp	Sat Jul 13 18:02:38 2013 +0000
+++ b/main.cpp	Sat Jul 13 22:16:27 2013 +0000
@@ -98,7 +98,7 @@
                     }
                 }
                 //input over, now checking 
-                
+                //check phase input
                 if(state == MODE_CHA1PHA || state == MODE_CHA2PHA)
                 {  
                    if(state == MODE_CHA1PHA)
@@ -106,17 +106,23 @@
                    else
                         ret = parse_phase(line_buf, &cha2_pha);
                         
-                   if(ret == PARSE_LONG)
+                   if(ret == PARSE_LONG)   //Input string too long
                    { 
                         pc.printf("%s", msg_strlong);
                         pc.getc();
                    }
-                   else if(ret == PARSE_ERR)
+                   else if(ret == PARSE_EMPTY)
+                   {
+                        pc.printf("%s", msg_empty);
+                        pc.printf("%s", msg_ret);
+                        pc.getc();
+                   }
+                   else if(ret == PARSE_ERR) //Input string has error
                    {
                         pc.printf("%s", msg_err);
                         pc.getc();
                    }
-                   else if(ret == PARSE_ROUNDED)
+                   else if(ret == PARSE_ROUNDED) //Input is rounded,show the rounded value
                    {    
                         if(state == MODE_CHA1PHA)
                             pc.printf("%s -%d\n", msg_rounded, cha1_pha*7);
@@ -126,7 +132,7 @@
                         pc.printf("%s", msg_ret);
                         pc.getc();
                    }
-                   else
+                   else   //Input is good
                    {    
                         pc.printf("%s", msg_ok);
                         pc.printf("%d %d\n", cha1_pha*7, cha2_pha*7);
@@ -135,7 +141,49 @@
                    }
                 } 
                 
-                state = MODE_IDLE;
+                //check attenuation input
+                if(state == MODE_CHA1AMP || state == MODE_CHA2AMP)
+                {
+                    if(state == MODE_CHA1AMP)
+                        ret = parse_amp(line_buf, &cha1_amp);
+                    else
+                        ret = parse_amp(line_buf, &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_ERR) //Input string has error
+                   {
+                        pc.printf("%s", msg_err);
+                        pc.getc();
+                   }
+                   else if(ret == PARSE_ROUNDED) //Input is rounded, show the rounded value
+                   {    
+                        if(state == MODE_CHA1AMP)
+                            pc.printf("%s %d\n", msg_rounded, cha1_amp*5);
+                        else if(state == MODE_CHA2AMP)
+                            pc.printf("%s %d\n", msg_rounded, cha2_amp*5);
+                            
+                        pc.printf("%s", msg_ret);
+                        pc.getc();
+                   }
+                   else   //Input is good
+                   {    
+                        pc.printf("%s", msg_ok);
+                        pc.printf("%d %d\n", cha1_amp*5, cha2_amp*5);
+                        pc.printf("%s", msg_ret);
+                        pc.getc();
+                   }
+                }  
+                state = MODE_IDLE;  //back to idle state after input
                 break;
             
         }