Finalny program mbed2

Dependencies:   LCD_DISCO_F429ZI mbed TS_DISCO_F429ZI BSP_DISCO_F429ZI

Revision:
0:33ff53112cc9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Jun 09 08:24:40 2020 +0000
@@ -0,0 +1,89 @@
+#include "mbed.h"
+#include <string.h>
+#include "servo.h"
+#include "command_decoder.h"
+
+DigitalOut led_green(LED1);
+DigitalOut led_red(LED2);
+
+Serial uart(USBTX, USBRX);
+
+Servo myServo;
+Ticker myTimer;
+Token myToken;
+
+unsigned char UART_puts(char * pcString, unsigned char ucSize)
+{
+    unsigned char ucLoopCounter;
+    if( *(pcString + ucSize - 1) != NULL ) return 1;
+    for(ucLoopCounter = 0; ucLoopCounter < (ucSize-1); ucLoopCounter++) {
+        uart.putc(pcString[ucLoopCounter]);
+    }
+    uart.putc('\r');
+    return 0;
+}
+
+unsigned char UART_gets(char *pcDestString, unsigned char ucSize)
+{
+    unsigned char ucLoopCounter;
+    for(ucLoopCounter = 0; ucLoopCounter < (ucSize-1); ucLoopCounter++) {
+        pcDestString[ucLoopCounter] = uart.getc();
+        if(pcDestString[ucLoopCounter] == '\r') {
+            pcDestString[ucLoopCounter] = NULL;
+            return 0;
+        }
+    }
+    return 1;
+}
+
+void ServoUpdate (void){
+    myServo.Automat();
+}
+
+int main()
+{
+    uart.baud(9600);
+    char acUartBuffor[15];
+    
+    myTimer.attach(&ServoUpdate, 0.2);
+    
+    myServo.Callib();
+    
+    while(1) {
+
+        if (uart.readable()){
+            UART_gets(acUartBuffor,15);
+            myToken.DecodeMsg(acUartBuffor);
+            
+            if( (myToken.ucTokenNr != 0) && (KEYWORD == myToken.asToken[0].eType) )
+            {
+                switch(myToken.asToken[0].uValue.eKeyword)
+                {
+                    case ID:
+                        UART_puts("ID 1234\n", 9);
+                        break;
+                        
+                    case CALIB:
+                        myServo.Callib();
+                        UART_puts("ok\n", 4);
+                        break;
+                    
+                    case GOTO:
+                        UART_puts("ok\n", 4);
+                        myServo.GoTo(myToken.asToken[1].uValue.uiNumber);
+                        break;
+                    
+                    case STEP:
+                        UART_puts("ok\n", 4);
+                        myServo.StepRight(myToken.asToken[1].uValue.uiNumber);
+                        break;
+                }
+            }
+            else if((myToken.ucTokenNr != 0)){
+                UART_puts("unknowncommand\n", 16);
+            }
+        
+        } 
+        
+    }
+}