Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: LCD_DISCO_F429ZI mbed BSP_DISCO_F429ZI
Diff: TokensHandling.cpp
- Revision:
- 0:befccd954577
- Child:
- 1:4fd32c2e7975
diff -r 000000000000 -r befccd954577 TokensHandling.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/TokensHandling.cpp Tue Jun 09 10:21:57 2020 +0000
@@ -0,0 +1,88 @@
+#include "TokensHandling.h"
+#include "mbed.h"
+
+#define MAX_KEYWORD_NR 4
+
+enum Result {OK, ERR};
+
+struct Keyword{
+ enum KeywordCode eCode;
+ char cString[MAX_KEYWORD_STRING_LTH];
+};
+
+struct Keyword asKeywordList[MAX_KEYWORD_NR]={
+ {CALLIB, "callib"},
+ {GOTO, "goto"},
+ {ID, "id"},
+ {STEP, "step"},
+};
+
+void TokensHandler::ReplaceCharactersInString(char *pcString,char cOldChar,char cNewChar){
+ char *CurrentChar = strchr(pcString,cOldChar);
+ while(*CurrentChar){
+ *CurrentChar = cNewChar;
+ CurrentChar = strchr(CurrentChar,cOldChar);
+ }
+}
+
+
+unsigned char TokensHandler::ucFindTokensInString(char *pcString){
+ char *pcTokenString = pcString;
+ pcTokenString = strtok(pcTokenString, " ");
+
+ for(ucTokenNr=0;((pcTokenString != NULL) && (ucTokenNr < MAX_TOKEN_NR));ucTokenNr++)
+ {
+ asToken[ucTokenNr].uValue.pcString = pcTokenString;
+ pcTokenString = strtok(NULL, " ");
+ }
+ return ucTokenNr;
+}
+
+
+
+enum Result TokensHandler::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 TokensHandler::DecodeTokens(void){
+ unsigned char ucTokenCounter;
+ struct Token *psCurrentToken;
+ unsigned int uiTokenValue;
+ enum KeywordCode eTokenCode;
+
+ for(ucTokenCounter= 0; ucTokenCounter< ucTokenNr; ucTokenCounter++){
+ psCurrentToken= &asToken[ucTokenCounter];
+
+ if(sscanf(asToken[ucTokenCounter].uValue.pcString, "%x", &uiTokenValue) == 1 ){
+ psCurrentToken->eType= NUMBER;
+ psCurrentToken->uValue.uiNumber= uiTokenValue;
+ }
+ else if(OK== eStringToKeyword(psCurrentToken->uValue.pcString, &eTokenCode)){
+ psCurrentToken->eType=KEYWORD;
+ psCurrentToken->uValue.eKeyword=eTokenCode;
+ }
+ else{
+ psCurrentToken->eType=STRING;
+ }
+ }
+}
+
+void TokensHandler::DecodeMsg(char *pcString){
+ ucTokenNr= ucFindTokensInString(pcString);
+ ReplaceCharactersInString(pcString, ' ', NULL);
+ DecodeTokens();
+}
+
+TokensHandler::TokensHandler(){
+ ucTokenNr=0;
+}
+