Library to allo USB PTP device to be hosted by the mbed platform
Dependents: class_project_main
PIMA15740/PIMAString.h@0:98cf19bcd828, 2013-08-23 (annotated)
- Committer:
- jakowisp
- Date:
- Fri Aug 23 00:52:52 2013 +0000
- Revision:
- 0:98cf19bcd828
- Child:
- 1:71c0e9dc153d
Fix for a buffer overrun and refactored the Tranactoion code.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jakowisp | 0:98cf19bcd828 | 1 | |
jakowisp | 0:98cf19bcd828 | 2 | #include "mallocdebug.h" |
jakowisp | 0:98cf19bcd828 | 3 | |
jakowisp | 0:98cf19bcd828 | 4 | class PIMAString { |
jakowisp | 0:98cf19bcd828 | 5 | public: |
jakowisp | 0:98cf19bcd828 | 6 | |
jakowisp | 0:98cf19bcd828 | 7 | PIMAString() { |
jakowisp | 0:98cf19bcd828 | 8 | length=0; |
jakowisp | 0:98cf19bcd828 | 9 | StringChars=NULL; |
jakowisp | 0:98cf19bcd828 | 10 | vals=NULL; |
jakowisp | 0:98cf19bcd828 | 11 | }; |
jakowisp | 0:98cf19bcd828 | 12 | |
jakowisp | 0:98cf19bcd828 | 13 | ~PIMAString() { |
jakowisp | 0:98cf19bcd828 | 14 | if( StringChars !=NULL) |
jakowisp | 0:98cf19bcd828 | 15 | free(StringChars); |
jakowisp | 0:98cf19bcd828 | 16 | if(vals!=NULL) |
jakowisp | 0:98cf19bcd828 | 17 | free(vals); |
jakowisp | 0:98cf19bcd828 | 18 | }; |
jakowisp | 0:98cf19bcd828 | 19 | |
jakowisp | 0:98cf19bcd828 | 20 | int FillString(uint8_t *currentPtr) { |
jakowisp | 0:98cf19bcd828 | 21 | setLength(*currentPtr); |
jakowisp | 0:98cf19bcd828 | 22 | setStringChars((uint16_t *)(currentPtr+1)); |
jakowisp | 0:98cf19bcd828 | 23 | return 2*length +1; |
jakowisp | 0:98cf19bcd828 | 24 | }; |
jakowisp | 0:98cf19bcd828 | 25 | |
jakowisp | 0:98cf19bcd828 | 26 | |
jakowisp | 0:98cf19bcd828 | 27 | char * getString() { |
jakowisp | 0:98cf19bcd828 | 28 | if(vals!=NULL) |
jakowisp | 0:98cf19bcd828 | 29 | free(vals); |
jakowisp | 0:98cf19bcd828 | 30 | vals=(char *) malloc(sizeof(char)*(this->length+1)); |
jakowisp | 0:98cf19bcd828 | 31 | for(int i=0;i<this->length;i++) |
jakowisp | 0:98cf19bcd828 | 32 | vals[i]=StringChars[i]; //NOTE: Truncates the uint16_t value. |
jakowisp | 0:98cf19bcd828 | 33 | vals[length]='\0'; |
jakowisp | 0:98cf19bcd828 | 34 | return vals; |
jakowisp | 0:98cf19bcd828 | 35 | } |
jakowisp | 0:98cf19bcd828 | 36 | |
jakowisp | 0:98cf19bcd828 | 37 | uint8_t getLength() { |
jakowisp | 0:98cf19bcd828 | 38 | return this->length; |
jakowisp | 0:98cf19bcd828 | 39 | } |
jakowisp | 0:98cf19bcd828 | 40 | |
jakowisp | 0:98cf19bcd828 | 41 | private: |
jakowisp | 0:98cf19bcd828 | 42 | void setLength(uint8_t length) { |
jakowisp | 0:98cf19bcd828 | 43 | if(length > this->length) { |
jakowisp | 0:98cf19bcd828 | 44 | if( StringChars !=NULL) |
jakowisp | 0:98cf19bcd828 | 45 | free(StringChars); |
jakowisp | 0:98cf19bcd828 | 46 | StringChars = (uint16_t *) malloc(sizeof(uint16_t)*length); |
jakowisp | 0:98cf19bcd828 | 47 | } |
jakowisp | 0:98cf19bcd828 | 48 | this->length=length; |
jakowisp | 0:98cf19bcd828 | 49 | |
jakowisp | 0:98cf19bcd828 | 50 | }; |
jakowisp | 0:98cf19bcd828 | 51 | |
jakowisp | 0:98cf19bcd828 | 52 | void setStringChars(uint16_t *buffer){ |
jakowisp | 0:98cf19bcd828 | 53 | if(buffer!=NULL && StringChars !=NULL) |
jakowisp | 0:98cf19bcd828 | 54 | for(int i=0;i<this->length;i++) |
jakowisp | 0:98cf19bcd828 | 55 | StringChars[i]=buffer[i]; |
jakowisp | 0:98cf19bcd828 | 56 | }; |
jakowisp | 0:98cf19bcd828 | 57 | |
jakowisp | 0:98cf19bcd828 | 58 | |
jakowisp | 0:98cf19bcd828 | 59 | uint8_t length; |
jakowisp | 0:98cf19bcd828 | 60 | uint16_t *StringChars; |
jakowisp | 0:98cf19bcd828 | 61 | char *vals; |
jakowisp | 0:98cf19bcd828 | 62 | |
jakowisp | 0:98cf19bcd828 | 63 | }; |