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

Dependents:   class_project_main

PIMA15740/PIMAPropDescr.h

Committer:
jakowisp
Date:
2013-09-18
Revision:
10:fc1cb68fc91e
Child:
11:3b072cf16df8

File content as of revision 10:fc1cb68fc91e:

/**
*  @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;     
};