Library to allo USB PTP device to be hosted by the mbed platform
Dependents: class_project_main
PIMA15740/PIMAPropDescr.h@10:fc1cb68fc91e, 2013-09-18 (annotated)
- Committer:
- jakowisp
- Date:
- Wed Sep 18 01:48:07 2013 +0000
- Revision:
- 10:fc1cb68fc91e
- Child:
- 11:3b072cf16df8
Adding DST code;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jakowisp | 10:fc1cb68fc91e | 1 | /** |
jakowisp | 10:fc1cb68fc91e | 2 | * @file PIMAPropDesc.h |
jakowisp | 10:fc1cb68fc91e | 3 | * @brief PIMA Property Description class definition |
jakowisp | 10:fc1cb68fc91e | 4 | * @author Dwayne Dilbeck |
jakowisp | 10:fc1cb68fc91e | 5 | * @date 9/16/2013 |
jakowisp | 10:fc1cb68fc91e | 6 | * |
jakowisp | 10:fc1cb68fc91e | 7 | * mbed USBHostPTP Library(PIMA15740 String definition) |
jakowisp | 10:fc1cb68fc91e | 8 | * @par Copyright: |
jakowisp | 10:fc1cb68fc91e | 9 | * Copyright (c) 2013 Dwayne Dilbeck |
jakowisp | 10:fc1cb68fc91e | 10 | * @par License: |
jakowisp | 10:fc1cb68fc91e | 11 | * This software is distributed under the terms of the GNU Lesser General Public License |
jakowisp | 10:fc1cb68fc91e | 12 | */ |
jakowisp | 10:fc1cb68fc91e | 13 | #include "PIMADTS.h" |
jakowisp | 10:fc1cb68fc91e | 14 | |
jakowisp | 10:fc1cb68fc91e | 15 | /** |
jakowisp | 10:fc1cb68fc91e | 16 | * Class Property Description |
jakowisp | 10:fc1cb68fc91e | 17 | * |
jakowisp | 10:fc1cb68fc91e | 18 | * The PIMA15740 standard defines |
jakowisp | 10:fc1cb68fc91e | 19 | * |
jakowisp | 10:fc1cb68fc91e | 20 | */ |
jakowisp | 10:fc1cb68fc91e | 21 | class PIMAPropDesc { |
jakowisp | 10:fc1cb68fc91e | 22 | public: |
jakowisp | 10:fc1cb68fc91e | 23 | |
jakowisp | 10:fc1cb68fc91e | 24 | |
jakowisp | 10:fc1cb68fc91e | 25 | |
jakowisp | 10:fc1cb68fc91e | 26 | int FillPropDesc(uint8_t *currentPtr) { |
jakowisp | 10:fc1cb68fc91e | 27 | devicePropertyCode = *((uint16_t *)currentPtr); |
jakowisp | 10:fc1cb68fc91e | 28 | dataType = *((uint16_t *)(currentPtr+sizeof(uint16_t))); |
jakowisp | 10:fc1cb68fc91e | 29 | getSet=*((uint8_t *)(currentPtr+2*sizeof(uint16_t))); |
jakowisp | 10:fc1cb68fc91e | 30 | switch(dataType) { |
jakowisp | 10:fc1cb68fc91e | 31 | case PIMA_DATATYPE_CODE_INT8: |
jakowisp | 10:fc1cb68fc91e | 32 | factoryDefault.ptri8 = new DTS<int8_t>; |
jakowisp | 10:fc1cb68fc91e | 33 | currentValue.ptri8 = new DTS<int8_t>; |
jakowisp | 10:fc1cb68fc91e | 34 | break; |
jakowisp | 10:fc1cb68fc91e | 35 | case PIMA_DATATYPE_CODE_UINT8: |
jakowisp | 10:fc1cb68fc91e | 36 | factoryDefault.ptru8 = new DTS<uint8_t>; |
jakowisp | 10:fc1cb68fc91e | 37 | currentValue.ptru8 = new DTS<uint8_t>; |
jakowisp | 10:fc1cb68fc91e | 38 | break; |
jakowisp | 10:fc1cb68fc91e | 39 | case PIMA_DATATYPE_CODE_INT16: |
jakowisp | 10:fc1cb68fc91e | 40 | factoryDefault.ptri16 = new DTS<int16_t>; |
jakowisp | 10:fc1cb68fc91e | 41 | currentValue.ptri16 = new DTS<int16_t>; |
jakowisp | 10:fc1cb68fc91e | 42 | break; |
jakowisp | 10:fc1cb68fc91e | 43 | case PIMA_DATATYPE_CODE_UINT16: |
jakowisp | 10:fc1cb68fc91e | 44 | factoryDefault.ptru16 = new DTS<uint16_t>; |
jakowisp | 10:fc1cb68fc91e | 45 | currentValue.ptru16 = new DTS<uint16_t>; |
jakowisp | 10:fc1cb68fc91e | 46 | break; |
jakowisp | 10:fc1cb68fc91e | 47 | case PIMA_DATATYPE_CODE_INT32: |
jakowisp | 10:fc1cb68fc91e | 48 | factoryDefault.ptri32 = new DTS<int32_t>; |
jakowisp | 10:fc1cb68fc91e | 49 | currentValue.ptri32 = new DTS<int32_t>; |
jakowisp | 10:fc1cb68fc91e | 50 | break; |
jakowisp | 10:fc1cb68fc91e | 51 | case PIMA_DATATYPE_CODE_UINT32: |
jakowisp | 10:fc1cb68fc91e | 52 | factoryDefault.ptru32 = new DTS<uint32_t>; |
jakowisp | 10:fc1cb68fc91e | 53 | currentValue.ptru32 = new DTS<uint32_t>; |
jakowisp | 10:fc1cb68fc91e | 54 | break; |
jakowisp | 10:fc1cb68fc91e | 55 | case PIMA_DATATYPE_CODE_INT64: |
jakowisp | 10:fc1cb68fc91e | 56 | factoryDefault.ptri64 = new DTS<int64_t>; |
jakowisp | 10:fc1cb68fc91e | 57 | currentValue.ptri64 = new DTS<int64_t>; |
jakowisp | 10:fc1cb68fc91e | 58 | break; |
jakowisp | 10:fc1cb68fc91e | 59 | case PIMA_DATATYPE_CODE_UINT64: |
jakowisp | 10:fc1cb68fc91e | 60 | factoryDefault.ptru64 = new DTS<uint64_t>; |
jakowisp | 10:fc1cb68fc91e | 61 | currentValue.ptru64 = new DTS<uint64_t>; |
jakowisp | 10:fc1cb68fc91e | 62 | break; |
jakowisp | 10:fc1cb68fc91e | 63 | case PIMA_DATATYPE_CODE_INT128: |
jakowisp | 10:fc1cb68fc91e | 64 | break; |
jakowisp | 10:fc1cb68fc91e | 65 | case PIMA_DATATYPE_CODE_UINT128: |
jakowisp | 10:fc1cb68fc91e | 66 | break; |
jakowisp | 10:fc1cb68fc91e | 67 | case PIMA_DATATYPE_CODE_AINT8: |
jakowisp | 10:fc1cb68fc91e | 68 | factoryDefault.ptri8 = new PIMAArray<int8_t>; |
jakowisp | 10:fc1cb68fc91e | 69 | currentValue.ptri8 = new PIMAArray<int8_t>; |
jakowisp | 10:fc1cb68fc91e | 70 | break; |
jakowisp | 10:fc1cb68fc91e | 71 | case PIMA_DATATYPE_CODE_AUINT8: |
jakowisp | 10:fc1cb68fc91e | 72 | factoryDefault.ptri8 = new PIMAArray<uint8_t> ; |
jakowisp | 10:fc1cb68fc91e | 73 | currentValue.ptri8 = new PIMAArray<uint8_t>; |
jakowisp | 10:fc1cb68fc91e | 74 | break; |
jakowisp | 10:fc1cb68fc91e | 75 | case PIMA_DATATYPE_CODE_AINT16: |
jakowisp | 10:fc1cb68fc91e | 76 | factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 77 | currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 78 | break; |
jakowisp | 10:fc1cb68fc91e | 79 | case PIMA_DATATYPE_CODE_AUINT16: |
jakowisp | 10:fc1cb68fc91e | 80 | factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 81 | currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 82 | break; |
jakowisp | 10:fc1cb68fc91e | 83 | case PIMA_DATATYPE_CODE_AINT32: |
jakowisp | 10:fc1cb68fc91e | 84 | factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 85 | currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 86 | break; |
jakowisp | 10:fc1cb68fc91e | 87 | case PIMA_DATATYPE_CODE_AUINT32: |
jakowisp | 10:fc1cb68fc91e | 88 | factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 89 | currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 90 | break; |
jakowisp | 10:fc1cb68fc91e | 91 | case PIMA_DATATYPE_CODE_AINT64: |
jakowisp | 10:fc1cb68fc91e | 92 | factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 93 | currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 94 | break; |
jakowisp | 10:fc1cb68fc91e | 95 | case PIMA_DATATYPE_CODE_AUINT64: |
jakowisp | 10:fc1cb68fc91e | 96 | factoryDefault.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 97 | currentValue.ptri8 = new DTS<PIMAArray<int8_t> >; |
jakowisp | 10:fc1cb68fc91e | 98 | break; |
jakowisp | 10:fc1cb68fc91e | 99 | case PIMA_DATATYPE_CODE_AINT128: |
jakowisp | 10:fc1cb68fc91e | 100 | break; |
jakowisp | 10:fc1cb68fc91e | 101 | case PIMA_DATATYPE_CODE_AUINT128: |
jakowisp | 10:fc1cb68fc91e | 102 | break; |
jakowisp | 10:fc1cb68fc91e | 103 | case PIMA_DATATYPE_CODE_STR: |
jakowisp | 10:fc1cb68fc91e | 104 | factoryDefault.ptri8 = new DTS<PIMAString>; |
jakowisp | 10:fc1cb68fc91e | 105 | currentValue.ptri8 = new DTS<PIMAString>; |
jakowisp | 10:fc1cb68fc91e | 106 | break; |
jakowisp | 10:fc1cb68fc91e | 107 | default: |
jakowisp | 10:fc1cb68fc91e | 108 | break; |
jakowisp | 10:fc1cb68fc91e | 109 | } |
jakowisp | 10:fc1cb68fc91e | 110 | factoryDefault.fill(currentPtr); |
jakowisp | 10:fc1cb68fc91e | 111 | currentValue.fill(currentPtr); |
jakowisp | 10:fc1cb68fc91e | 112 | //(sizeof(TYPE)*numberOfElements) + |
jakowisp | 10:fc1cb68fc91e | 113 | return (sizeof(uint32_t)); //TODO: Finish Fill function. |
jakowisp | 10:fc1cb68fc91e | 114 | } |
jakowisp | 10:fc1cb68fc91e | 115 | |
jakowisp | 10:fc1cb68fc91e | 116 | private: |
jakowisp | 10:fc1cb68fc91e | 117 | ///PIMA 15740:2000 Section 13, table 23 |
jakowisp | 10:fc1cb68fc91e | 118 | uint16_t devicePropertyCode; |
jakowisp | 10:fc1cb68fc91e | 119 | uint16_t dataType; |
jakowisp | 10:fc1cb68fc91e | 120 | uint8_t getSet; |
jakowisp | 10:fc1cb68fc91e | 121 | typedef union DTSPTR { |
jakowisp | 10:fc1cb68fc91e | 122 | DTS<int8_t> *ptri8; |
jakowisp | 10:fc1cb68fc91e | 123 | DTS<uint8_t> *ptru8; |
jakowisp | 10:fc1cb68fc91e | 124 | DTS<int16_t> *ptri16; |
jakowisp | 10:fc1cb68fc91e | 125 | DTS<uint16_t> *ptru16; |
jakowisp | 10:fc1cb68fc91e | 126 | DTS<int32_t> *ptri32; |
jakowisp | 10:fc1cb68fc91e | 127 | DTS<uint32_t> *ptru32; |
jakowisp | 10:fc1cb68fc91e | 128 | DTS<int64_t> *ptri64; |
jakowisp | 10:fc1cb68fc91e | 129 | DTS<uint64_t> *ptru64; |
jakowisp | 10:fc1cb68fc91e | 130 | } DTSPTR; |
jakowisp | 10:fc1cb68fc91e | 131 | DTSPTR factoryDefault; |
jakowisp | 10:fc1cb68fc91e | 132 | DTSPTR currentValue; |
jakowisp | 10:fc1cb68fc91e | 133 | |
jakowisp | 10:fc1cb68fc91e | 134 | uint8_t formFlag; |
jakowisp | 10:fc1cb68fc91e | 135 | typedef union { |
jakowisp | 10:fc1cb68fc91e | 136 | struct { |
jakowisp | 10:fc1cb68fc91e | 137 | DTSPTR minimumValue; |
jakowisp | 10:fc1cb68fc91e | 138 | DTSPTR maximumValue; |
jakowisp | 10:fc1cb68fc91e | 139 | DTSPTR stepSize; |
jakowisp | 10:fc1cb68fc91e | 140 | } rangeForm; |
jakowisp | 10:fc1cb68fc91e | 141 | DTSPTR enumerationForm; |
jakowisp | 10:fc1cb68fc91e | 142 | } FORMS; |
jakowisp | 10:fc1cb68fc91e | 143 | FORMS FORM; |
jakowisp | 10:fc1cb68fc91e | 144 | }; |