Library to allo USB PTP device to be hosted by the mbed platform
Dependents: class_project_main
Diff: PIMA15740/PIMAArray.h
- Revision:
- 11:3b072cf16df8
- Parent:
- 10:fc1cb68fc91e
diff -r fc1cb68fc91e -r 3b072cf16df8 PIMA15740/PIMAArray.h --- a/PIMA15740/PIMAArray.h Wed Sep 18 01:48:07 2013 +0000 +++ b/PIMA15740/PIMAArray.h Mon Oct 07 04:45:55 2013 +0000 @@ -51,10 +51,12 @@ * @return The number of bytes used from the buffer to create the PIMA array. */ - int FillArray(uint8_t *currentPtr) { - SetNumberOfElements(*((uint32_t *)currentPtr)); - SetElements((TYPE *)(currentPtr+sizeof(uint32_t))); - return (sizeof(TYPE)*numberOfElements) + sizeof(uint32_t); + unsigned int FillArray(uint8_t *initialPtr) { + uint8_t *currentPtr=initialPtr; + + currentPtr+=SetNumberOfElements(*((uint32_t *)currentPtr)); + currentPtr+=SetElements((uint8_t *)(currentPtr)); + return (currentPtr-initialPtr); } TYPE GetElement(uint32_t index) { @@ -82,21 +84,24 @@ * @param uint8_t The number of elements to create storage space for. * @return none */ - void SetNumberOfElements(uint8_t length) { + unsigned int SetNumberOfElements(uint8_t length) { this->numberOfElements=length; if( elements !=NULL) free(elements); elements = (TYPE *) malloc(sizeof(TYPE)*length); + return sizeof(uint32_t); }; /** * Function to read codes form a uint8t buffer and store them. * @param buffer pointer to a uint8_t buffer */ - void SetElements(uint16_t *buffer){ - if(buffer!=NULL && elements !=NULL) + unsigned int SetElements(uint8_t *buffer){ + TYPE *castPtr = (TYPE *)buffer; + if(castPtr!=NULL && elements !=NULL) for(int i=0;i<this->numberOfElements;i++) - elements[i]=buffer[i]; + elements[i]=castPtr[i]; + return (sizeof(elements[0])*numberOfElements); }; };