library to modify and read program variable in runtime from a serial console. You can reset as well the mbed from the console without pushing buttons. Handy for debugging from the online compiler as you can change the behavior of the program without need to recompile each time.

Committer:
julmbed
Date:
Tue Aug 26 09:39:40 2014 +0000
Revision:
17:8c20a558d34f
Parent:
13:e1ba5bf9e51f
fixed doc typos

Who changed what in which revision?

UserRevisionLine numberNew contents of line
julmbed 0:85afbf3c9fad 1 #include "VarItems.h"
julmbed 0:85afbf3c9fad 2 #include <string.h>
julmbed 0:85afbf3c9fad 3 #include <stdlib.h>
julmbed 0:85afbf3c9fad 4 #include <stdio.h>
julmbed 4:4be2eaf872df 5 #include "mbed.h"
julmbed 0:85afbf3c9fad 6
julmbed 9:d081aa4e4418 7 extern RawSerial pc;
julmbed 1:bbd6b84fc908 8
julmbed 9:d081aa4e4418 9 #define DMP_SZ 132
julmbed 1:bbd6b84fc908 10
julmbed 1:bbd6b84fc908 11
julmbed 0:85afbf3c9fad 12 VarItem::VarItem()
julmbed 0:85afbf3c9fad 13 {
julmbed 0:85afbf3c9fad 14 VarName[0]='\0';
julmbed 0:85afbf3c9fad 15
julmbed 0:85afbf3c9fad 16 ValInt=NULL;
julmbed 0:85afbf3c9fad 17 ValFloat=NULL;
julmbed 0:85afbf3c9fad 18 ArraySize=0;
julmbed 0:85afbf3c9fad 19 }
julmbed 0:85afbf3c9fad 20
julmbed 0:85afbf3c9fad 21 VarItem::~VarItem()
julmbed 0:85afbf3c9fad 22 {
julmbed 0:85afbf3c9fad 23 //dtor
julmbed 0:85afbf3c9fad 24 }
julmbed 0:85afbf3c9fad 25
julmbed 0:85afbf3c9fad 26 int VarItem::SetVal(char *Val)
julmbed 0:85afbf3c9fad 27 {
julmbed 0:85afbf3c9fad 28 char * Values;
julmbed 0:85afbf3c9fad 29 unsigned int Count=0;
julmbed 4:4be2eaf872df 30
julmbed 0:85afbf3c9fad 31 Values=strtok(Val,",");
julmbed 1:bbd6b84fc908 32 if(Values) {
julmbed 1:bbd6b84fc908 33 do {
julmbed 1:bbd6b84fc908 34 switch(VarType) {
julmbed 0:85afbf3c9fad 35
julmbed 1:bbd6b84fc908 36 case T_int:
julmbed 1:bbd6b84fc908 37 *(ValInt+Count) = atoi(Values);
julmbed 1:bbd6b84fc908 38 break;
julmbed 0:85afbf3c9fad 39
julmbed 1:bbd6b84fc908 40 case T_float:
julmbed 1:bbd6b84fc908 41 *(ValFloat+Count) = atof(Values);
julmbed 1:bbd6b84fc908 42 break;
julmbed 0:85afbf3c9fad 43 };
julmbed 0:85afbf3c9fad 44 Count++;
julmbed 0:85afbf3c9fad 45 Values=strtok(NULL,",");
julmbed 1:bbd6b84fc908 46 } while((Values !=NULL) && (Count < ArraySize));
julmbed 2:a59207652720 47 return 1;
julmbed 1:bbd6b84fc908 48 } else
julmbed 0:85afbf3c9fad 49 return ERR;
julmbed 0:85afbf3c9fad 50
julmbed 0:85afbf3c9fad 51 }
julmbed 0:85afbf3c9fad 52
julmbed 0:85afbf3c9fad 53 void VarItem::SetVar(VarTypes VT,void* VarPtr)
julmbed 0:85afbf3c9fad 54 {
julmbed 0:85afbf3c9fad 55
julmbed 0:85afbf3c9fad 56 VarType=VT;
julmbed 1:bbd6b84fc908 57 switch(VarType) {
julmbed 0:85afbf3c9fad 58
julmbed 1:bbd6b84fc908 59 case T_int:
julmbed 1:bbd6b84fc908 60 ValInt = (int *) VarPtr;
julmbed 1:bbd6b84fc908 61 break;
julmbed 0:85afbf3c9fad 62
julmbed 1:bbd6b84fc908 63 case T_float:
julmbed 1:bbd6b84fc908 64 ValFloat = (float*) VarPtr;
julmbed 1:bbd6b84fc908 65 break;
julmbed 0:85afbf3c9fad 66
julmbed 0:85afbf3c9fad 67 };
julmbed 0:85afbf3c9fad 68
julmbed 0:85afbf3c9fad 69 }
julmbed 0:85afbf3c9fad 70
julmbed 0:85afbf3c9fad 71
julmbed 0:85afbf3c9fad 72 void VarItem::SetVarArraySize(int Size)
julmbed 0:85afbf3c9fad 73 {
julmbed 0:85afbf3c9fad 74 ArraySize=Size;
julmbed 0:85afbf3c9fad 75 }
julmbed 0:85afbf3c9fad 76
julmbed 0:85afbf3c9fad 77
julmbed 0:85afbf3c9fad 78 void VarItem::SetVarName(char *Name)
julmbed 0:85afbf3c9fad 79 {
julmbed 0:85afbf3c9fad 80 strncpy(VarName,Name,VAR_NAME_LEN);
julmbed 0:85afbf3c9fad 81 VarName[VAR_NAME_LEN-1]='\0';
julmbed 0:85afbf3c9fad 82 }
julmbed 0:85afbf3c9fad 83
julmbed 0:85afbf3c9fad 84
julmbed 0:85afbf3c9fad 85 char *VarItem::Dump()
julmbed 0:85afbf3c9fad 86 {
julmbed 9:d081aa4e4418 87 static char StrDump[DMP_SZ];
julmbed 9:d081aa4e4418 88 unsigned int DumpSize=DMP_SZ;
julmbed 1:bbd6b84fc908 89 unsigned int DumpCounter=0, ArrayCounter=0;;
julmbed 0:85afbf3c9fad 90 char Tmp[16];
julmbed 9:d081aa4e4418 91
julmbed 1:bbd6b84fc908 92 memset(StrDump,0,DMP_SZ);
julmbed 0:85afbf3c9fad 93
julmbed 1:bbd6b84fc908 94 do {
julmbed 1:bbd6b84fc908 95 switch(VarType) {
julmbed 1:bbd6b84fc908 96 case T_int:
julmbed 1:bbd6b84fc908 97 sprintf(Tmp,"%d,",*(ValInt+ArrayCounter));
julmbed 1:bbd6b84fc908 98 break;
julmbed 1:bbd6b84fc908 99 case T_float:
julmbed 1:bbd6b84fc908 100 sprintf(Tmp,"%f,",*(ValFloat+ArrayCounter));
julmbed 1:bbd6b84fc908 101 break;
julmbed 0:85afbf3c9fad 102 };
julmbed 13:e1ba5bf9e51f 103
julmbed 13:e1ba5bf9e51f 104 if(DumpCounter+strlen(Tmp) >= DumpSize) break;
julmbed 13:e1ba5bf9e51f 105
julmbed 0:85afbf3c9fad 106 strcat(StrDump+DumpCounter,Tmp);
julmbed 0:85afbf3c9fad 107 DumpCounter+=strlen(Tmp);
julmbed 1:bbd6b84fc908 108 ArrayCounter++;
julmbed 1:bbd6b84fc908 109 } while (ArrayCounter < ArraySize);
julmbed 0:85afbf3c9fad 110
julmbed 13:e1ba5bf9e51f 111 StrDump[DumpSize-1]='\0';
julmbed 0:85afbf3c9fad 112
julmbed 0:85afbf3c9fad 113 return StrDump;
julmbed 0:85afbf3c9fad 114
julmbed 0:85afbf3c9fad 115 }
julmbed 0:85afbf3c9fad 116
julmbed 0:85afbf3c9fad 117
julmbed 0:85afbf3c9fad 118 char *VarItem::GetVarName()
julmbed 0:85afbf3c9fad 119 {
julmbed 0:85afbf3c9fad 120 return VarName;
julmbed 0:85afbf3c9fad 121 }
julmbed 0:85afbf3c9fad 122
julmbed 0:85afbf3c9fad 123