MTM PPO mbed cz2

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

command_decoder.h

Committer:
paweler
Date:
2020-06-15
Revision:
0:5d432267a99f

File content as of revision 0:5d432267a99f:

#ifndef COMMAND_DECODER_H
#define COMMAND_DECODER_H

#define MAX_KEYWORD_STRING_LTH 10
#define MAX_KEYWORD_NR 4
#define MAX_TOKEN_NR 3

enum KeywordCode {ID, CLB, GOTO, STEP};
enum TokenType { KEYWORD, NUMBER, STRING};

union TokenValue
{
    enum KeywordCode eKeyword; // jezeli KEYWORD
    unsigned int uiNumber; // jezeli NUMBER
    char *pcString; // jezeli STRING
};

struct Token
{
    enum TokenType eType; // KEYWORD, NUMBER, STRING
    union TokenValue uValue; // enum, unsigned int, char*
};

struct Keyword
{
    enum KeywordCode eCode;
    char cString[MAX_KEYWORD_STRING_LTH + 1];
};

class Decoder
{
    public:
        void DecodeMsg(char *pcString);
        
        struct Token asToken[MAX_TOKEN_NR];
        unsigned char ucTokenNr;
    private:
        unsigned char ucFindTokensInString(char *pcString);
        enum Result eStringToKeyword(char pcStr[],enum KeywordCode *peKeywordCode);
        void DecodeTokens(void);
        
        union TokenValue uTokenValue;
        struct Keyword sKeyword;
        
};
#endif