last version
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
Diff: command_decoder.h
- Revision:
- 2:e23243b26a23
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/command_decoder.h Tue Jun 09 11:23:48 2020 +0000 @@ -0,0 +1,47 @@ +#ifndef COMMAND_DECODER_H +#define COMMAND_DECODER_H +#include "mbed.h" +#include <string> + +#define MAX_TOKEN_NR 2 +#define MAX_KEYWORD_STRING_LTH 6 +#define MAX_KEYWORD_NR 4 +#define DELIMITER_CHAR 0x20 + +enum TokenType { KEYWORD, NUMBER, STRING}; +enum KeywordCode {ID,CALLIB,GOTO,STEP}; +enum Result { OK, FAIL }; + + +union TokenValue { + enum KeywordCode eKeyword; + unsigned int uiNumber; + char *pcString; +}; + +struct Token { + enum TokenType eType; + union TokenValue uValue; +}; + +struct Keyword { + enum KeywordCode eCode; + char cString[MAX_KEYWORD_STRING_LTH + 1]; +}; + +class CommandDecoder { + public: + void DecodeMsg(char *pcString); + struct Token asToken[MAX_TOKEN_NR]; + unsigned char ucTokenNr; + private: + enum Result eHexStringToUInt(char pcStr[],unsigned int *puiValue); + void ReplaceCharactersInString(char pcString[], char cOldChar,char cNewChar); + void TokenizeString(char *pcString); + unsigned char ucFindTokensInString(char *pcString); + enum Result eStringToKeyword(char pcStr[],enum KeywordCode *peKeywordCode); + enum Result DecodeTokens(); + +}; + +#endif \ No newline at end of file