mbed2 pre-final

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

Committer:
domino5740
Date:
Sun Jun 14 11:13:56 2020 +0000
Revision:
2:7dc265489818
Child:
4:a8494b656292
pre-finala

Who changed what in which revision?

UserRevisionLine numberNew contents of line
domino5740 2:7dc265489818 1 #include "token_decoder.h"
domino5740 2:7dc265489818 2 #include <string.h>
domino5740 2:7dc265489818 3 #include <stdio.h>
domino5740 2:7dc265489818 4
domino5740 2:7dc265489818 5 extern unsigned char ucTokenNr;
domino5740 2:7dc265489818 6 extern struct Token asToken[MAX_TOKEN_NR];
domino5740 2:7dc265489818 7 extern struct Keyword asKeywordList[MAX_KEYWORD_NR];
domino5740 2:7dc265489818 8
domino5740 2:7dc265489818 9 unsigned char TokenDecoder::ucFindTokensInString(char *pcString) {
domino5740 2:7dc265489818 10
domino5740 2:7dc265489818 11 ucTokenNr = 0;
domino5740 2:7dc265489818 12 char *pcTokenStart = pcString;
domino5740 2:7dc265489818 13 pcTokenStart = strtok(pcString, " ");
domino5740 2:7dc265489818 14
domino5740 2:7dc265489818 15 while((pcTokenStart != '\0') && (ucTokenNr < MAX_TOKEN_NR)) {
domino5740 2:7dc265489818 16 asToken[ucTokenNr].uValue.pcString = pcTokenStart;
domino5740 2:7dc265489818 17 ucTokenNr++;
domino5740 2:7dc265489818 18 pcTokenStart = strchr(pcTokenStart, ' ');
domino5740 2:7dc265489818 19 pcTokenStart = strtok(pcTokenStart, " ");
domino5740 2:7dc265489818 20
domino5740 2:7dc265489818 21 }
domino5740 2:7dc265489818 22
domino5740 2:7dc265489818 23 return ucTokenNr;
domino5740 2:7dc265489818 24 }
domino5740 2:7dc265489818 25
domino5740 2:7dc265489818 26 enum Result TokenDecoder::eStringToKeyword (char pcStr[], enum KeywordCode *peKeywordCode) {
domino5740 2:7dc265489818 27
domino5740 2:7dc265489818 28 unsigned char ucKeywordCounter;
domino5740 2:7dc265489818 29
domino5740 2:7dc265489818 30 for(ucKeywordCounter = 0; ucKeywordCounter < MAX_KEYWORD_NR; ucKeywordCounter++) {
domino5740 2:7dc265489818 31 if(strcmp(pcStr, asKeywordList[ucKeywordCounter].cString) == 0) {
domino5740 2:7dc265489818 32 *peKeywordCode = asKeywordList[ucKeywordCounter].eCode;
domino5740 2:7dc265489818 33 return OK;
domino5740 2:7dc265489818 34 }
domino5740 2:7dc265489818 35 }
domino5740 2:7dc265489818 36 return ERR;
domino5740 2:7dc265489818 37 }
domino5740 2:7dc265489818 38
domino5740 2:7dc265489818 39 void TokenDecoder::DecodeTokens(void) {
domino5740 2:7dc265489818 40
domino5740 2:7dc265489818 41 unsigned char ucTokenCounter;
domino5740 2:7dc265489818 42
domino5740 2:7dc265489818 43 for(ucTokenCounter = 0; ucTokenCounter < ucTokenNr; ucTokenCounter++) {
domino5740 2:7dc265489818 44 if(eStringToKeyword(asToken[ucTokenCounter].uValue.pcString, &asToken[ucTokenCounter].uValue.eKeyword) == OK) {
domino5740 2:7dc265489818 45 asToken[ucTokenCounter].eType = KEYWORD;
domino5740 2:7dc265489818 46 }
domino5740 2:7dc265489818 47 else if(sscanf(asToken[ucTokenCounter].uValue.pcString, "%4x", &asToken[ucTokenCounter].uValue.uiNumber)){
domino5740 2:7dc265489818 48 asToken[ucTokenCounter].eType = NUMBER;
domino5740 2:7dc265489818 49 }
domino5740 2:7dc265489818 50 else {
domino5740 2:7dc265489818 51 asToken[ucTokenCounter].eType = STRING;
domino5740 2:7dc265489818 52 }
domino5740 2:7dc265489818 53 }
domino5740 2:7dc265489818 54 }
domino5740 2:7dc265489818 55
domino5740 2:7dc265489818 56 void TokenDecoder::DecodeMsg(char *pcString) {
domino5740 2:7dc265489818 57 ucTokenNr = ucFindTokensInString(pcString);
domino5740 2:7dc265489818 58 DecodeTokens();
domino5740 2:7dc265489818 59 }