
MTM PPO mbed cz2
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
command_decoder.h@0:5d432267a99f, 2020-06-15 (annotated)
- Committer:
- paweler
- Date:
- Mon Jun 15 14:47:01 2020 +0000
- Revision:
- 0:5d432267a99f
mbed cz2
Who changed what in which revision?
User | Revision | Line number | New 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 |