mbed2 pre-final

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

Revision:
2:7dc265489818
Parent:
1:be03cac9fe74
Child:
4:a8494b656292
diff -r be03cac9fe74 -r 7dc265489818 main.cpp
--- a/main.cpp	Mon Jun 08 21:57:59 2020 +0000
+++ b/main.cpp	Sun Jun 14 11:13:56 2020 +0000
@@ -1,66 +1,53 @@
 #include "mbed.h"
-#include "command_decoder.h"
+#include "token_decoder.h"
+#include "servo.h"
+#include "uart.h"
+#include "string.h"
 
-Serial MyUart(SERIAL_TX, SERIAL_RX);
+DigitalIn UserButton(USER_BUTTON);
 
-unsigned int puts (char *pcCharTab, unsigned int uiCharTabSize) {
-    
-    unsigned int uiNullCheck;
-    
-    for(int i = 0; i < uiCharTabSize; i++) {
-        if((pcCharTab[i] == 0)) {
-            uiNullCheck += 1;
-        }
-    }
-    for(int i = 0; pcCharTab[i] != 0; i++) {
-        MyUart.putc(pcCharTab[i]);
-    }
-    MyUart.putc(13);
-    return uiNullCheck ? 0 : 1;
-}
+unsigned char ucTokenNr = 0;
+struct Token asToken[MAX_TOKEN_NR];
+struct Keyword asKeywordList[MAX_KEYWORD_NR] = {
+    {ID, "id"},
+    {CALIB, "calib"},
+    {GOTO, "goto"},
+    {STEP, "step"}
+};
 
-unsigned int gets (char *pcRecCharTab, unsigned int uiRecCharTabSize) {
-    
-    unsigned int iTabIterator = 0;
-    char cRecChar;
-    
-    for(iTabIterator = 0; cRecChar != 13 ; iTabIterator++) {
-        cRecChar = MyUart.getc();
-        pcRecCharTab[iTabIterator] = cRecChar;
-        if(iTabIterator >= (uiRecCharTabSize - 1)) {
-            return 1;
-        }
-    }
-    pcRecCharTab[iTabIterator - 1] = 0;
-    return 0;
-}
+Uart MyUart;
+TokenDecoder MyTokenDecoder;
+Servo MyServo;
+Serial pc(SERIAL_TX, SERIAL_RX);
 
 int main()
 {
-    char cRecCharTab[50];
-    char cSendCharTab[50];
-    ucTokenNr = 0;
-    
+    char cRecCharTab[MAX_KEYWORD_STRING_LTH];
     while(1) {
-        gets(cRecCharTab, 50);
-        MyCommandDecoder.DecodeMsg(cRecCharTab);
-        if(ucTokenNr != 0) {
-            for(int iCurrentToken = 0; iCurrentToken <= ucTokenNr; iCurrentToken++) {
-                if(asToken[iCurrentToken].eType == KEYWORD) {
-                    switch(asToken[iCurrentToken].uValue.eKeyword) {
-                        case ID:
-                            puts("id anyidentifier", 50);
-                        break;
-                        default:
-                        break;
-                    }
-                }
-                else {
-                    puts("unknowncommand", 50);
-                }
-                
+        MyUart.gets(cRecCharTab, MAX_KEYWORD_STRING_LTH);
+        MyTokenDecoder.DecodeMsg(cRecCharTab);
+        if((ucTokenNr > 0) && (asToken[0].eType == KEYWORD)) {
+            switch(asToken[0].uValue.eKeyword) {
+                case ID:
+                    MyUart.puts("id anyidentifier", 20);
+                    break;
+                case CALIB:
+                    MyServo.Callib();
+                    MyUart.puts("ok", 5);
+                    break;
+                case GOTO:
+                    MyServo.GoTo(asToken[1].uValue.uiNumber);
+                    MyUart.puts("ok", 5);
+                    break;
+                case STEP:
+                    MyServo.GoTo(MyServo.uiCurrentPosition + asToken[1].uValue.uiNumber);
+                    MyUart.puts("ok", 5);
+                    break;
             }
         }
-        MyUart.putc('\n');
+        else {
+            MyUart.puts("unknowncommand", 15);
+        }
+        pc.putc('\n');
     }
 }