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 08:43:23 2014 +0000
Revision:
0:85afbf3c9fad
Child:
1:bbd6b84fc908
version inicial de la librer?a VarStore

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