last version

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

command_decoder.h

Committer:
bolko
Date:
2020-06-09
Revision:
2:e23243b26a23

File content as of revision 2:e23243b26a23:

#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