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 10:45:03 2014 +0000
Revision:
2:a59207652720
Parent:
1:bbd6b84fc908
Child:
4:4be2eaf872df
worker como  static, lanzandolo de manera independiente en el main. admite tres comandos, via ->DO que son set/get-dump/reset para carge de nuevo programa en el mbed sin darle al boton

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 Values=strtok(Val,",");
julmbed 1:bbd6b84fc908 31 if(Values) {
julmbed 1:bbd6b84fc908 32 do {
julmbed 1:bbd6b84fc908 33 switch(VarType) {
julmbed 0:85afbf3c9fad 34
julmbed 1:bbd6b84fc908 35 case T_int:
julmbed 1:bbd6b84fc908 36 *(ValInt+Count) = atoi(Values);
julmbed 1:bbd6b84fc908 37 break;
julmbed 0:85afbf3c9fad 38
julmbed 1:bbd6b84fc908 39 case T_float:
julmbed 1:bbd6b84fc908 40 *(ValFloat+Count) = atof(Values);
julmbed 1:bbd6b84fc908 41 break;
julmbed 0:85afbf3c9fad 42
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::SetVarType(VarTypes VarType)
julmbed 0:85afbf3c9fad 73 {
julmbed 0:85afbf3c9fad 74 this->VarType=VarType;
julmbed 0:85afbf3c9fad 75 }
julmbed 0:85afbf3c9fad 76 *******/
julmbed 0:85afbf3c9fad 77
julmbed 0:85afbf3c9fad 78 void VarItem::SetVarArraySize(int Size)
julmbed 0:85afbf3c9fad 79 {
julmbed 0:85afbf3c9fad 80 ArraySize=Size;
julmbed 0:85afbf3c9fad 81 }
julmbed 0:85afbf3c9fad 82
julmbed 0:85afbf3c9fad 83
julmbed 0:85afbf3c9fad 84 void VarItem::SetVarName(char *Name)
julmbed 0:85afbf3c9fad 85 {
julmbed 0:85afbf3c9fad 86 strncpy(VarName,Name,VAR_NAME_LEN);
julmbed 0:85afbf3c9fad 87 VarName[VAR_NAME_LEN-1]='\0';
julmbed 0:85afbf3c9fad 88 }
julmbed 0:85afbf3c9fad 89
julmbed 0:85afbf3c9fad 90
julmbed 0:85afbf3c9fad 91 char *VarItem::Dump()
julmbed 0:85afbf3c9fad 92 {
julmbed 1:bbd6b84fc908 93
julmbed 1:bbd6b84fc908 94 static char *StrDump=NULL;
julmbed 0:85afbf3c9fad 95
julmbed 1:bbd6b84fc908 96 unsigned int DumpSize=0;
julmbed 1:bbd6b84fc908 97 unsigned int DumpCounter=0, ArrayCounter=0;;
julmbed 0:85afbf3c9fad 98 char Tmp[16];
julmbed 0:85afbf3c9fad 99
julmbed 1:bbd6b84fc908 100 if(StrDump!=NULL) free(StrDump);
julmbed 0:85afbf3c9fad 101
julmbed 1:bbd6b84fc908 102 DumpSize=DMP_SZ;
julmbed 1:bbd6b84fc908 103 StrDump=(char *)malloc(DumpSize);
julmbed 1:bbd6b84fc908 104 memset(StrDump,0,DMP_SZ);
julmbed 0:85afbf3c9fad 105
julmbed 1:bbd6b84fc908 106 do {
julmbed 1:bbd6b84fc908 107 switch(VarType) {
julmbed 1:bbd6b84fc908 108 case T_int:
julmbed 1:bbd6b84fc908 109 sprintf(Tmp,"%d,",*(ValInt+ArrayCounter));
julmbed 1:bbd6b84fc908 110 break;
julmbed 1:bbd6b84fc908 111 case T_float:
julmbed 1:bbd6b84fc908 112 sprintf(Tmp,"%f,",*(ValFloat+ArrayCounter));
julmbed 1:bbd6b84fc908 113 break;
julmbed 0:85afbf3c9fad 114 };
julmbed 1:bbd6b84fc908 115 if(DumpCounter+strlen(Tmp) >= DumpSize) {
julmbed 0:85afbf3c9fad 116 char *d;
julmbed 1:bbd6b84fc908 117 DumpSize = DumpCounter+DMP_SZ;
julmbed 1:bbd6b84fc908 118 d=(char *)malloc(DumpCounter+DMP_SZ);
julmbed 0:85afbf3c9fad 119 strcpy(d,StrDump);
julmbed 0:85afbf3c9fad 120 free(StrDump);
julmbed 0:85afbf3c9fad 121 StrDump=d;
julmbed 0:85afbf3c9fad 122 }
julmbed 0:85afbf3c9fad 123 strcat(StrDump+DumpCounter,Tmp);
julmbed 0:85afbf3c9fad 124 DumpCounter+=strlen(Tmp);
julmbed 1:bbd6b84fc908 125 ArrayCounter++;
julmbed 1:bbd6b84fc908 126 } while (ArrayCounter < ArraySize);
julmbed 0:85afbf3c9fad 127
julmbed 1:bbd6b84fc908 128 StrDump[strlen(StrDump)-1]='\0';
julmbed 0:85afbf3c9fad 129
julmbed 0:85afbf3c9fad 130 return StrDump;
julmbed 0:85afbf3c9fad 131
julmbed 0:85afbf3c9fad 132 }
julmbed 0:85afbf3c9fad 133
julmbed 0:85afbf3c9fad 134
julmbed 0:85afbf3c9fad 135
julmbed 0:85afbf3c9fad 136 char *VarItem::GetVarName()
julmbed 0:85afbf3c9fad 137 {
julmbed 0:85afbf3c9fad 138 return VarName;
julmbed 0:85afbf3c9fad 139 }
julmbed 0:85afbf3c9fad 140
julmbed 0:85afbf3c9fad 141