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

Dependents:   class_project_main

Files at this revision

API Documentation at this revision

Comitter:
jakowisp
Date:
Fri Aug 23 23:34:05 2013 +0000
Parent:
2:67753d738eb8
Child:
4:9c6f5867f050
Commit message:
PIMA15740 Sub Folders documented.

Changed in this revision

PIMA15740/PIMA15740_types.h Show annotated file Show diff for this revision Revisions of this file
PIMA15740/PIMAArray.h Show annotated file Show diff for this revision Revisions of this file
PIMA15740/PIMAString.h Show annotated file Show diff for this revision Revisions of this file
PIMA15740/PIMAconst.h Show annotated file Show diff for this revision Revisions of this file
USBHostPTP.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/PIMA15740/PIMA15740_types.h	Fri Aug 23 20:02:44 2013 +0000
+++ b/PIMA15740/PIMA15740_types.h	Fri Aug 23 23:34:05 2013 +0000
@@ -1,21 +1,33 @@
-/* mbed USBHostPTP Library(PIMA15740 definitions)
- * Copyright (c) 2013 Dwayne Dilbeck
- * This software is distributed under the terms of the GNU Lesser General Public License
+/**
+*  @file PIMA15740_types.h
+*  @brief PIMA type definitions
+*  @author Dwayne Dilbeck
+*  @date 8/23/2013
+* 
+* @par Copyright:
+*  Copyright (c) 2013 Dwayne Dilbeck
+* @par License:
+*  This software is distributed under the terms of the GNU Lesser General Public License
+*
+*  mbed USBHostPTP Library(PIMA15740 Constants definition)
  */
  
 #include "PIMAconst.h"
 #include "PIMAArray.h"
 #include "PIMAString.h"
 
-        
+/** @struct PIMAContainer
+ *  PIMA 15740:2000 standard Appendix D.7.1.1   
+*/      
 typedef __packed struct {
-     uint32_t len;
+     uint32_t length;
      uint16_t type;
-     uint16_t opcode;
-     uint32_t TransactionID;
-     uint32_t param[5];
+     uint16_t code;
+     uint32_t transactionID;
+     uint32_t payload[5];
     } PIMAContainer;
-        
+
+/// PIMA 15740:2000 standard 5.5.1 Table 6        
 typedef struct {
     uint16_t            standardVersion;
     uint32_t            vendorExtensionID;
@@ -33,6 +45,7 @@
     PIMAString          serialNumber;
 } DeviceInfoStruct;
 
+/// PIMA 15740:2000 standard 5.5.2 Table 8
 typedef struct {
     uint32_t   storageID;            //0x0
     uint16_t   objectFormat;         //0x4
@@ -49,9 +62,20 @@
     uint16_t   associationType;      //0x2a
     uint32_t   associationDesc;      //0x2c
     uint32_t   sequenceNumber;       //0x30
-    PIMAString filename;           //0x34
+    PIMAString filename;             //0x34
     PIMAString captureDate; 
     PIMAString modificationDate;
     PIMAString keywords;
 } ObjectInfoStruct;
 
+/// PIMA 15740:2000 standard 5.5.3 Table 10
+typedef struct {
+    uint16_t   storageType;
+    uint16_t   fileSystemType;
+    uint16_t   accessCapability;
+    uint64_t   maxCapacity;
+    uint64_t   freeSpaceInBytes;
+    uint32_t   freeSpaceInImages;
+    PIMAString storageDescription;
+    PIMAString volumeLabel;
+} StorageInfoStruct;
--- a/PIMA15740/PIMAArray.h	Fri Aug 23 20:02:44 2013 +0000
+++ b/PIMA15740/PIMAArray.h	Fri Aug 23 23:34:05 2013 +0000
@@ -1,38 +1,71 @@
-/* mbed USBHostPTP Library(PIMA15740 definitions)
- * Copyright (c) 2013 Dwayne Dilbeck
- * This software is distributed under the terms of the GNU Lesser General Public License
- */
-
+/**
+*  @file PIMAArray.h
+*  @brief PIMA Array class definition
+*  @author Dwayne Dilbeck
+*  @date 8/23/2013
+* 
+* mbed USBHostPTP Library(PIMA15740 Array definition)
+* @par Copyright:
+*  Copyright (c) 2013 Dwayne Dilbeck
+* @par License:
+*  This software is distributed under the terms of the GNU Lesser General Public License
+*/
 
 /**
 *  Class PIMA array
 *
-*
-*
+*  The PIMA15740 standard defines an array as an unsigned 32bit number of elements followed by a list
+*   of insinged 16bit codes;
 */
 class PIMAArray {
 public:
   /**
   *   Constructor
-  *  @params: None
+  *  @param None
   *
+  *   Zeros the number of elements and sets codes pointer to NUll
   */
   PIMAArray() {
      numberOfElements=0;
      codes=NULL;
   };
   
+  /**
+  * Destructor
+  *
+  * Frees assigned storage for codes.
+  * @param None
+  */
   ~PIMAArray() {
     if( codes !=NULL)
         free(codes);
   };
 
+  /**
+   *  Create and fill array storage from a supplied buffer pointer
+   *
+   *  @param currentPtr a unit8_t pointer to a buffer location where a PIMAArray should be read
+   *  
+   *  @return The number of bytes used from the buffer to create the PIMA array.
+   */
  int FillArray(uint8_t *currentPtr) {
      SetNumberOfElements(*((uint32_t *)currentPtr));
      SetCodes((uint16_t *)(currentPtr+4));
      return (2*numberOfElements) + 4;
 }
 
+   ///Number of elelments stored in the array
+   uint32_t numberOfElements;
+   ///Pointer to Code storage
+   uint16_t *codes;
+
+private:
+/**
+ * Function to allocate array storage space and set the number of elements
+ *
+ * @param uint8_t The number of elements to create storage space for.
+ * @return none
+ */
  void SetNumberOfElements(uint8_t length) {
      this->numberOfElements=length;
      if( codes !=NULL)
@@ -40,13 +73,16 @@
      codes = (uint16_t *) malloc(sizeof(uint16_t)*length);
  };
  
+ /**
+ * Function to read codes form a uint8t buffer and store them.
+ * @param buffer pointer to a uint8_t buffer
+ */
  void SetCodes(uint16_t *buffer){
      if(buffer!=NULL && codes !=NULL)
        for(int i=0;i<this->numberOfElements;i++)
            codes[i]=buffer[i];
  };
   
-   uint32_t numberOfElements;
-   uint16_t *codes;
 };
 
+
--- a/PIMA15740/PIMAString.h	Fri Aug 23 20:02:44 2013 +0000
+++ b/PIMA15740/PIMAString.h	Fri Aug 23 23:34:05 2013 +0000
@@ -4,15 +4,17 @@
 *  @author Dwayne Dilbeck
 *  @date 8/23/2013
 * 
-* mbed USBHostPTP Library(PIMA15740 definitions)
-* Copyright (c) 2013 Dwayne Dilbeck
-* This software is distributed under the terms of the GNU Lesser General Public License
+* 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
 */
 
 /**
 *  Class PIMA String
 *
-*  The PIMA15740 standard defines a string as an 8bit length followed by a list
+*  The PIMA15740 standard defines a string as an unsigned 8bit length followed by a list
 *   of 16bit unicode characters
 *
 */
@@ -21,6 +23,7 @@
 
   /**
   * Constructor
+  *
   * By default the pointers are set to NULL and length set to ZERO.
   */
   PIMAString() {
@@ -31,7 +34,8 @@
   
   /**
   * Desctructor
-  * Free the Memory allocated for cahracter storage
+  *
+  * Free the Memory allocated for character storage
   */
   ~PIMAString() {
      if( StringChars !=NULL)
@@ -41,10 +45,11 @@
    };
 
   /**
+   *  Create and fill character storage from a supplied buffer pointer
    *
    *  @param currentPtr a unit8_t pointer to a buffer location where a PIMAString shoudl be read
    *  
-   *  @return The number of bytes used to from the buffer to create the PIMA string.
+   *  @return The number of bytes used from the buffer to create the PIMA string.
    */
  int FillString(uint8_t *currentPtr) {
      setLength(*currentPtr);
--- a/PIMA15740/PIMAconst.h	Fri Aug 23 20:02:44 2013 +0000
+++ b/PIMA15740/PIMAconst.h	Fri Aug 23 23:34:05 2013 +0000
@@ -1,25 +1,33 @@
-/* mbed USBHostPTP Library(PIMA15740 definitions)
- * Copyright (c) 2013 Dwayne Dilbeck
- * This software is distributed under the terms of the GNU Lesser General Public License
+/**
+*  @file PIMAconst.h
+*  @brief PIMA constants definitions
+*  @author Dwayne Dilbeck
+*  @date 8/23/2013
+* 
+* @par Copyright:
+*  Copyright (c) 2013 Dwayne Dilbeck
+* @par License:
+*  This software is distributed under the terms of the GNU Lesser General Public License
+*
+* mbed USBHostPTP Library(PIMA15740 Constants definition)
  *
  * Special thanks to the 'Circuits at Home', 
  * Reviewing thier code helped in understanding what needed to be done in my code for the mbed.
+ *
+ * @par Reference
  * Circuits At Home, LTD
  * Web      :  http://www.circuitsathome.com 
  * e-mail   :  support@circuitsathome.com
  */
  
 
-#ifndef __PTPCONST_H__
-#define __PTPCONST_H__
-
-#include <inttypes.h>
+#ifndef __PIMACONST_H__
+#define __PIMACONST_H__
 
 #define PIMA_CONTAINER_HEADER_LENGTH  0xc
 
-//#define PTP_USB_INT_PACKET_LEN  8
-
-/* PIMA container types */
+// PIMA container types
+// PIMA 15740:2000 standard Appendix D.7.1.1 
 #define PIMA_CONTAINER_UNDEFINED         0x0000
 #define PIMA_CONTAINER_COMMAND           0x0001
 #define PIMA_CONTAINER_DATA              0x0002
@@ -27,22 +35,25 @@
 #define PIMA_CONTAINER_EVENT             0x0004
 
 /* Vendor IDs */
-#define PIMA_VENDOR_EASTMAN_KODAK            0x00000001
-#define PIMA_VENDOR_SEIKO_EPSON              0x00000002
-#define PIMA_VENDOR_AGILENT                  0x00000003
-#define PIMA_VENDOR_POLAROID                 0x00000004
-#define PIMA_VENDOR_AGFA_GEVAERT             0x00000005
-#define PIMA_VENDOR_MICROSOFT                0x00000006
-#define PIMA_VENDOR_EQUINOX                  0x00000007
-#define PIMA_VENDOR_VIEWQUEST                0x00000008
-#define PIMA_VENDOR_STMICROELECTRONICS       0x00000009
-#define PIMA_VENDOR_NIKON                    0x0000000A
-#define PIMA_VENDOR_CANON                    0x0000000B
-#define PIMA_VENDOR_FOTONATION               0x0000000C
-#define PIMA_VENDOR_PENTAX                   0x0000000D
-#define PIMA_VENDOR_FUJI                     0x0000000E
+//http://www.imaging.org/ist/resources/standards/files/Final_PTP_Vendor_Extension_Registry.pdf
+#define PTP_VENDOR_EASTMAN_KODAK            0x00000001
+#define PTP_VENDOR_SEIKO_EPSON              0x00000002
+#define PTP_VENDOR_AGILENT                  0x00000003
+#define PTP_VENDOR_POLAROID                 0x00000004
+#define PTP_VENDOR_AGFA_GEVAERT             0x00000005
+#define PTP_VENDOR_MICROSOFT                0x00000006
+#define PTP_VENDOR_EQUINOX                  0x00000007
+#define PTP_VENDOR_VIEWQUEST                0x00000008
+#define PTP_VENDOR_STMICROELECTRONICS       0x00000009
+#define PTP_VENDOR_NIKON                    0x0000000A
+#define PTP_VENDOR_CANON                    0x0000000B
+#define PTP_VENDOR_FOTONATION               0x0000000C
+#define PTP_VENDOR_PENTAX                   0x0000000D
+#define PTP_VENDOR_FUJI                     0x0000000E
+#define PTP_VENDOR_SAMSUNG                  0x0000001A
 
 /* Operation Codes */
+// PIMA 15740:2000 standard 10.3 Table 18
 #define PIMA_OPERATION_CODE_Undefined                    0x1000
 #define PIMA_OPERATION_CODE_GetDeviceInfo                0x1001
 #define PIMA_OPERATION_CODE_OpenSession                  0x1002
@@ -74,49 +85,51 @@
 #define PIMA_OPERATION_CODE_InitiateOpenCapture          0x101C
 
 /* Proprietary vendor extension operations mask */
-#define PIMA_OPERATION_CODE_EXTENSION_MASK               0xF000
+// PIMA 15740:2000 standard 10.3 Table 18
 #define PIMA_OPERATION_CODE_EXTENSION                    0x9000
 
 /* Response Codes */
-#define PIMA_RETURN_CODE_Undefined                    0x2000
-#define PIMA_RETURN_CODE_OK                           0x2001
-#define PIMA_RETURN_CODE_GeneralError                 0x2002
-#define PIMA_RETURN_CODE_SessionNotOpen               0x2003
-#define PIMA_RETURN_CODE_InvalidTransactionID         0x2004
-#define PIMA_RETURN_CODE_OperationNotSupported        0x2005
-#define PIMA_RETURN_CODE_ParameterNotSupported        0x2006
-#define PIMA_RETURN_CODE_IncompleteTransfer           0x2007
-#define PIMA_RETURN_CODE_InvalidStorageId             0x2008
-#define PIMA_RETURN_CODE_InvalidObjectHandle          0x2009
-#define PIMA_RETURN_CODE_DevicePropertyNotSupported   0x200A
-#define PIMA_RETURN_CODE_InvalidObjectFormatCode      0x200B
-#define PIMA_RETURN_CODE_StoreFull                    0x200C
-#define PIMA_RETURN_CODE_ObjectWriteProtected         0x200D
-#define PIMA_RETURN_CODE_StoreReadOnly                0x200E
-#define PIMA_RETURN_CODE_AccessDenied                 0x200F
-#define PIMA_RETURN_CODE_NoThumbnailPresent           0x2010
-#define PIMA_RETURN_CODE_SelfTestFailed               0x2011
-#define PIMA_RETURN_CODE_PartialDeletion              0x2012
-#define PIMA_RETURN_CODE_StoreNotAvailable            0x2013
-#define PIMA_RETURN_CODE_SpecificationByFormatUnsupported         0x2014
-#define PIMA_RETURN_CODE_NoValidObjectInfo            0x2015
-#define PIMA_RETURN_CODE_InvalidCodeFormat            0x2016
-#define PIMA_RETURN_CODE_UnknownVendorCode            0x2017
-#define PIMA_RETURN_CODE_CaptureAlreadyTerminated     0x2018
-#define PIMA_RETURN_CODE_DeviceBusy                   0x2019
-#define PIMA_RETURN_CODE_InvalidParentObject          0x201A
-#define PIMA_RETURN_CODE_InvalidDevicePropFormat      0x201B
-#define PIMA_RETURN_CODE_InvalidDevicePropValue       0x201C
-#define PIMA_RETURN_CODE_InvalidParameter             0x201D
-#define PIMA_RETURN_CODE_SessionAlreadyOpened         0x201E
-#define PIMA_RETURN_CODE_TransactionCanceled          0x201F
-#define PIMA_RETURN_CODE_SpecificationOfDestinationUnsupported    0x2020
+// PIMA 15740:2000 standard 11.2 Table 20
+#define PIMA_RETURN_CODE_Undefined                              0x2000
+#define PIMA_RETURN_CODE_OK                                     0x2001
+#define PIMA_RETURN_CODE_GeneralError                           0x2002
+#define PIMA_RETURN_CODE_SessionNotOpen                         0x2003
+#define PIMA_RETURN_CODE_InvalidTransactionID                   0x2004
+#define PIMA_RETURN_CODE_OperationNotSupported                  0x2005
+#define PIMA_RETURN_CODE_ParameterNotSupported                  0x2006
+#define PIMA_RETURN_CODE_IncompleteTransfer                     0x2007
+#define PIMA_RETURN_CODE_InvalidStorageId                       0x2008
+#define PIMA_RETURN_CODE_InvalidObjectHandle                    0x2009
+#define PIMA_RETURN_CODE_DevicePropertyNotSupported             0x200A
+#define PIMA_RETURN_CODE_InvalidObjectFormatCode                0x200B
+#define PIMA_RETURN_CODE_StoreFull                              0x200C
+#define PIMA_RETURN_CODE_ObjectWriteProtected                   0x200D
+#define PIMA_RETURN_CODE_StoreReadOnly                          0x200E
+#define PIMA_RETURN_CODE_AccessDenied                           0x200F
+#define PIMA_RETURN_CODE_NoThumbnailPresent                     0x2010
+#define PIMA_RETURN_CODE_SelfTestFailed                         0x2011
+#define PIMA_RETURN_CODE_PartialDeletion                        0x2012
+#define PIMA_RETURN_CODE_StoreNotAvailable                      0x2013
+#define PIMA_RETURN_CODE_SpecificationByFormatUnsupported       0x2014
+#define PIMA_RETURN_CODE_NoValidObjectInfo                      0x2015
+#define PIMA_RETURN_CODE_InvalidCodeFormat                      0x2016
+#define PIMA_RETURN_CODE_UnknownVendorCode                      0x2017
+#define PIMA_RETURN_CODE_CaptureAlreadyTerminated               0x2018
+#define PIMA_RETURN_CODE_DeviceBusy                             0x2019
+#define PIMA_RETURN_CODE_InvalidParentObject                    0x201A
+#define PIMA_RETURN_CODE_InvalidDevicePropFormat                0x201B
+#define PIMA_RETURN_CODE_InvalidDevicePropValue                 0x201C
+#define PIMA_RETURN_CODE_InvalidParameter                       0x201D
+#define PIMA_RETURN_CODE_SessionAlreadyOpened                   0x201E
+#define PIMA_RETURN_CODE_TransactionCanceled                    0x201F
+#define PIMA_RETURN_CODE_SpecificationOfDestinationUnsupported  0x2020
 
 /* Proprietary vendor extension response code mask */
-#define PIMA_RETURN_CODE_EXTENSION_MASK               0xF000
+// PIMA 15740:2000 standard 11.2 Table 20
 #define PIMA_RETURN_CODE_EXTENSION                    0xA000
 
-/* PTP Event Codes */
+/* PIMA Event Codes */
+// PIMA 15740:2000 standard 12.4  Table 22
 #define PIMA_EVENT_CODE_Undefined                    0x4000
 #define PIMA_EVENT_CODE_CancelTransaction            0x4001
 #define PIMA_EVENT_CODE_ObjectAdded                  0x4002
@@ -132,16 +145,14 @@
 #define PIMA_EVENT_CODE_StorageInfoChanged           0x400C
 #define PIMA_EVENT_CODE_CaptureComplete              0x400D
 #define PIMA_EVENT_CODE_UnreportedStatus             0x400E
-
-#define PTP_HANDLER_SPECIAL                 0xffffffff
-#define PTP_HANDLER_ROOT                    0x00000000
+// PIMA 15740:2000 standard 12.4 Table 22
+#define PIMA_EVENT_CODE_VENDOR_EXTENSION             0xC000
 
 
 /* PIMA15740 Object Format Codes */
-
-/* ancillary formats */
+// PIMA 15740:2000 standard 6.2 Table 14
 #define PIMA_OBJECT_FORMAT_CODE_Undefined                   0x3000
-#define PIMA_OBJECT_FORMAT_CODE_Association                 0x3001
+#define PIMA_OBJECT_FORMAT_CODE_ASSOCIATION                 0x3001
 #define PIMA_OBJECT_FORMAT_CODE_Script                      0x3002
 #define PIMA_OBJECT_FORMAT_CODE_Executable                  0x3003
 #define PIMA_OBJECT_FORMAT_CODE_Text                        0x3004
@@ -153,8 +164,6 @@
 #define PIMA_OBJECT_FORMAT_CODE_AVI                         0x300A
 #define PIMA_OBJECT_FORMAT_CODE_MPEG                        0x300B
 #define PIMA_OBJECT_FORMAT_CODE_ASF                         0x300C
-#define PIMA_OBJECT_FORMAT_CODE_QT                          0x300D /* guessing */
-
 /* image formats */
 #define PIMA_OBJECT_FORMAT_CODE_EXIF_JPEG                   0x3801
 #define PIMA_OBJECT_FORMAT_CODE_TIFF_EP                     0x3802
@@ -172,105 +181,119 @@
 #define PIMA_OBJECT_FORMAT_CODE_TIFF_IT                     0x380E
 #define PIMA_OBJECT_FORMAT_CODE_JP2                         0x380F
 #define PIMA_OBJECT_FORMAT_CODE_JPX                         0x3810
-
-/* PTP Association Types */
-#define PTP_AT_Undefined                    0x0000
-#define PTP_AT_GenericFolder                0x0001
-#define PTP_AT_Album                        0x0002
-#define PTP_AT_TimeSequence                 0x0003
-#define PTP_AT_HorizontalPanoramic          0x0004
-#define PTP_AT_VerticalPanoramic            0x0005
-#define PTP_AT_2DPanoramic                  0x0006
-#define PTP_AT_AncillaryData                0x0007
+// PIMA 15740:2000 standard 6.2 Table 14
+#define PIMA_OBJECT_FORMAT_CODE_VENDOR_EXTENSION            0xB000
 
 
-/* PTP Storage Types */
-#define PTP_ST_Undefined                    0x0000
-#define PTP_ST_FixedROM                     0x0001
-#define PTP_ST_RemovableROM                 0x0002
-#define PTP_ST_FixedRAM                     0x0003
-#define PTP_ST_RemovableRAM                 0x0004
+/* PIMA ASSOCIATION Types */
+// PIMA 15740:2000 standard 6.4.1 Table 15
+#define PIMA_ASSOCIATION_TYPE_Undefined                    0x0000
+#define PIMA_ASSOCIATION_TYPE_GenericFolder                0x0001
+#define PIMA_ASSOCIATION_TYPE_Album                        0x0002
+#define PIMA_ASSOCIATION_TYPE_TimeSequence                 0x0003
+#define PIMA_ASSOCIATION_TYPE_HorizontalPanoramic          0x0004
+#define PIMA_ASSOCIATION_TYPE_VerticalPanoramic            0x0005
+#define PIMA_ASSOCIATION_TYPE_2DPanoramic                  0x0006
+#define PIMA_ASSOCIATION_TYPE_AncillaryData                0x0007
+// PIMA 15740:2000 standard 6.4.1 Table 15
+#define PIMA_ASSOCIATION_TYPE_VENDOR_EXTENSION            0xF000
 
-/* PTP FilesystemType Values */
-#define PTP_FST_Undefined                   0x0000
-#define PTP_FST_GenericFlat                 0x0001
-#define PTP_FST_GenericHierarchical         0x0002
-#define PTP_FST_DCF                         0x0003
+/* PIMA Storage Types */
+// PIMA 15740:2000 standard 5.5.3 Table 11 
+#define PIMA_STORAGE_TYPE_Undefined                    0x0000
+#define PIMA_STORAGE_TYPE_FixedROM                     0x0001
+#define PIMA_STORAGE_TYPE_RemovableROM                 0x0002
+#define PIMA_STORAGE_TYPE_FixedRAM                     0x0003
+#define PIMA_STORAGE_TYPE_RemovableRAM                 0x0004
 
-/* PTP StorageInfo AccessCapability Values */
-#define PTP_AC_ReadWrite                        0x0000
-#define PTP_AC_ReadOnly                         0x0001
-#define PTP_AC_ReadOnly_with_Object_Deletion    0x0002
+/* PIMA FilesystemType Values */
+// PIMA 15740:2000 standard 5.5.3 Table 12
+#define PIMA_FILESYSTEM_TYPE_Undefined                   0x0000
+#define PIMA_FILESYSTEM_TYPE_GenericFlat                 0x0001
+#define PIMA_FILESYSTEM_TYPE_GenericHierarchical         0x0002
+#define PIMA_FILESYSTEM_TYPE_DCF                         0x0003
+// PIMA 15740:2000 standard 5.5.3 Table 12
+#define PIMA_VENDOR_Defined                              0xF000
+
+/* PIMA StorageInfo AccessCapability Values */
+// PIMA 15740:2000 standard 5.5.3 Table 13
+#define PIMA_ACCESS_CAPABILITY_ReadWrite                        0x0000
+#define PIMA_ACCESS_CAPABILITY_ReadOnl_without_Object_Deletion  0x0001
+#define PIMA_ACCESS_CAPABILITY_ReadOnly_with_Object_Deletion    0x0002
 
 /* DataType Codes */
-#define PTP_DTC_UNDEF                       0x0000
-#define PTP_DTC_INT8                        0x0001
-#define PTP_DTC_UINT8                       0x0002
-#define PTP_DTC_INT16                       0x0003
-#define PTP_DTC_UINT16                      0x0004
-#define PTP_DTC_INT32                       0x0005
-#define PTP_DTC_UINT32                      0x0006
-#define PTP_DTC_INT64                       0x0007
-#define PTP_DTC_UINT64                      0x0008
-#define PTP_DTC_INT128                      0x0009
-#define PTP_DTC_UINT128                     0x000A
-#define PTP_DTC_AINT8                       0x4001
-#define PTP_DTC_AUINT8                      0x4002
-#define PTP_DTC_AINT16                      0x4003
-#define PTP_DTC_AUINT16                     0x4004
-#define PTP_DTC_AINT32                      0x4005
-#define PTP_DTC_AUINT32                     0x4006
-#define PTP_DTC_AINT64                      0x4007
-#define PTP_DTC_AUINT64                     0x4008
-#define PTP_DTC_AINT128                     0x4009
-#define PTP_DTC_AUINT128                    0x400A
-#define PTP_DTC_STR                         0xFFFF
+// PIMA 15740:2000 standard 5.3 Table 3
+#define PIMA_DATATYPE_CODE_UNDEF                       0x0000
+#define PIMA_DATATYPE_CODE_INT8                        0x0001
+#define PIMA_DATATYPE_CODE_UINT8                       0x0002
+#define PIMA_DATATYPE_CODE_INT16                       0x0003
+#define PIMA_DATATYPE_CODE_UINT16                      0x0004
+#define PIMA_DATATYPE_CODE_INT32                       0x0005
+#define PIMA_DATATYPE_CODE_UINT32                      0x0006
+#define PIMA_DATATYPE_CODE_INT64                       0x0007
+#define PIMA_DATATYPE_CODE_UINT64                      0x0008
+#define PIMA_DATATYPE_CODE_INT128                      0x0009
+#define PIMA_DATATYPE_CODE_UINT128                     0x000A
+#define PIMA_DATATYPE_CODE_AINT8                       0x4001
+#define PIMA_DATATYPE_CODE_AUINT8                      0x4002
+#define PIMA_DATATYPE_CODE_AINT16                      0x4003
+#define PIMA_DATATYPE_CODE_AUINT16                     0x4004
+#define PIMA_DATATYPE_CODE_AINT32                      0x4005
+#define PIMA_DATATYPE_CODE_AUINT32                     0x4006
+#define PIMA_DATATYPE_CODE_AINT64                      0x4007
+#define PIMA_DATATYPE_CODE_AUINT64                     0x4008
+#define PIMA_DATATYPE_CODE_AINT128                     0x4009
+#define PIMA_DATATYPE_CODE_AUINT128                    0x400A
+#define PIMA_DATATYPE_CODE_STR                         0xFFFF
 
 /* Device Properties Codes */
-#define PTP_DPC_Undefined                   0x5000
-#define PTP_DPC_BatteryLevel                0x5001
-#define PTP_DPC_FunctionalMode              0x5002
-#define PTP_DPC_ImageSize                   0x5003
-#define PTP_DPC_CompressionSetting          0x5004
-#define PTP_DPC_WhiteBalance                0x5005
-#define PTP_DPC_RGBGain                     0x5006
-#define PTP_DPC_FNumber                     0x5007
-#define PTP_DPC_FocalLength                 0x5008
-#define PTP_DPC_FocusDistance               0x5009
-#define PTP_DPC_FocusMode                   0x500A
-#define PTP_DPC_ExposureMeteringMode        0x500B
-#define PTP_DPC_FlashMode                   0x500C
-#define PTP_DPC_ExposureTime                0x500D
-#define PTP_DPC_ExposureProgramMode         0x500E
-#define PTP_DPC_ExposureIndex               0x500F
-#define PTP_DPC_ExposureBiasCompensation    0x5010
-#define PTP_DPC_DateTime                    0x5011
-#define PTP_DPC_CaptureDelay                0x5012
-#define PTP_DPC_StillCaptureMode            0x5013
-#define PTP_DPC_Contrast                    0x5014
-#define PTP_DPC_Sharpness                   0x5015
-#define PTP_DPC_DigitalZoom                 0x5016
-#define PTP_DPC_EffectMode                  0x5017
-#define PTP_DPC_BurstNumber                 0x5018
-#define PTP_DPC_BurstInterval               0x5019
-#define PTP_DPC_TimelapseNumber             0x501A
-#define PTP_DPC_TimelapseInterval           0x501B
-#define PTP_DPC_FocusMeteringMode           0x501C
-#define PTP_DPC_UploadURL                   0x501D
-#define PTP_DPC_Artist                      0x501E
-#define PTP_DPC_CopyrightInfo               0x501F
+// PIMA 15740:2000 standard 13.3.5 Table 26
+#define PIMA_DEVICE_PROPERTY_CODE_Undefined                   0x5000
+#define PIMA_DEVICE_PROPERTY_CODE_BatteryLevel                0x5001
+#define PIMA_DEVICE_PROPERTY_CODE_FunctionalMode              0x5002
+#define PIMA_DEVICE_PROPERTY_CODE_ImageSize                   0x5003
+#define PIMA_DEVICE_PROPERTY_CODE_CompressionSetting          0x5004
+#define PIMA_DEVICE_PROPERTY_CODE_WhiteBalance                0x5005
+#define PIMA_DEVICE_PROPERTY_CODE_RGBGain                     0x5006
+#define PIMA_DEVICE_PROPERTY_CODE_FNumber                     0x5007
+#define PIMA_DEVICE_PROPERTY_CODE_FocalLength                 0x5008
+#define PIMA_DEVICE_PROPERTY_CODE_FocusDistance               0x5009
+#define PIMA_DEVICE_PROPERTY_CODE_FocusMode                   0x500A
+#define PIMA_DEVICE_PROPERTY_CODE_ExposureMeteringMode        0x500B
+#define PIMA_DEVICE_PROPERTY_CODE_FlashMode                   0x500C
+#define PIMA_DEVICE_PROPERTY_CODE_ExposureTime                0x500D
+#define PIMA_DEVICE_PROPERTY_CODE_ExposureProgramMode         0x500E
+#define PIMA_DEVICE_PROPERTY_CODE_ExposureIndex               0x500F
+#define PIMA_DEVICE_PROPERTY_CODE_ExposureBiasCompensation    0x5010
+#define PIMA_DEVICE_PROPERTY_CODE_DateTime                    0x5011
+#define PIMA_DEVICE_PROPERTY_CODE_CaptureDelay                0x5012
+#define PIMA_DEVICE_PROPERTY_CODE_StillCaptureMode            0x5013
+#define PIMA_DEVICE_PROPERTY_CODE_Contrast                    0x5014
+#define PIMA_DEVICE_PROPERTY_CODE_Sharpness                   0x5015
+#define PIMA_DEVICE_PROPERTY_CODE_DigitalZoom                 0x5016
+#define PIMA_DEVICE_PROPERTY_CODE_EffectMode                  0x5017
+#define PIMA_DEVICE_PROPERTY_CODE_BurstNumber                 0x5018
+#define PIMA_DEVICE_PROPERTY_CODE_BurstInterval               0x5019
+#define PIMA_DEVICE_PROPERTY_CODE_TimelapseNumber             0x501A
+#define PIMA_DEVICE_PROPERTY_CODE_TimelapseInterval           0x501B
+#define PIMA_DEVICE_PROPERTY_CODE_FocusMeteringMode           0x501C
+#define PIMA_DEVICE_PROPERTY_CODE_UploadURL                   0x501D
+#define PIMA_DEVICE_PROPERTY_CODE_Artist                      0x501E
+#define PIMA_DEVICE_PROPERTY_CODE_CopyrightInfo               0x501F
 
 /* Proprietary vendor extension device property mask */
-#define PTP_DPC_EXTENSION_MASK              0xF000
-#define PTP_DPC_EXTENSION                   0xD000
+// PIMA 15740:2000 standard 13.3.5 Table 26
+#define PIMA_DEVICE_PROPERTY_CODE_EXTENSION                   0xD000
 
 /* Device Property Form Flag */
-#define PTP_DPFF_None                       0x00
-#define PTP_DPFF_Range                      0x01
-#define PTP_DPFF_Enumeration                0x02
+// PIMA 15740:2000 standard 13.3.3 Table 23
+#define PIMA_DEVICE_PROPERTY_FORM_FLAG_None                       0x00
+#define PIMA_DEVICE_PROPERTY_FORM_FLAG_Range                      0x01
+#define PIMA_DEVICE_PROPERTY_FORM_FLAG_Enumeration                0x02
 
 /* Device Property GetSet type */
-#define PTP_DPGS_Get                        0x00
-#define PTP_DPGS_GetSet                     0x01
+// PIMA 15740:2000 standard 13.3.3 Table 23
+#define PIMA_DEVICE_PROPERTY_GETSET_Get                        0x00
+#define PIMA_DEVICE_PROPERTY_GETSET_GetSet                     0x01
 
-#endif //__PTPCONST_H__ 
+#endif //__PIMACONST_H__ 
--- a/USBHostPTP.cpp	Fri Aug 23 20:02:44 2013 +0000
+++ b/USBHostPTP.cpp	Fri Aug 23 23:34:05 2013 +0000
@@ -230,20 +230,20 @@
   if(IsCommandSupported(operationCode)==false)
        return PIMA_RETURN_CODE_OperationNotSupported;
        
-  commandContainer.len           = PIMA_CONTAINER_HEADER_LENGTH + operationFlags->opParams*4;
+  commandContainer.length        = PIMA_CONTAINER_HEADER_LENGTH + operationFlags->opParams*4;
   responseLength                 = PIMA_CONTAINER_HEADER_LENGTH + operationFlags->rsParams*4;  
-  responseContainer.len          = responseLength;
-  commandContainer.opcode        = operationCode;
-  commandContainer.TransactionID = transactionCnt++;
+  responseContainer.length          = responseLength;
+  commandContainer.code        = operationCode;
+  commandContainer.transactionID = transactionCnt++;
   for (i=0; i<operationFlags->opParams; i++)
-    commandContainer.param[i]=parameters[i];
+    commandContainer.payload[i]=parameters[i];
     
   #ifdef USDBPTPDEBUG
       printf("PTPCommandContainer:\r\n");
-      DumpBuffer((uint8_t *)&commandContainer,commandContainer.len);
+      DumpBuffer((uint8_t *)&commandContainer,commandContainer.length);
   #endif
   
-  transferResult = host->bulkWrite(pointerToDevice, bulk_out,(uint8_t *)&commandContainer, commandContainer.len);
+  transferResult = host->bulkWrite(pointerToDevice, bulk_out,(uint8_t *)&commandContainer, commandContainer.length);
   if (checkResult(transferResult, bulk_out))
        return PIMA_RETURN_CODE_IncompleteTransfer;
   #ifdef USDBPTPDEBUG
@@ -269,7 +269,7 @@
               #endif
               firstDataBlockReceived = false;
               pointerToUint8tData    = buffer + PIMA_CONTAINER_HEADER_LENGTH;
-              bytesRemaining         = dataContainer.len - PIMA_CONTAINER_HEADER_LENGTH;
+              bytesRemaining         = dataContainer.length - PIMA_CONTAINER_HEADER_LENGTH;
               this->totalDataToTransfer = bytesRemaining;
               if(dataContainer.type==PIMA_CONTAINER_DATA)
                   bytesReceived -= PIMA_CONTAINER_HEADER_LENGTH;
@@ -310,7 +310,7 @@
                       pointerToUint8tData[i]=buffer[bytesRemaining+i];
                    }
                    
-                   return responseContainer.opcode;
+                   return responseContainer.code;
                } else {
                   
                    return PIMA_RETURN_CODE_IncompleteTransfer; 
@@ -342,7 +342,7 @@
   }
   #endif
   
-  return responseContainer.opcode;
+  return responseContainer.code;
 }
 
 
@@ -413,7 +413,7 @@
     params[2] = (uint32_t)assoc;
 
     if ( (ptp_error = Transaction(PIMA_OPERATION_CODE_GetNumObjects, &flags, params)) == PIMA_RETURN_CODE_OK)
-        *retval = responseContainer.param[0];
+        *retval = responseContainer.payload[0];
 
     return ptp_error;
 }
@@ -478,7 +478,7 @@
     params[2] = parent;
 
     if ( (ptp_error = Transaction(PIMA_OPERATION_CODE_CopyObject, &flags, params)) == PIMA_RETURN_CODE_OK)
-        *new_handle = responseContainer.param[0];
+        *new_handle = responseContainer.payload[0];
 
     return ptp_error;
 }