MTM PPO mbed cz2

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

Committer:
paweler
Date:
Mon Jun 15 14:47:01 2020 +0000
Revision:
0:5d432267a99f
mbed cz2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
paweler 0:5d432267a99f 1 #ifndef COMMAND_DECODER_H
paweler 0:5d432267a99f 2 #define COMMAND_DECODER_H
paweler 0:5d432267a99f 3
paweler 0:5d432267a99f 4 #define MAX_KEYWORD_STRING_LTH 10
paweler 0:5d432267a99f 5 #define MAX_KEYWORD_NR 4
paweler 0:5d432267a99f 6 #define MAX_TOKEN_NR 3
paweler 0:5d432267a99f 7
paweler 0:5d432267a99f 8 enum KeywordCode {ID, CLB, GOTO, STEP};
paweler 0:5d432267a99f 9 enum TokenType { KEYWORD, NUMBER, STRING};
paweler 0:5d432267a99f 10
paweler 0:5d432267a99f 11 union TokenValue
paweler 0:5d432267a99f 12 {
paweler 0:5d432267a99f 13 enum KeywordCode eKeyword; // jezeli KEYWORD
paweler 0:5d432267a99f 14 unsigned int uiNumber; // jezeli NUMBER
paweler 0:5d432267a99f 15 char *pcString; // jezeli STRING
paweler 0:5d432267a99f 16 };
paweler 0:5d432267a99f 17
paweler 0:5d432267a99f 18 struct Token
paweler 0:5d432267a99f 19 {
paweler 0:5d432267a99f 20 enum TokenType eType; // KEYWORD, NUMBER, STRING
paweler 0:5d432267a99f 21 union TokenValue uValue; // enum, unsigned int, char*
paweler 0:5d432267a99f 22 };
paweler 0:5d432267a99f 23
paweler 0:5d432267a99f 24 struct Keyword
paweler 0:5d432267a99f 25 {
paweler 0:5d432267a99f 26 enum KeywordCode eCode;
paweler 0:5d432267a99f 27 char cString[MAX_KEYWORD_STRING_LTH + 1];
paweler 0:5d432267a99f 28 };
paweler 0:5d432267a99f 29
paweler 0:5d432267a99f 30 class Decoder
paweler 0:5d432267a99f 31 {
paweler 0:5d432267a99f 32 public:
paweler 0:5d432267a99f 33 void DecodeMsg(char *pcString);
paweler 0:5d432267a99f 34
paweler 0:5d432267a99f 35 struct Token asToken[MAX_TOKEN_NR];
paweler 0:5d432267a99f 36 unsigned char ucTokenNr;
paweler 0:5d432267a99f 37 private:
paweler 0:5d432267a99f 38 unsigned char ucFindTokensInString(char *pcString);
paweler 0:5d432267a99f 39 enum Result eStringToKeyword(char pcStr[],enum KeywordCode *peKeywordCode);
paweler 0:5d432267a99f 40 void DecodeTokens(void);
paweler 0:5d432267a99f 41
paweler 0:5d432267a99f 42 union TokenValue uTokenValue;
paweler 0:5d432267a99f 43 struct Keyword sKeyword;
paweler 0:5d432267a99f 44
paweler 0:5d432267a99f 45 };
paweler 0:5d432267a99f 46 #endif