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

📄 ptp.h

📁 USB Host 开发中支持数码相机的源码。即Picture To Picture协议的完整实现
💻 H
📖 第 1 页 / 共 2 页
字号:
	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	{		PTPPropDescEnumForm	Enum;		PTPPropDescRangeForm	Range;	} FORM;};typedef struct _PTPDevicePropDesc PTPDevicePropDesc;/* Canon filesystem's folder entry Dataset */#define PTP_CANON_FilenameBufferLen	13#define PTP_CANON_FolderEntryLen	sizeof(PTPCANONFolderEntry)struct _PTPCANONFolderEntry {	uint32_t	ObjectHandle;	uint16_t	ObjectFormatCode;	uint8_t		Flags;	uint32_t	ObjectSize;	time_t		Time;    char     Filename[PTP_CANON_FilenameBufferLen];};typedef struct _PTPCANONFolderEntry PTPCANONFolderEntry;/* 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/* 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/* Proprietary vendor extension device property mask */#define PTP_DPC_EXTENSION_MASK		0xF000#define PTP_DPC_EXTENSION		0xD000/* Vendor Extensions device property codes *//* Eastman Kodak extension device property codes */#define PTP_DPC_EK_ColorTemperature	0xD001#define PTP_DPC_EK_DateTimeStampFormat	0xD002#define PTP_DPC_EK_BeepMode		0xD003#define PTP_DPC_EK_VideoOut		0xD004#define PTP_DPC_EK_PowerSaving		0xD005#define PTP_DPC_EK_UI_Language		0xD006/* Canon extension device property codes */#define PTP_DPC_CANON_BeepMode		0xD001#define PTP_DPC_CANON_ViewfinderMode	0xD003#define PTP_DPC_CANON_ImageQuality	0xD006#define PTP_DPC_CANON_D007		0xD007#define PTP_DPC_CANON_ImageSize		0xD008#define PTP_DPC_CANON_FlashMode		0xD00A#define PTP_DPC_CANON_TvAvSetting	0xD00C#define PTP_DPC_CANON_MeteringMode	0xD010#define PTP_DPC_CANON_MacroMode		0xD011#define PTP_DPC_CANON_FocusingPoint	0xD012#define PTP_DPC_CANON_WhiteBalance	0xD013#define PTP_DPC_CANON_ISOSpeed		0xD01C#define PTP_DPC_CANON_Aperture		0xD01D#define PTP_DPC_CANON_ShutterSpeed	0xD01E#define PTP_DPC_CANON_ExpCompensation	0xD01F#define PTP_DPC_CANON_D029		0xD029#define PTP_DPC_CANON_Zoom		0xD02A#define PTP_DPC_CANON_SizeQualityMode	0xD02C#define PTP_DPC_CANON_FlashMemory	0xD031#define PTP_DPC_CANON_CameraModel	0xD032#define PTP_DPC_CANON_CameraOwner	0xD033#define PTP_DPC_CANON_UnixTime		0xD034#define PTP_DPC_CANON_RealImageWidth	0xD039#define PTP_DPC_CANON_PhotoEffect	0xD040#define PTP_DPC_CANON_AssistLight	0xD041#define PTP_DPC_CANON_D045		0xD045/* Nikon extension device property codes */#define PTP_DPC_NIKON_ShootingBank			0xD010#define PTP_DPC_NIKON_ShootingBankNameA 		0xD011#define PTP_DPC_NIKON_ShootingBankNameB			0xD012#define PTP_DPC_NIKON_ShootingBankNameC			0xD013#define PTP_DPC_NIKON_ShootingBankNameD			0xD014#define PTP_DPC_NIKON_RawCompression			0xD016#define PTP_DPC_NIKON_WhiteBalanceAutoBias		0xD017#define PTP_DPC_NIKON_WhiteBalanceTungstenBias		0xD018#define PTP_DPC_NIKON_WhiteBalanceFlourescentBias	0xD019#define PTP_DPC_NIKON_WhiteBalanceDaylightBias		0xD01a#define PTP_DPC_NIKON_WhiteBalanceFlashBias		0xD01b#define PTP_DPC_NIKON_WhiteBalanceCloudyBias		0xD01c#define PTP_DPC_NIKON_WhiteBalanceShadeBias		0xD01d#define PTP_DPC_NIKON_WhiteBalanceColourTemperature	0xD01e#define PTP_DPC_NIKON_ImageSharpening			0xD02a#define PTP_DPC_NIKON_ToneCompensation			0xD02b#define PTP_DPC_NIKON_ColourMode			0xD02c#define PTP_DPC_NIKON_HueAdjustment			0xD02d#define PTP_DPC_NIKON_NonCPULensDataFocalLength		0xD02e#define PTP_DPC_NIKON_NonCPULensDataMaximumAperature	0xD02f#define PTP_DPC_NIKON_CSMMenuBankSelect			0xD040#define PTP_DPC_NIKON_MenuBankNameA			0xD041#define PTP_DPC_NIKON_MenuBankNameB			0xD042#define PTP_DPC_NIKON_MenuBankNameC			0xD043#define PTP_DPC_NIKON_MenuBankNameD			0xD044#define PTP_DPC_NIKON_A1AFCModePriority			0xD048#define PTP_DPC_NIKON_A2AFSModePriority			0xD049#define PTP_DPC_NIKON_A3GroupDynamicAF			0xD04a#define PTP_DPC_NIKON_A4AFActivation			0xD04b#define PTP_DPC_NIKON_A5FocusAreaIllumManualFocus	0xD04c#define PTP_DPC_NIKON_FocusAreaIllumContinuous		0xD04d#define PTP_DPC_NIKON_FocusAreaIllumWhenSelected 	0xD04e#define PTP_DPC_NIKON_A6FocusArea			0xD04f#define PTP_DPC_NIKON_A7VerticalAFON			0xD050#define PTP_DPC_NIKON_B1ISOAuto				0xD054#define PTP_DPC_NIKON_B2ISOStep				0xD055#define PTP_DPC_NIKON_B3EVStep				0xD056#define PTP_DPC_NIKON_B4ExposureCompEv			0xD057#define PTP_DPC_NIKON_B5ExposureComp			0xD058#define PTP_DPC_NIKON_B6CenterWeightArea		0xD059#define PTP_DPC_NIKON_C1AELock				0xD05e#define PTP_DPC_NIKON_C2AELAFL				0xD05f#define PTP_DPC_NIKON_C3AutoMeterOff			0xD062#define PTP_DPC_NIKON_C4SelfTimer			0xD063#define PTP_DPC_NIKON_C5MonitorOff			0xD064#define PTP_DPC_NIKON_D1ShootingSpeed			0xD068#define PTP_DPC_NIKON_D2MaximumShots			0xD069#define PTP_DPC_NIKON_D3ExpDelayMode			0xD06a#define PTP_DPC_NIKON_D4LongExposureNoiseReduction	0xD06b#define PTP_DPC_NIKON_D5FileNumberSequence		0xD06c#define PTP_DPC_NIKON_D6ControlPanelFinderRearControl	0xD06d#define PTP_DPC_NIKON_ControlPanelFinderViewfinder	0xD06e#define PTP_DPC_NIKON_D7Illumination			0xD06f#define PTP_DPC_NIKON_E1FlashSyncSpeed			0xD074#define PTP_DPC_NIKON_E2FlashShutterSpeed		0xD075#define PTP_DPC_NIKON_E3AAFlashMode			0xD076#define PTP_DPC_NIKON_E4ModelingFlash			0xD077#define PTP_DPC_NIKON_E5AutoBracketySet			0xD078#define PTP_DPC_NIKON_E6ManualModeBracketing		0xD079	#define PTP_DPC_NIKON_E7AutoBracketOrder		0xD07a#define PTP_DPC_NIKON_E8AutoBracketSelection		0xD07b#define PTP_DPC_NIKON_F1CenterButtonShootingMode	0xD080#define PTP_DPC_NIKON_CenterButtonPlaybackMode		0xD081#define PTP_DPC_NIKON_F2Multiselector			0xD082#define PTP_DPC_NIKON_F3PhotoInfoPlayback		0xD083#define PTP_DPC_NIKON_F4AssignFuncButton		0xD084#define PTP_DPC_NIKON_F5CustomizeCommDials		0xD085#define PTP_DPC_NIKON_ChangeMainSub			0xD086#define PTP_DPC_NIKON_AperatureSetting			0xD087#define PTP_DPC_NIKON_MenusAndPlayback			0xD088#define PTP_DPC_NIKON_F6ButtonsAndDials			0xD089#define PTP_DPC_NIKON_F7NoCFCard			0xD08a#define PTP_DPC_NIKON_AutoImageRotation			0xD092#define PTP_DPC_NIKON_ExposureBracketingOnOff		0xD0c0#define PTP_DPC_NIKON_ExposureBracketingIntervalDist	0xD0c1#define PTP_DPC_NIKON_ExposureBracketingNumBracketPlace	0xD0c2#define PTP_DPC_NIKON_AutofocusLCDTopMode2		0xD107#define PTP_DPC_NIKON_AutofocusLCDTopMode3AndMode4	0xD108#define PTP_DPC_NIKON_LightMeter			0xD10a#define PTP_DPC_NIKON_ExposureAperatureLock(ReadOnly)	0xD111#define PTP_DPC_NIKON_MaximumShots			0xD103/* Device Property Form Flag */#define PTP_DPFF_None			0x00#define PTP_DPFF_Range			0x01#define PTP_DPFF_Enumeration		0x02/* Device Property GetSet type */#define PTP_DPGS_Get			0x00#define PTP_DPGS_GetSet			0x01/* Glue stuff starts here */typedef struct _PTPParams PTPParams;/* raw write functions */typedef short (* PTPIOReadFunc)	(unsigned char *bytes, unsigned int size,				 void *data);typedef short (* PTPIOWriteFunc)(unsigned char *bytes, unsigned int size,				 void *data);/* * This functions take PTP oriented arguments and send them over an * appropriate data layer doing byteorder conversion accordingly. */typedef uint16_t (* PTPIOSendReq)	(PTPParams* params, PTPContainer* req);typedef uint16_t (* PTPIOSendData)	(PTPParams* params, PTPContainer* ptp,					unsigned char *data, unsigned int size);typedef uint16_t (* PTPIOGetResp)	(PTPParams* params, PTPContainer* resp);typedef uint16_t (* PTPIOGetData)	(PTPParams* params, PTPContainer* ptp,					unsigned char **data);/* debug functions */typedef void (* PTPErrorFunc) (void *data, const char *format, va_list args);typedef void (* PTPDebugFunc) (void *data, const char *format, va_list args);struct _PTPParams {	/* data layer byteorder */	uint8_t	byteorder;	/* Data layer IO functions */	PTPIOReadFunc	read_func;	PTPIOWriteFunc	write_func;	PTPIOReadFunc	check_int_func;	PTPIOReadFunc	check_int_fast_func;	/* Custom IO functions */	PTPIOSendReq	sendreq_func;	PTPIOSendData	senddata_func;	PTPIOGetResp	getresp_func;	PTPIOGetData	getdata_func;	PTPIOGetResp	event_check;	PTPIOGetResp	event_wait;	/* Custom error and debug function */	PTPErrorFunc error_func;	PTPDebugFunc debug_func;	/* Data passed to above functions */	void *data;	/* ptp transaction ID */	uint32_t transaction_id;	/* ptp session ID */	uint32_t session_id;	/* internal structures used by ptp driver */	PTPObjectHandles handles;	PTPObjectInfo * objectinfo;	PTPDeviceInfo deviceinfo;};/* last, but not least - ptp functions */uint16_t ptp_usb_sendreq	(PTPParams* params, PTPContainer* req);uint16_t ptp_usb_senddata	(PTPParams* params, PTPContainer* ptp,				unsigned char *data, unsigned int size);uint16_t ptp_usb_getresp	(PTPParams* params, PTPContainer* resp);uint16_t ptp_usb_getdata	(PTPParams* params, PTPContainer* ptp, 				unsigned char **data);uint16_t ptp_usb_event_check	(PTPParams* params, PTPContainer* event);uint16_t ptp_usb_event_wait		(PTPParams* params, PTPContainer* event);uint16_t ptp_getdeviceinfo	(PTPParams* params, PTPDeviceInfo* deviceinfo);uint16_t ptp_opensession	(PTPParams *params, uint32_t session);uint16_t ptp_closesession	(PTPParams *params);uint16_t ptp_getstorageids	(PTPParams* params, PTPStorageIDs* storageids);uint16_t ptp_getstorageinfo 	(PTPParams* params, uint32_t storageid,				PTPStorageInfo* storageinfo);uint16_t ptp_getobjecthandles 	(PTPParams* params, uint32_t storage,				uint32_t objectformatcode,				uint32_t associationOH,				PTPObjectHandles* objecthandles);uint16_t ptp_getobjectinfo	(PTPParams *params, uint32_t handle,				PTPObjectInfo* objectinfo);uint16_t ptp_getobject		(PTPParams *params, uint32_t handle,				char** object);uint16_t ptp_getthumb		(PTPParams *params, uint32_t handle,				char** object);uint16_t ptp_deleteobject	(PTPParams* params, uint32_t handle,				uint32_t ofc);uint16_t ptp_sendobjectinfo	(PTPParams* params, uint32_t* store,				uint32_t* parenthandle, uint32_t* handle,				PTPObjectInfo* objectinfo);uint16_t ptp_sendobject		(PTPParams* params, char* object,				uint32_t size);uint16_t ptp_initiatecapture	(PTPParams* params, uint32_t storageid,				uint32_t ofc);uint16_t ptp_getdevicepropdesc	(PTPParams* params, uint16_t propcode,				PTPDevicePropDesc *devicepropertydesc);uint16_t ptp_getdevicepropvalue	(PTPParams* params, uint16_t propcode,				void** value, uint16_t datatype);uint16_t ptp_setdevicepropvalue (PTPParams* params, uint16_t propcode,                        	void* value, uint16_t datatype);uint16_t ptp_ek_sendfileobjectinfo (PTPParams* params, uint32_t* store,				uint32_t* parenthandle, uint32_t* handle,				PTPObjectInfo* objectinfo);uint16_t ptp_ek_sendfileobject	(PTPParams* params, char* object,				uint32_t size);				/* Canon PTP extensions */uint16_t ptp_canon_getobjectsize (PTPParams* params, uint32_t handle,				uint32_t p2, uint32_t* size, uint32_t* rp2);uint16_t ptp_canon_startshootingmode (PTPParams* params);uint16_t ptp_canon_endshootingmode (PTPParams* params);uint16_t ptp_canon_viewfinderon (PTPParams* params);uint16_t ptp_canon_viewfinderoff (PTPParams* params);uint16_t ptp_canon_reflectchanges (PTPParams* params, uint32_t p1);uint16_t ptp_canon_checkevent (PTPParams* params, 				PTPUSBEventContainer* event, int* isevent);uint16_t ptp_canon_focuslock (PTPParams* params);uint16_t ptp_canon_focusunlock (PTPParams* params);uint16_t ptp_canon_initiatecaptureinmemory (PTPParams* params);uint16_t ptp_canon_getpartialobject (PTPParams* params, uint32_t handle, 				uint32_t offset, uint32_t size,				uint32_t pos, char** block, 				uint32_t* readnum);uint16_t ptp_canon_getviewfinderimage (PTPParams* params, char** image,				uint32_t* size);uint16_t ptp_canon_getchanges (PTPParams* params, uint16_t** props,				uint32_t* propnum); uint16_t ptp_canon_getfolderentries (PTPParams* params, uint32_t store,				uint32_t p2, uint32_t parenthandle,				uint32_t handle, 				PTPCANONFolderEntry** entries,				uint32_t* entnum);/* Non PTP protocol functions */int ptp_operation_issupported	(PTPParams* params, uint16_t operation);int ptp_property_issupported	(PTPParams* params, uint16_t property);void ptp_free_devicepropdesc	(PTPDevicePropDesc* dpd);void ptp_perror			(PTPParams* params, uint16_t error);const char*ptp_get_operation_name		(PTPParams* params, uint16_t oc);const char*ptp_get_property_name		(PTPParams* params, uint16_t dpc);#endif /* __PTP_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -