Library to allo USB PTP device to be hosted by the mbed platform
Dependents: class_project_main
Revision 3:1fcb46ab18df, committed 2013-08-23
- 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
--- 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; }