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

Dependents:   class_project_main

Revision:
1:71c0e9dc153d
Parent:
0:98cf19bcd828
Child:
3:1fcb46ab18df
--- a/PIMA15740/PIMAconst.h	Fri Aug 23 00:52:52 2013 +0000
+++ b/PIMA15740/PIMAconst.h	Fri Aug 23 19:34:59 2013 +0000
@@ -1,191 +1,177 @@
-/* Copyright (C) 2010-2011 Circuits At Home, LTD. All rights reserved.
+/* mbed USBHostPTP Library(PIMA15740 definitions)
+ * Copyright (c) 2013 Dwayne Dilbeck
+ * This software is distributed under the terms of the GNU Lesser General Public License
+ *
+ * Special thanks to the 'Circuits at Home', 
+ * Reviewing thier code helped in understanding what needed to be done in my code for the mbed.
+ * Circuits At Home, LTD
+ * Web      :  http://www.circuitsathome.com 
+ * e-mail   :  support@circuitsathome.com
+ */
+ 
 
-This software may be distributed and modified under the terms of the GNU
-General Public License version 2 (GPL2) as published by the Free Software
-Foundation and appearing in the file GPL2.TXT included in the packaging of
-this file. Please note that GPL2 Section 2[b] requires that all works based
-on this software must also be made publicly available under the terms of
-the GPL2 ("Copyleft").
-
-Contact information
--------------------
-
-Circuits At Home, LTD
-Web      :  http://www.circuitsathome.com
-e-mail   :  support@circuitsathome.com
-*/
 #ifndef __PTPCONST_H__
 #define __PTPCONST_H__
 
 #include <inttypes.h>
 
-/* PTP USB Bulk-Pipe container */
-/* USB bulk max max packet length for full speed endpoints */
-//#define PTP_USB_BULK_FS_MAX_PACKET_LEN                      64
-//#define PTP_USB_BULK_HDR_LEN                                (2*sizeof(uint32_t)+2*sizeof(uint16_t))
-//#define PTP_USB_BULK_PAYLOAD_LEN                            (PTP_USB_BULK_FS_MAX_PACKET_LEN-PTP_USB_BULK_HDR_LEN)
-//#define PTP_USB_BULK_REQ_LEN                                (PTP_USB_BULK_HDR_LEN+5*sizeof(uint32_t))
+#define PIMA_CONTAINER_HEADER_LENGTH  0xc
 
-#define PIMAContainerHeaderLength  0xc
+//#define PTP_USB_INT_PACKET_LEN  8
 
-
-#define PTP_USB_INT_PACKET_LEN  8
-
-/* USB container types */
-#define PTP_USB_CONTAINER_UNDEFINED         0x0000
-#define PTP_USB_CONTAINER_COMMAND           0x0001
-#define PTP_USB_CONTAINER_DATA              0x0002
-#define PTP_USB_CONTAINER_RESPONSE          0x0003
-#define PTP_USB_CONTAINER_EVENT             0x0004
+/* PIMA container types */
+#define PIMA_CONTAINER_UNDEFINED         0x0000
+#define PIMA_CONTAINER_COMMAND           0x0001
+#define PIMA_CONTAINER_DATA              0x0002
+#define PIMA_CONTAINER_RESPONSE          0x0003
+#define PIMA_CONTAINER_EVENT             0x0004
 
 /* Vendor IDs */
-#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 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
 
 /* Operation Codes */
-#define PTP_OC_Undefined                    0x1000
-#define PTP_OC_GetDeviceInfo                0x1001
-#define PTP_OC_OpenSession                  0x1002
-#define PTP_OC_CloseSession                 0x1003
-#define PTP_OC_GetStorageIDs                0x1004
-#define PTP_OC_GetStorageInfo               0x1005
-#define PTP_OC_GetNumObjects                0x1006
-#define PTP_OC_GetObjectHandles             0x1007
-#define PTP_OC_GetObjectInfo                0x1008
-#define PTP_OC_GetObject                    0x1009
-#define PTP_OC_GetThumb                     0x100A
-#define PTP_OC_DeleteObject                 0x100B
-#define PTP_OC_SendObjectInfo               0x100C
-#define PTP_OC_SendObject                   0x100D
-#define PTP_OC_InitiateCapture              0x100E
-#define PTP_OC_FormatStore                  0x100F
-#define PTP_OC_ResetDevice                  0x1010
-#define PTP_OC_SelfTest                     0x1011
-#define PTP_OC_SetObjectProtection          0x1012
-#define PTP_OC_PowerDown                    0x1013
-#define PTP_OC_GetDevicePropDesc            0x1014
-#define PTP_OC_GetDevicePropValue           0x1015
-#define PTP_OC_SetDevicePropValue           0x1016
-#define PTP_OC_ResetDevicePropValue         0x1017
-#define PTP_OC_TerminateOpenCapture         0x1018
-#define PTP_OC_MoveObject                   0x1019
-#define PTP_OC_CopyObject                   0x101A
-#define PTP_OC_GetPartialObject             0x101B
-#define PTP_OC_InitiateOpenCapture          0x101C
+#define PIMA_OPERATION_CODE_Undefined                    0x1000
+#define PIMA_OPERATION_CODE_GetDeviceInfo                0x1001
+#define PIMA_OPERATION_CODE_OpenSession                  0x1002
+#define PIMA_OPERATION_CODE_CloseSession                 0x1003
+#define PIMA_OPERATION_CODE_GetStorageIDs                0x1004
+#define PIMA_OPERATION_CODE_GetStorageInfo               0x1005
+#define PIMA_OPERATION_CODE_GetNumObjects                0x1006
+#define PIMA_OPERATION_CODE_GetObjectHandles             0x1007
+#define PIMA_OPERATION_CODE_GetObjectInfo                0x1008
+#define PIMA_OPERATION_CODE_GetObject                    0x1009
+#define PIMA_OPERATION_CODE_GetThumb                     0x100A
+#define PIMA_OPERATION_CODE_DeleteObject                 0x100B
+#define PIMA_OPERATION_CODE_SendObjectInfo               0x100C
+#define PIMA_OPERATION_CODE_SendObject                   0x100D
+#define PIMA_OPERATION_CODE_InitiateCapture              0x100E
+#define PIMA_OPERATION_CODE_FormatStore                  0x100F
+#define PIMA_OPERATION_CODE_ResetDevice                  0x1010
+#define PIMA_OPERATION_CODE_SelfTest                     0x1011
+#define PIMA_OPERATION_CODE_SetObjectProtection          0x1012
+#define PIMA_OPERATION_CODE_PowerDown                    0x1013
+#define PIMA_OPERATION_CODE_GetDevicePropDesc            0x1014
+#define PIMA_OPERATION_CODE_GetDevicePropValue           0x1015
+#define PIMA_OPERATION_CODE_SetDevicePropValue           0x1016
+#define PIMA_OPERATION_CODE_ResetDevicePropValue         0x1017
+#define PIMA_OPERATION_CODE_TerminateOpenCapture         0x1018
+#define PIMA_OPERATION_CODE_MoveObject                   0x1019
+#define PIMA_OPERATION_CODE_CopyObject                   0x101A
+#define PIMA_OPERATION_CODE_GetPartialObject             0x101B
+#define PIMA_OPERATION_CODE_InitiateOpenCapture          0x101C
 
 /* Proprietary vendor extension operations mask */
-#define PTP_OC_EXTENSION_MASK               0xF000
-#define PTP_OC_EXTENSION                    0x9000
+#define PIMA_OPERATION_CODE_EXTENSION_MASK               0xF000
+#define PIMA_OPERATION_CODE_EXTENSION                    0x9000
 
 /* Response Codes */
-#define PIMAReturnCodeUndefined                    0x2000
-#define PIMAReturnCodeOK                           0x2001
-#define PIMAReturnCodeGeneralError                 0x2002
-#define PIMAReturnCodeSessionNotOpen               0x2003
-#define PIMAReturnCodeInvalidTransactionID         0x2004
-#define PIMAReturnCodeOperationNotSupported        0x2005
-#define PIMAReturnCodeParameterNotSupported        0x2006
-#define PIMAReturnCodeIncompleteTransfer           0x2007
-#define PIMAReturnCodeInvalidStorageId             0x2008
-#define PIMAReturnCodeInvalidObjectHandle          0x2009
-#define PIMAReturnCodeDevicePropertyNotSupported   0x200A
-#define PIMAReturnCodeInvalidObjectFormatCode      0x200B
-#define PIMAReturnCodeStoreFull                    0x200C
-#define PIMAReturnCodeObjectWriteProtected         0x200D
-#define PIMAReturnCodeStoreReadOnly                0x200E
-#define PIMAReturnCodeAccessDenied                 0x200F
-#define PIMAReturnCodeNoThumbnailPresent           0x2010
-#define PIMAReturnCodeSelfTestFailed               0x2011
-#define PIMAReturnCodePartialDeletion              0x2012
-#define PIMAReturnCodeStoreNotAvailable            0x2013
-#define PIMAReturnCodeSpecificationByFormatUnsupported         0x2014
-#define PIMAReturnCodeNoValidObjectInfo            0x2015
-#define PIMAReturnCodeInvalidCodeFormat            0x2016
-#define PIMAReturnCodeUnknownVendorCode            0x2017
-#define PIMAReturnCodeCaptureAlreadyTerminated     0x2018
-#define PIMAReturnCodeDeviceBusy                   0x2019
-#define PIMAReturnCodeInvalidParentObject          0x201A
-#define PIMAReturnCodeInvalidDevicePropFormat      0x201B
-#define PIMAReturnCodeInvalidDevicePropValue       0x201C
-#define PIMAReturnCodeInvalidParameter             0x201D
-#define PIMAReturnCodeSessionAlreadyOpened         0x201E
-#define PIMAReturnCodeTransactionCanceled          0x201F
-#define PIMAReturnCodeSpecificationOfDestinationUnsupported    0x2020
+#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 PIMAReturnCodeEXTENSION_MASK               0xF000
-#define PIMAReturnCodeEXTENSION                    0xA000
+#define PIMA_RETURN_CODE_EXTENSION_MASK               0xF000
+#define PIMA_RETURN_CODE_EXTENSION                    0xA000
 
 /* PTP Event Codes */
-#define PTP_EC_Undefined                    0x4000
-#define PTP_EC_CancelTransaction            0x4001
-#define PTP_EC_ObjectAdded                  0x4002
-#define PTP_EC_ObjectRemoved                0x4003
-#define PTP_EC_StoreAdded                   0x4004
-#define PTP_EC_StoreRemoved                 0x4005
-#define PTP_EC_DevicePropChanged            0x4006
-#define PTP_EC_ObjectInfoChanged            0x4007
-#define PTP_EC_DeviceInfoChanged            0x4008
-#define PTP_EC_RequestObjectTransfer        0x4009
-#define PTP_EC_StoreFull                    0x400A
-#define PTP_EC_DeviceReset                  0x400B
-#define PTP_EC_StorageInfoChanged           0x400C
-#define PTP_EC_CaptureComplete              0x400D
-#define PTP_EC_UnreportedStatus             0x400E
+#define PIMA_EVENT_CODE_Undefined                    0x4000
+#define PIMA_EVENT_CODE_CancelTransaction            0x4001
+#define PIMA_EVENT_CODE_ObjectAdded                  0x4002
+#define PIMA_EVENT_CODE_ObjectRemoved                0x4003
+#define PIMA_EVENT_CODE_StoreAdded                   0x4004
+#define PIMA_EVENT_CODE_StoreRemoved                 0x4005
+#define PIMA_EVENT_CODE_DevicePropChanged            0x4006
+#define PIMA_EVENT_CODE_ObjectInfoChanged            0x4007
+#define PIMA_EVENT_CODE_DeviceInfoChanged            0x4008
+#define PIMA_EVENT_CODE_RequestObjectTransfer        0x4009
+#define PIMA_EVENT_CODE_StoreFull                    0x400A
+#define PIMA_EVENT_CODE_DeviceReset                  0x400B
+#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
 
-/* max ptp string length INCLUDING terminating null character */
-#define PTP_MAXSTRLEN                       255
 
-/* PTP Object Format Codes */
+/* PIMA15740 Object Format Codes */
 
 /* ancillary formats */
-#define PTP_OFC_Undefined                   0x3000
-#define PTP_OFC_Association                 0x3001
-#define PTP_OFC_Script                      0x3002
-#define PTP_OFC_Executable                  0x3003
-#define PTP_OFC_Text                        0x3004
-#define PTP_OFC_HTML                        0x3005
-#define PTP_OFC_DPOF                        0x3006
-#define PTP_OFC_AIFF                        0x3007
-#define PTP_OFC_WAV                         0x3008
-#define PTP_OFC_MP3                         0x3009
-#define PTP_OFC_AVI                         0x300A
-#define PTP_OFC_MPEG                        0x300B
-#define PTP_OFC_ASF                         0x300C
-#define PTP_OFC_QT                          0x300D /* guessing */
+#define PIMA_OBJECT_FORMAT_CODE_Undefined                   0x3000
+#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
+#define PIMA_OBJECT_FORMAT_CODE_HTML                        0x3005
+#define PIMA_OBJECT_FORMAT_CODE_DPOF                        0x3006
+#define PIMA_OBJECT_FORMAT_CODE_AIFF                        0x3007
+#define PIMA_OBJECT_FORMAT_CODE_WAV                         0x3008
+#define PIMA_OBJECT_FORMAT_CODE_MP3                         0x3009
+#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 PTP_OFC_EXIF_JPEG                   0x3801
-#define PTP_OFC_TIFF_EP                     0x3802
-#define PTP_OFC_FlashPix                    0x3803
-#define PTP_OFC_BMP                         0x3804
-#define PTP_OFC_CIFF                        0x3805
-#define PTP_OFC_Undefined_0x3806            0x3806
-#define PTP_OFC_GIF                         0x3807
-#define PTP_OFC_JFIF                        0x3808
-#define PTP_OFC_PCD                         0x3809
-#define PTP_OFC_PICT                        0x380A
-#define PTP_OFC_PNG                         0x380B
-#define PTP_OFC_Undefined_0x380C            0x380C
-#define PTP_OFC_TIFF                        0x380D
-#define PTP_OFC_TIFF_IT                     0x380E
-#define PTP_OFC_JP2                         0x380F
-#define PTP_OFC_JPX                         0x3810
+#define PIMA_OBJECT_FORMAT_CODE_EXIF_JPEG                   0x3801
+#define PIMA_OBJECT_FORMAT_CODE_TIFF_EP                     0x3802
+#define PIMA_OBJECT_FORMAT_CODE_FlashPix                    0x3803
+#define PIMA_OBJECT_FORMAT_CODE_BMP                         0x3804
+#define PIMA_OBJECT_FORMAT_CODE_CIFF                        0x3805
+#define PIMA_OBJECT_FORMAT_CODE_Undefined_0x3806            0x3806
+#define PIMA_OBJECT_FORMAT_CODE_GIF                         0x3807
+#define PIMA_OBJECT_FORMAT_CODE_JFIF                        0x3808
+#define PIMA_OBJECT_FORMAT_CODE_PCD                         0x3809
+#define PIMA_OBJECT_FORMAT_CODE_PICT                        0x380A
+#define PIMA_OBJECT_FORMAT_CODE_PNG                         0x380B
+#define PIMA_OBJECT_FORMAT_CODE_Undefined_0x380C            0x380C
+#define PIMA_OBJECT_FORMAT_CODE_TIFF                        0x380D
+#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
@@ -197,9 +183,6 @@
 #define PTP_AT_2DPanoramic                  0x0006
 #define PTP_AT_AncillaryData                0x0007
 
-/* PTP Protection Status */
-#define PTP_PS_NoProtection                 0x0000
-#define PTP_PS_ReadOnly                     0x0001
 
 /* PTP Storage Types */
 #define PTP_ST_Undefined                    0x0000