mbed2 pre-final

Dependencies:   LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI

Committer:
domino5740
Date:
Mon Jun 15 17:31:23 2020 +0000
Revision:
4:a8494b656292
Parent:
2:7dc265489818
Child:
5:7ca9ea4cde3a
final

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 4:a8494b656292 18 pcTokenStart = strtok(NULL, " ");
domino5740 2:7dc265489818 19
domino5740 2:7dc265489818 20 }
domino5740 2:7dc265489818 21
domino5740 2:7dc265489818 22 return ucTokenNr;
domino5740 2:7dc265489818 23 }
domino5740 2:7dc265489818 24
domino5740 2:7dc265489818 25 enum Result TokenDecoder::eStringToKeyword (char pcStr[], enum KeywordCode *peKeywordCode) {
domino5740 2:7dc265489818 26
domino5740 2:7dc265489818 27 unsigned char ucKeywordCounter;
domino5740 2:7dc265489818 28
domino5740 2:7dc265489818 29 for(ucKeywordCounter = 0; ucKeywordCounter < MAX_KEYWORD_NR; ucKeywordCounter++) {
domino5740 2:7dc265489818 30 if(strcmp(pcStr, asKeywordList[ucKeywordCounter].cString) == 0) {
domino5740 2:7dc265489818 31 *peKeywordCode = asKeywordList[ucKeywordCounter].eCode;
domino5740 2:7dc265489818 32 return OK;
domino5740 2:7dc265489818 33 }
domino5740 2:7dc265489818 34 }
domino5740 2:7dc265489818 35 return ERR;
domino5740 2:7dc265489818 36 }
domino5740 2:7dc265489818 37
domino5740 2:7dc265489818 38 void TokenDecoder::DecodeTokens(void) {
domino5740 2:7dc265489818 39
domino5740 2:7dc265489818 40 unsigned char ucTokenCounter;
domino5740 2:7dc265489818 41
domino5740 2:7dc265489818 42 for(ucTokenCounter = 0; ucTokenCounter < ucTokenNr; ucTokenCounter++) {
domino5740 2:7dc265489818 43 if(eStringToKeyword(asToken[ucTokenCounter].uValue.pcString, &asToken[ucTokenCounter].uValue.eKeyword) == OK) {
domino5740 2:7dc265489818 44 asToken[ucTokenCounter].eType = KEYWORD;
domino5740 2:7dc265489818 45 }
domino5740 2:7dc265489818 46 else if(sscanf(asToken[ucTokenCounter].uValue.pcString, "%4x", &asToken[ucTokenCounter].uValue.uiNumber)){
domino5740 2:7dc265489818 47 asToken[ucTokenCounter].eType = NUMBER;
domino5740 2:7dc265489818 48 }
domino5740 2:7dc265489818 49 else {
domino5740 2:7dc265489818 50 asToken[ucTokenCounter].eType = STRING;
domino5740 2:7dc265489818 51 }
domino5740 2:7dc265489818 52 }
domino5740 2:7dc265489818 53 }
domino5740 2:7dc265489818 54
domino5740 2:7dc265489818 55 void TokenDecoder::DecodeMsg(char *pcString) {
domino5740 2:7dc265489818 56 ucTokenNr = ucFindTokensInString(pcString);
domino5740 2:7dc265489818 57 DecodeTokens();
domino5740 2:7dc265489818 58 }