📄 ptp.h
字号:
/* ptp.h * * Copyright (C) 2001-2004 Mariusz Woloszyn <emsi@ipartners.pl> * * This file is part of libptp2. * * libptp2 is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * libptp2 is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with libptp2; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#ifndef __PTP_H__#define __PTP_H__#include <stdarg.h>#include <time.h>#include "libptp-endian.h"/* PTP datalayer byteorder */#define PTP_DL_BE 0xF0#define PTP_DL_LE 0x0F/* PTP request/response/event general PTP container (transport independent) */struct _PTPContainer { uint16_t Code; uint32_t SessionID; uint32_t Transaction_ID; /* params may be of any type of size less or equal to uint32_t */ uint32_t Param1; uint32_t Param2; uint32_t Param3; /* events can only have three parameters */ uint32_t Param4; uint32_t Param5; /* the number of meaningfull parameters */ uint8_t Nparam;};typedef struct _PTPContainer PTPContainer;/* PTP USB Bulk-Pipe container *//* USB bulk max max packet length for high speed endpoints */#define PTP_USB_BULK_HS_MAX_PACKET_LEN 512#define PTP_USB_BULK_HDR_LEN (2*sizeof(uint32_t)+2*sizeof(uint16_t))#define PTP_USB_BULK_PAYLOAD_LEN (PTP_USB_BULK_HS_MAX_PACKET_LEN-PTP_USB_BULK_HDR_LEN)#define PTP_USB_BULK_REQ_LEN (PTP_USB_BULK_HDR_LEN+5*sizeof(uint32_t))struct _PTPUSBBulkContainer { uint32_t length; uint16_t type; uint16_t code; uint32_t trans_id; union { struct { uint32_t param1; uint32_t param2; uint32_t param3; uint32_t param4; uint32_t param5; } params; unsigned char data[PTP_USB_BULK_PAYLOAD_LEN]; } payload;};typedef struct _PTPUSBBulkContainer PTPUSBBulkContainer;#define PTP_USB_INT_PACKET_LEN 8/* PTP USB Asynchronous Event Interrupt Data Format */struct _PTPUSBEventContainer { uint32_t length; uint16_t type; uint16_t code; uint32_t trans_id; uint32_t param1; uint32_t param2; uint32_t param3;};typedef struct _PTPUSBEventContainer PTPUSBEventContainer;/* 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/* 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/* 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/* Eastman Kodak extension Operation Codes */#define PTP_OC_EK_SendFileObjectInfo 0x9005#define PTP_OC_EK_SendFileObject 0x9006/* Canon extension Operation Codes */#define PTP_OC_CANON_GetObjectSize 0x9001#define PTP_OC_CANON_StartShootingMode 0x9008#define PTP_OC_CANON_EndShootingMode 0x9009#define PTP_OC_CANON_ViewfinderOn 0x900B#define PTP_OC_CANON_ViewfinderOff 0x900C#define PTP_OC_CANON_ReflectChanges 0x900D#define PTP_OC_CANON_CheckEvent 0x9013#define PTP_OC_CANON_FocusLock 0x9014#define PTP_OC_CANON_FocusUnlock 0x9015#define PTP_OC_CANON_InitiateCaptureInMemory 0x901A#define PTP_OC_CANON_GetPartialObject 0x901B#define PTP_OC_CANON_GetViewfinderImage 0x901d#define PTP_OC_CANON_GetChanges 0x9020#define PTP_OC_CANON_GetFolderEntries 0x9021/* Nikon extensiion Operation Codes */#define PTP_OC_NIKON_DirectCapture 0x90C0#define PTP_OC_NIKON_SetControlMode 0x90C2#define PTP_OC_NIKON_CheckEvent 0x90C7#define PTP_OC_NIKON_KeepAlive 0x90C8/* Proprietary vendor extension operations mask */#define PTP_OC_EXTENSION_MASK 0xF000#define PTP_OC_EXTENSION 0x9000/* Response Codes */#define PTP_RC_Undefined 0x2000#define PTP_RC_OK 0x2001#define PTP_RC_GeneralError 0x2002#define PTP_RC_SessionNotOpen 0x2003#define PTP_RC_InvalidTransactionID 0x2004#define PTP_RC_OperationNotSupported 0x2005#define PTP_RC_ParameterNotSupported 0x2006#define PTP_RC_IncompleteTransfer 0x2007#define PTP_RC_InvalidStorageId 0x2008#define PTP_RC_InvalidObjectHandle 0x2009#define PTP_RC_DevicePropNotSupported 0x200A#define PTP_RC_InvalidObjectFormatCode 0x200B#define PTP_RC_StoreFull 0x200C#define PTP_RC_ObjectWriteProtected 0x200D#define PTP_RC_StoreReadOnly 0x200E#define PTP_RC_AccessDenied 0x200F#define PTP_RC_NoThumbnailPresent 0x2010#define PTP_RC_SelfTestFailed 0x2011#define PTP_RC_PartialDeletion 0x2012#define PTP_RC_StoreNotAvailable 0x2013#define PTP_RC_SpecificationByFormatUnsupported 0x2014#define PTP_RC_NoValidObjectInfo 0x2015#define PTP_RC_InvalidCodeFormat 0x2016#define PTP_RC_UnknownVendorCode 0x2017#define PTP_RC_CaptureAlreadyTerminated 0x2018#define PTP_RC_DeviceBusy 0x2019#define PTP_RC_InvalidParentObject 0x201A#define PTP_RC_InvalidDevicePropFormat 0x201B#define PTP_RC_InvalidDevicePropValue 0x201C#define PTP_RC_InvalidParameter 0x201D#define PTP_RC_SessionAlreadyOpened 0x201E#define PTP_RC_TransactionCanceled 0x201F#define PTP_RC_SpecificationOfDestinationUnsupported 0x2020/* Eastman Kodak extension Response Codes */#define PTP_RC_EK_FilenameRequired 0xA001#define PTP_RC_EK_FilenameConflicts 0xA002#define PTP_RC_EK_FilenameInvalid 0xA003/* NIKON extension Response Codes */#define PTP_RC_NIKON_PropertyReadOnly 0xA005/* Proprietary vendor extension response code mask */#define PTP_RC_EXTENSION_MASK 0xF000#define PTP_RC_EXTENSION 0xA000/* libptp2 extended ERROR codes */#define PTP_ERROR_IO 0x02FF#define PTP_ERROR_DATA_EXPECTED 0x02FE#define PTP_ERROR_RESP_EXPECTED 0x02FD#define PTP_ERROR_BADPARAM 0x02FC/* 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/* Canon extension Event Codes */#define PTP_EC_CANON_DeviceInfoChanged 0xC008#define PTP_EC_CANON_RequestObjectTransfer 0xC009#define PTP_EC_CANON_CameraModeChanged 0xC00C/* Nikon extension Event Codes */#define PTP_EC_NIKON_ObjectReady 0xC101#define PTP_EC_NIKON_CaptureOverflow 0xC102/* PTP device info structure (returned by GetDevInfo) */struct _PTPDeviceInfo { uint16_t StaqndardVersion; uint32_t VendorExtensionID; uint16_t VendorExtensionVersion; char *VendorExtensionDesc; uint16_t FunctionalMode; uint32_t OperationsSupported_len; uint16_t *OperationsSupported; uint32_t EventsSupported_len; uint16_t *EventsSupported; uint32_t DevicePropertiesSupported_len; uint16_t *DevicePropertiesSupported; uint32_t CaptureFormats_len; uint16_t *CaptureFormats; uint32_t ImageFormats_len; uint16_t *ImageFormats; char *Manufacturer; char *Model; char *DeviceVersion; char *SerialNumber;};typedef struct _PTPDeviceInfo PTPDeviceInfo;/* PTP storageIDs structute (returned by GetStorageIDs) */struct _PTPStorageIDs { uint32_t n; uint32_t *Storage;};typedef struct _PTPStorageIDs PTPStorageIDs;/* PTP StorageInfo structure (returned by GetStorageInfo) */struct _PTPStorageInfo { uint16_t StorageType; uint16_t FilesystemType; uint16_t AccessCapability; uint64_t MaxCapability; uint64_t FreeSpaceInBytes; uint32_t FreeSpaceInImages; char *StorageDescription; char *VolumeLabel;};typedef struct _PTPStorageInfo PTPStorageInfo;/* PTP objecthandles structure (returned by GetObjectHandles) */struct _PTPObjectHandles { uint32_t n; uint32_t *Handler;};typedef struct _PTPObjectHandles PTPObjectHandles;#define PTP_HANDLER_SPECIAL 0xffffffff#define PTP_HANDLER_ROOT 0x00000000/* PTP objectinfo structure (returned by GetObjectInfo) */struct _PTPObjectInfo { uint32_t StorageID; uint16_t ObjectFormat; uint16_t ProtectionStatus; uint32_t ObjectCompressedSize; uint16_t ThumbFormat; uint32_t ThumbCompressedSize; uint32_t ThumbPixWidth; uint32_t ThumbPixHeight; uint32_t ImagePixWidth; uint32_t ImagePixHeight; uint32_t ImageBitDepth; uint32_t ParentObject; uint16_t AssociationType; uint32_t AssociationDesc; uint32_t SequenceNumber; char *Filename; time_t CaptureDate; time_t ModificationDate; char *Keywords;};typedef struct _PTPObjectInfo PTPObjectInfo;/* max ptp string length INCLUDING terminating null character */#define PTP_MAXSTRLEN 255/* PTP 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 *//* 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/* Eastman Kodak extension ancillary format */#define PTP_OFC_EK_M3U 0xb002/* 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/* PTP Protection Status */#define PTP_PS_NoProtection 0x0000#define PTP_PS_ReadOnly 0x0001/* 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/* PTP FilesystemType Values */#define PTP_FST_Undefined 0x0000#define PTP_FST_GenericFlat 0x0001#define PTP_FST_GenericHierarchical 0x0002#define PTP_FST_DCF 0x0003/* PTP StorageInfo AccessCapability Values */#define PTP_AC_ReadWrite 0x0000#define PTP_AC_ReadOnly 0x0001#define PTP_AC_ReadOnly_with_Object_Deletion 0x0002/* Property Describing Dataset, Range Form */struct _PTPPropDescRangeForm { void * MinimumValue; void * MaximumValue; void * StepSize;};typedef struct _PTPPropDescRangeForm PTPPropDescRangeForm;/* Property Describing Dataset, Enum Form */struct _PTPPropDescEnumForm { uint16_t NumberOfValues; void ** SupportedValue;};typedef struct _PTPPropDescEnumForm PTPPropDescEnumForm;/* Device Property Describing Dataset (DevicePropDesc) */struct _PTPDevicePropDesc { uint16_t DevicePropertyCode; uint16_t DataType; uint8_t GetSet; void * FactoryDefaultValue; void * CurrentValue; uint8_t FormFlag; union {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -