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.
VarItems.cpp@2:a59207652720, 2014-08-25 (annotated)
- 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?
User | Revision | Line number | New 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 |