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

Dependents:   class_project_main

PIMA15740/PIMAconst.h

Committer:
jakowisp
Date:
2013-10-07
Revision:
11:3b072cf16df8
Parent:
3:1fcb46ab18df

File content as of revision 11:3b072cf16df8:

/**
*  @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 __PIMACONST_H__
#define __PIMACONST_H__

#define PIMA_CONTAINER_HEADER_LENGTH  0xc

// 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
#define PIMA_CONTAINER_RESPONSE          0x0003
#define PIMA_CONTAINER_EVENT             0x0004

/* Vendor IDs */
//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
#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 */
// PIMA 15740:2000 standard 10.3 Table 18
#define PIMA_OPERATION_CODE_EXTENSION                    0x9000

/* Response Codes */
// 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 */
// PIMA 15740:2000 standard 11.2 Table 20
#define PIMA_RETURN_CODE_EXTENSION                    0xA000

/* 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
#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
// PIMA 15740:2000 standard 12.4 Table 22
#define PIMA_EVENT_CODE_VENDOR_EXTENSION             0xC000


/* PIMA15740 Object Format Codes */
// 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_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
/* image formats */
#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
// PIMA 15740:2000 standard 6.2 Table 14
#define PIMA_OBJECT_FORMAT_CODE_VENDOR_EXTENSION            0xB000


/* 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

/* 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

/* 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 */
// 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 */
// 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 */
// PIMA 15740:2000 standard 13.3.5 Table 26
#define PIMA_DEVICE_PROPERTY_CODE_EXTENSION                   0xD000

/* Device Property Form Flag */
// 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 */
// PIMA 15740:2000 standard 13.3.3 Table 23
#define PIMA_DEVICE_PROPERTY_GETSET_Get                        0x00
#define PIMA_DEVICE_PROPERTY_GETSET_GetSet                     0x01

#endif //__PIMACONST_H__