mbed2 pre-final
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
token_decoder.cpp
- Committer:
- domino5740
- Date:
- 2020-06-15
- Revision:
- 5:7ca9ea4cde3a
- Parent:
- 4:a8494b656292
File content as of revision 5:7ca9ea4cde3a:
#include "token_decoder.h" #include <string.h> #include <stdio.h> extern unsigned char ucTokenNr; extern struct Token asToken[MAX_TOKEN_NR]; extern struct Keyword asKeywordList[MAX_KEYWORD_NR]; unsigned char TokenDecoder::ucFindTokensInString(char *pcString) { ucTokenNr = 0; char *pcTokenStart = pcString; pcTokenStart = strtok(pcString, " "); while((pcTokenStart != '\0') && (ucTokenNr < MAX_TOKEN_NR)) { asToken[ucTokenNr].uValue.pcString = pcTokenStart; ucTokenNr++; pcTokenStart = strtok(NULL, " "); } return ucTokenNr; } enum Result TokenDecoder::eStringToKeyword (char pcStr[], enum KeywordCode *peKeywordCode) { unsigned char ucKeywordCounter; for(ucKeywordCounter = 0; ucKeywordCounter < MAX_KEYWORD_NR; ucKeywordCounter++) { if(strcmp(pcStr, asKeywordList[ucKeywordCounter].cString) == 0) { *peKeywordCode = asKeywordList[ucKeywordCounter].eCode; return OK; } } return ERR; } void TokenDecoder::DecodeTokens(void) { unsigned char ucTokenCounter; for(ucTokenCounter = 0; ucTokenCounter < ucTokenNr; ucTokenCounter++) { if(eStringToKeyword(asToken[ucTokenCounter].uValue.pcString, &asToken[ucTokenCounter].uValue.eKeyword) == OK) { asToken[ucTokenCounter].eType = KEYWORD; } else if(sscanf(asToken[ucTokenCounter].uValue.pcString, "%x", &asToken[ucTokenCounter].uValue.uiNumber)){ asToken[ucTokenCounter].eType = NUMBER; } else { asToken[ucTokenCounter].eType = STRING; } } } void TokenDecoder::DecodeMsg(char *pcString) { ucTokenNr = ucFindTokensInString(pcString); DecodeTokens(); }