⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ptp.h

📁 Linux平台。一个好用的ptp传输工具。用来从相机向pc传输照片
💻 H
📖 第 1 页 / 共 2 页
字号:
/* 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 + -