mbed2 pre-final
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
Diff: main.cpp
- 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'); } }