📄 ptp.h
字号:
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 + -