last version

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

Revision:
2:e23243b26a23
Parent:
1:d562d46c33b7
--- a/main.cpp	Wed May 20 07:59:22 2020 +0000
+++ b/main.cpp	Tue Jun 09 11:23:48 2020 +0000
@@ -1,30 +1,106 @@
 #include "mbed.h"
-#include "keyboard_ts_lcd.h"
+#include "command_decoder.h"
+#include "servo_gui.h"
+
+#define CR '\r'
+
+Serial MyUART(USBTX, USBRX,9600);
+ServoGui MyServoGui;
+CommandDecoder MyCommandDecoder;
 
-int main()
-{  
-    KeyboardTsLcd MyKeyboardTsLcd(1);
-    LedLcd MyLed(3);
+uint8_t puts(char *cBufferTransmit, unsigned char ucBufferSize){
+    unsigned char ucCharacterCounter;   
+    
+    for(ucCharacterCounter = 0; ucCharacterCounter <= ucBufferSize; ucCharacterCounter++){      
+        if(cBufferTransmit[ucBufferSize] == NULL){
+        break;
+        }
+    }       
+    if(ucCharacterCounter == ucBufferSize){
+        return 1;
+    }
+        
+    for(unsigned char ucCharacterCounter = 0; cBufferTransmit[ucCharacterCounter] != NULL; ucCharacterCounter++){
+        MyUART.putc(cBufferTransmit[ucCharacterCounter]); 
+    }                              
+    MyUART.putc(CR);           
+    return 0;     
+  } 
   
-    while(1){  
-       switch(MyKeyboardTsLcd.eRead()){
-           case BUTTON_0:
-                MyLed.On(3);
+uint8_t gets(char *cBufferReceived, unsigned char ucBufferSize){
+    unsigned char ucCharacterCounter = 0;
+    
+    while(ucCharacterCounter < ucBufferSize){
+        cBufferReceived[ucCharacterCounter] = MyUART.getc(); 
+        if(cBufferReceived[ucCharacterCounter] == CR){
+           cBufferReceived[ucCharacterCounter] = NULL; 
+           return 0;        
+        }
+        ucCharacterCounter++;
+    }    
+    return 1;
+} 
+
+void TokenHandling(){  
+    char cID[] = "id_0x777";
+    char cUnkownCommand[] = "unknowncommand";
+    char cOK[] = "ok";
+    
+    if((MyCommandDecoder.ucTokenNr>0) && (MyCommandDecoder.asToken[0].eType == KEYWORD)){
+       switch(MyCommandDecoder.asToken[0].uValue.eKeyword){
+            case ID:
+                puts(cID);
                 break;
-            case BUTTON_1:
-                MyLed.On(2);
-                break; 
-            case BUTTON_2:
-                MyLed.On(1);
-                break;    
-            case BUTTON_3:
-                MyLed.On(0);
+            case CALLIB:
+                MyServoGui.ServoCallib();
+                puts(cOK);
+                break;
+            case GOTO:
+                if(MyCommandDecoder.asToken[1].eType == NUMBER){
+                  MyServoGui.ServoGoTo(MyCommandDecoder.asToken[1].uValue.uiNumber);
+                  MyServoGui.sServo.uiPreviousPosition = MyCommandDecoder.asToken[1].uValue.uiNumber;   
+                  puts(cOK);                         
+                }
+                else{
+                   puts(cUnkownCommand);
+                }
                 break;   
+            case STEP:
+                if(MyCommandDecoder.asToken[1].eType == NUMBER){
+                  MyServoGui.ServoGoTo(MyServoGui.sServo.uiPreviousPosition + MyCommandDecoder.asToken[1].uValue.uiNumber);
+                  MyServoGui.sServo.uiPreviousPosition = MyServoGui.sServo.uiPreviousPosition + MyCommandDecoder.asToken[1].uValue.uiNumber; 
+                  puts(cOK); 
+                }
+                else{
+                 puts(cUnkownCommand);
+                }  
+                break;
             default:
-                MyLed.On(4);
-            break; 
+                puts(cUnkownCommand);
+                break;                                                                   
         }
-     wait(0.1); 
-     } 
+    }
+    else {
+        puts(cUnkownCommand,sizeof(cUnkownCommand));
+    }       
+}              
+
+int main(){    
+   char cUnkownCommand[] = "unkowncommand"; 
+   char cBufferReceived[10];
+
+    while(1){   
+          
+          if(gets(cBufferReceived,sizeof(cBufferReceived)) == 0){
+              MyCommandDecoder.DecodeMsg(cBufferReceived);
+              TokenHandling();
+              
+          }
+          else{
+              puts(cUnkownCommand,sizeof(cUnkownCommand));
+          } 
+                              
+    }     
 }
 
+