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:
Mon Aug 25 09:17:32 2014 +0000
Revision:
1:bbd6b84fc908
Parent:
0:85afbf3c9fad
Child:
2:a59207652720
antes de poner el worker en el constructor

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 0:85afbf3c9fad 5
julmbed 1:bbd6b84fc908 6
julmbed 1:bbd6b84fc908 7
julmbed 1:bbd6b84fc908 8 #define DMP_SZ 100
julmbed 1:bbd6b84fc908 9
julmbed 1:bbd6b84fc908 10
julmbed 0:85afbf3c9fad 11 VarItem::VarItem()
julmbed 0:85afbf3c9fad 12 {
julmbed 0:85afbf3c9fad 13 VarName[0]='\0';
julmbed 0:85afbf3c9fad 14
julmbed 0:85afbf3c9fad 15 ValInt=NULL;
julmbed 0:85afbf3c9fad 16 ValFloat=NULL;
julmbed 0:85afbf3c9fad 17 ArraySize=0;
julmbed 0:85afbf3c9fad 18 }
julmbed 0:85afbf3c9fad 19
julmbed 0:85afbf3c9fad 20 VarItem::~VarItem()
julmbed 0:85afbf3c9fad 21 {
julmbed 0:85afbf3c9fad 22 //dtor
julmbed 0:85afbf3c9fad 23 }
julmbed 0:85afbf3c9fad 24
julmbed 0:85afbf3c9fad 25 int VarItem::SetVal(char *Val)
julmbed 0:85afbf3c9fad 26 {
julmbed 0:85afbf3c9fad 27 char * Values;
julmbed 0:85afbf3c9fad 28 unsigned int Count=0;
julmbed 0:85afbf3c9fad 29
julmbed 0:85afbf3c9fad 30 #if defined VARITEMS_DEBUG
julmbed 0:85afbf3c9fad 31 puts(Val);
julmbed 0:85afbf3c9fad 32 #endif // defined
julmbed 0:85afbf3c9fad 33
julmbed 0:85afbf3c9fad 34
julmbed 0:85afbf3c9fad 35 Values=strtok(Val,",");
julmbed 1:bbd6b84fc908 36 if(Values) {
julmbed 1:bbd6b84fc908 37 do {
julmbed 1:bbd6b84fc908 38 switch(VarType) {
julmbed 0:85afbf3c9fad 39
julmbed 1:bbd6b84fc908 40 case T_int:
julmbed 1:bbd6b84fc908 41 *(ValInt+Count) = atoi(Values);
julmbed 1:bbd6b84fc908 42 break;
julmbed 0:85afbf3c9fad 43
julmbed 1:bbd6b84fc908 44 case T_float:
julmbed 1:bbd6b84fc908 45 *(ValFloat+Count) = atof(Values);
julmbed 1:bbd6b84fc908 46 break;
julmbed 0:85afbf3c9fad 47
julmbed 0:85afbf3c9fad 48 };
julmbed 0:85afbf3c9fad 49 Count++;
julmbed 0:85afbf3c9fad 50 Values=strtok(NULL,",");
julmbed 1:bbd6b84fc908 51 } while((Values !=NULL) && (Count < ArraySize));
julmbed 0:85afbf3c9fad 52 return 0;
julmbed 1:bbd6b84fc908 53 } else
julmbed 0:85afbf3c9fad 54 return ERR;
julmbed 0:85afbf3c9fad 55
julmbed 0:85afbf3c9fad 56 }
julmbed 0:85afbf3c9fad 57
julmbed 0:85afbf3c9fad 58 void VarItem::SetVar(VarTypes VT,void* VarPtr)
julmbed 0:85afbf3c9fad 59 {
julmbed 0:85afbf3c9fad 60
julmbed 0:85afbf3c9fad 61 VarType=VT;
julmbed 1:bbd6b84fc908 62 switch(VarType) {
julmbed 0:85afbf3c9fad 63
julmbed 1:bbd6b84fc908 64 case T_int:
julmbed 1:bbd6b84fc908 65 ValInt = (int *) VarPtr;
julmbed 1:bbd6b84fc908 66 break;
julmbed 0:85afbf3c9fad 67
julmbed 1:bbd6b84fc908 68 case T_float:
julmbed 1:bbd6b84fc908 69 ValFloat = (float*) VarPtr;
julmbed 1:bbd6b84fc908 70 break;
julmbed 0:85afbf3c9fad 71
julmbed 0:85afbf3c9fad 72 };
julmbed 0:85afbf3c9fad 73
julmbed 0:85afbf3c9fad 74 }
julmbed 0:85afbf3c9fad 75
julmbed 0:85afbf3c9fad 76 /******
julmbed 0:85afbf3c9fad 77 void VarItem::SetVarType(VarTypes VarType)
julmbed 0:85afbf3c9fad 78 {
julmbed 0:85afbf3c9fad 79 this->VarType=VarType;
julmbed 0:85afbf3c9fad 80 }
julmbed 0:85afbf3c9fad 81 *******/
julmbed 0:85afbf3c9fad 82
julmbed 0:85afbf3c9fad 83 void VarItem::SetVarArraySize(int Size)
julmbed 0:85afbf3c9fad 84 {
julmbed 0:85afbf3c9fad 85 ArraySize=Size;
julmbed 0:85afbf3c9fad 86 }
julmbed 0:85afbf3c9fad 87
julmbed 0:85afbf3c9fad 88
julmbed 0:85afbf3c9fad 89 void VarItem::SetVarName(char *Name)
julmbed 0:85afbf3c9fad 90 {
julmbed 0:85afbf3c9fad 91 strncpy(VarName,Name,VAR_NAME_LEN);
julmbed 0:85afbf3c9fad 92 VarName[VAR_NAME_LEN-1]='\0';
julmbed 0:85afbf3c9fad 93 }
julmbed 0:85afbf3c9fad 94
julmbed 0:85afbf3c9fad 95
julmbed 0:85afbf3c9fad 96 char *VarItem::Dump()
julmbed 0:85afbf3c9fad 97 {
julmbed 1:bbd6b84fc908 98
julmbed 1:bbd6b84fc908 99 static char *StrDump=NULL;
julmbed 0:85afbf3c9fad 100
julmbed 1:bbd6b84fc908 101 unsigned int DumpSize=0;
julmbed 1:bbd6b84fc908 102 unsigned int DumpCounter=0, ArrayCounter=0;;
julmbed 0:85afbf3c9fad 103 char Tmp[16];
julmbed 0:85afbf3c9fad 104
julmbed 1:bbd6b84fc908 105 if(StrDump!=NULL) free(StrDump);
julmbed 0:85afbf3c9fad 106
julmbed 1:bbd6b84fc908 107 DumpSize=DMP_SZ;
julmbed 1:bbd6b84fc908 108 StrDump=(char *)malloc(DumpSize);
julmbed 1:bbd6b84fc908 109 memset(StrDump,0,DMP_SZ);
julmbed 0:85afbf3c9fad 110
julmbed 1:bbd6b84fc908 111 do {
julmbed 1:bbd6b84fc908 112 switch(VarType) {
julmbed 1:bbd6b84fc908 113 case T_int:
julmbed 1:bbd6b84fc908 114 sprintf(Tmp,"%d,",*(ValInt+ArrayCounter));
julmbed 1:bbd6b84fc908 115 break;
julmbed 1:bbd6b84fc908 116 case T_float:
julmbed 1:bbd6b84fc908 117 sprintf(Tmp,"%f,",*(ValFloat+ArrayCounter));
julmbed 1:bbd6b84fc908 118 break;
julmbed 0:85afbf3c9fad 119 };
julmbed 1:bbd6b84fc908 120 if(DumpCounter+strlen(Tmp) >= DumpSize) {
julmbed 0:85afbf3c9fad 121 char *d;
julmbed 1:bbd6b84fc908 122 DumpSize = DumpCounter+DMP_SZ;
julmbed 1:bbd6b84fc908 123 d=(char *)malloc(DumpCounter+DMP_SZ);
julmbed 0:85afbf3c9fad 124 strcpy(d,StrDump);
julmbed 0:85afbf3c9fad 125 free(StrDump);
julmbed 0:85afbf3c9fad 126 StrDump=d;
julmbed 0:85afbf3c9fad 127 }
julmbed 0:85afbf3c9fad 128 strcat(StrDump+DumpCounter,Tmp);
julmbed 0:85afbf3c9fad 129 DumpCounter+=strlen(Tmp);
julmbed 1:bbd6b84fc908 130 ArrayCounter++;
julmbed 1:bbd6b84fc908 131 } while (ArrayCounter < ArraySize);
julmbed 0:85afbf3c9fad 132
julmbed 1:bbd6b84fc908 133 StrDump[strlen(StrDump)-1]='\0';
julmbed 0:85afbf3c9fad 134
julmbed 0:85afbf3c9fad 135 return StrDump;
julmbed 0:85afbf3c9fad 136
julmbed 0:85afbf3c9fad 137 }
julmbed 0:85afbf3c9fad 138
julmbed 0:85afbf3c9fad 139
julmbed 0:85afbf3c9fad 140
julmbed 0:85afbf3c9fad 141 char *VarItem::GetVarName()
julmbed 0:85afbf3c9fad 142 {
julmbed 0:85afbf3c9fad 143 return VarName;
julmbed 0:85afbf3c9fad 144 }
julmbed 0:85afbf3c9fad 145
julmbed 0:85afbf3c9fad 146