Library to allo USB PTP device to be hosted by the mbed platform

Dependents:   class_project_main

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?

UserRevisionLine numberNew 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 };