Oddanie

Dependents:   MBED2-5

Committer:
lolkusus
Date:
Mon May 18 18:03:38 2020 +0000
Revision:
1:288ebe73ba81
Parent:
0:f6e7c3ad5a58
final;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lolkusus 0:f6e7c3ad5a58 1 #ifndef DECODER_H
lolkusus 0:f6e7c3ad5a58 2 #define DECODER_H
lolkusus 0:f6e7c3ad5a58 3
lolkusus 1:288ebe73ba81 4 #include "mbed.h"
lolkusus 1:288ebe73ba81 5
lolkusus 0:f6e7c3ad5a58 6 #define HEX_bm 0x000F
lolkusus 0:f6e7c3ad5a58 7 #define MAX_TOKEN_NR 2
lolkusus 0:f6e7c3ad5a58 8 #define MAX_KEYWORD_STRING_LTH 6
lolkusus 0:f6e7c3ad5a58 9 #define MAX_KEYWORD_NR 4
lolkusus 0:f6e7c3ad5a58 10
lolkusus 0:f6e7c3ad5a58 11 typedef enum TokeType
lolkusus 0:f6e7c3ad5a58 12 {KEYWORD, NUMBER, EMPTY} TokeType;
lolkusus 0:f6e7c3ad5a58 13
lolkusus 0:f6e7c3ad5a58 14 typedef enum Result
lolkusus 0:f6e7c3ad5a58 15 { OK, ERR } Resul;
lolkusus 0:f6e7c3ad5a58 16
lolkusus 0:f6e7c3ad5a58 17 typedef enum KeywordCode
lolkusus 0:f6e7c3ad5a58 18 {ID, CALLIB, GOTO, STEP} KeywordCode;
lolkusus 0:f6e7c3ad5a58 19
lolkusus 0:f6e7c3ad5a58 20 typedef union TokenValue
lolkusus 0:f6e7c3ad5a58 21 {
lolkusus 0:f6e7c3ad5a58 22 enum KeywordCode eKeyword;
lolkusus 0:f6e7c3ad5a58 23 unsigned int uiNumber;
lolkusus 0:f6e7c3ad5a58 24 char *pcString;
lolkusus 0:f6e7c3ad5a58 25 } TokenValue;
lolkusus 0:f6e7c3ad5a58 26
lolkusus 0:f6e7c3ad5a58 27 typedef struct Token
lolkusus 0:f6e7c3ad5a58 28 {
lolkusus 0:f6e7c3ad5a58 29 enum TokeType eType;
lolkusus 0:f6e7c3ad5a58 30 union TokenValue uValue;
lolkusus 0:f6e7c3ad5a58 31 } Token;
lolkusus 0:f6e7c3ad5a58 32
lolkusus 0:f6e7c3ad5a58 33 typedef struct Keyword
lolkusus 0:f6e7c3ad5a58 34 {
lolkusus 0:f6e7c3ad5a58 35 enum KeywordCode eCode;
lolkusus 0:f6e7c3ad5a58 36 char cString[MAX_KEYWORD_STRING_LTH + 1];
lolkusus 0:f6e7c3ad5a58 37 } Keyword;
lolkusus 0:f6e7c3ad5a58 38
lolkusus 0:f6e7c3ad5a58 39 class Decoder
lolkusus 0:f6e7c3ad5a58 40 {
lolkusus 0:f6e7c3ad5a58 41 public:
lolkusus 0:f6e7c3ad5a58 42 enum Result DecodeMsg(char *pcString);
lolkusus 0:f6e7c3ad5a58 43 struct Token asToken[MAX_TOKEN_NR];
lolkusus 0:f6e7c3ad5a58 44 private:
lolkusus 0:f6e7c3ad5a58 45 void ReplaceCharactersInString(char pcString[],char cOldChar,char cNewChar);
lolkusus 0:f6e7c3ad5a58 46 enum Result eHexStringToUInt(char pcStr[],unsigned int *puiValue);
lolkusus 0:f6e7c3ad5a58 47 unsigned char ucFindTokensInString(char *pcString);
lolkusus 0:f6e7c3ad5a58 48 enum Result eStringToKeyword (char pcStr[],enum KeywordCode *peKeywordCode);
lolkusus 0:f6e7c3ad5a58 49 enum Result DecodeTokens();
lolkusus 0:f6e7c3ad5a58 50 };
lolkusus 0:f6e7c3ad5a58 51
lolkusus 0:f6e7c3ad5a58 52 #endif // DECODER_H