Library to allo USB PTP device to be hosted by the mbed platform
Dependents: class_project_main
Diff: PIMA15740/PIMAPropDescr.h
- Revision:
- 10:fc1cb68fc91e
- Child:
- 11:3b072cf16df8
diff -r 961c3357504d -r fc1cb68fc91e PIMA15740/PIMAPropDescr.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PIMA15740/PIMAPropDescr.h Wed Sep 18 01:48:07 2013 +0000 @@ -0,0 +1,144 @@ +/** +* @file PIMAPropDesc.h +* @brief PIMA Property Description class definition +* @author Dwayne Dilbeck +* @date 9/16/2013 +* +* mbed USBHostPTP Library(PIMA15740 String definition) +* @par Copyright: +* Copyright (c) 2013 Dwayne Dilbeck +* @par License: +* This software is distributed under the terms of the GNU Lesser General Public License +*/ +#include "PIMADTS.h" + +/** +* Class Property Description +* +* The PIMA15740 standard defines +* +*/ +class PIMAPropDesc { +public: + + + + int FillPropDesc(uint8_t *currentPtr) { + devicePropertyCode = *((uint16_t *)currentPtr); + dataType = *((uint16_t *)(currentPtr+sizeof(uint16_t))); + getSet=*((uint8_t *)(currentPtr+2*sizeof(uint16_t))); + switch(dataType) { + case PIMA_DATATYPE_CODE_INT8: + factoryDefault.ptri8 = new DTS<int8_t>; + currentValue.ptri8 = new DTS<int8_t>; + break; + case PIMA_DATATYPE_CODE_UINT8: + factoryDefault.ptru8 = new DTS<uint8_t>; + currentValue.ptru8 = new DTS<uint8_t>; + break; + case PIMA_DATATYPE_CODE_INT16: + factoryDefault.ptri16 = new DTS<int16_t>; + currentValue.ptri16 = new DTS<int16_t>; + break; + case PIMA_DATATYPE_CODE_UINT16: + factoryDefault.ptru16 = new DTS<uint16_t>; + currentValue.ptru16 = new DTS<uint16_t>; + break; + case PIMA_DATATYPE_CODE_INT32: + factoryDefault.ptri32 = new DTS<int32_t>; + currentValue.ptri32 = new DTS<int32_t>; + break; + case PIMA_DATATYPE_CODE_UINT32: + factoryDefault.ptru32 = new DTS<uint32_t>; + currentValue.ptru32 = new DTS<uint32_t>; + break; + case PIMA_DATATYPE_CODE_INT64: + factoryDefault.ptri64 = new DTS<int64_t>; + currentValue.ptri64 = new DTS<int64_t>; + break; + case PIMA_DATATYPE_CODE_UINT64: + factoryDefault.ptru64 = new DTS<uint64_t>; + currentValue.ptru64 = new DTS<uint64_t>; + break; + case PIMA_DATATYPE_CODE_INT128: + break; + case PIMA_DATATYPE_CODE_UINT128: + break; + case PIMA_DATATYPE_CODE_AINT8: + factoryDefault.ptri8 = new PIMAArray<int8_t>; + currentValue.ptri8 = new PIMAArray<int8_t>; + break; + case PIMA_DATATYPE_CODE_AUINT8: + factoryDefault.ptri8 = new PIMAArray<uint8_t> ; + currentValue.ptri8 = new PIMAArray<uint8_t>; + break; + case PIMA_DATATYPE_CODE_AINT16: + factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; + currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; + break; + case PIMA_DATATYPE_CODE_AUINT16: + factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; + currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; + break; + case PIMA_DATATYPE_CODE_AINT32: + factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; + currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; + break; + case PIMA_DATATYPE_CODE_AUINT32: + factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; + currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; + break; + case PIMA_DATATYPE_CODE_AINT64: + factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; + currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; + break; + case PIMA_DATATYPE_CODE_AUINT64: + factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; + currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; + break; + case PIMA_DATATYPE_CODE_AINT128: + break; + case PIMA_DATATYPE_CODE_AUINT128: + break; + case PIMA_DATATYPE_CODE_STR: + factoryDefault.ptri8 = new DTS<PIMAString>; + currentValue.ptri8 = new DTS<PIMAString>; + break; + default: + break; + } + factoryDefault.fill(currentPtr); + currentValue.fill(currentPtr); + //(sizeof(TYPE)*numberOfElements) + + return (sizeof(uint32_t)); //TODO: Finish Fill function. + } + +private: + ///PIMA 15740:2000 Section 13, table 23 + uint16_t devicePropertyCode; + uint16_t dataType; + uint8_t getSet; + typedef union DTSPTR { + DTS<int8_t> *ptri8; + DTS<uint8_t> *ptru8; + DTS<int16_t> *ptri16; + DTS<uint16_t> *ptru16; + DTS<int32_t> *ptri32; + DTS<uint32_t> *ptru32; + DTS<int64_t> *ptri64; + DTS<uint64_t> *ptru64; + } DTSPTR; + DTSPTR factoryDefault; + DTSPTR currentValue; + + uint8_t formFlag; + typedef union { + struct { + DTSPTR minimumValue; + DTSPTR maximumValue; + DTSPTR stepSize; + } rangeForm; + DTSPTR enumerationForm; + } FORMS; + FORMS FORM; +};