📄 ptp.h
字号:
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_ViewfinderOutput 0xD036#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_WhiteBalanceColorTemperature 0xD01E#define PTP_DPC_NIKON_ImageSharpening 0xD02A#define PTP_DPC_NIKON_ToneCompensation 0xD02B#define PTP_DPC_NIKON_ColorMode 0xD02C#define PTP_DPC_NIKON_HueAdjustment 0xD02D#define PTP_DPC_NIKON_NonCPULensDataFocalLength 0xD02E#define PTP_DPC_NIKON_NonCPULensDataMaximumAperture 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_FocusAreaWrap 0xD04F#define PTP_DPC_NIKON_A7VerticalAFON 0xD050#define PTP_DPC_NIKON_ISOAuto 0xD054#define PTP_DPC_NIKON_B2ISOStep 0xD055#define PTP_DPC_NIKON_EVStep 0xD056#define PTP_DPC_NIKON_B4ExposureCompEv 0xD057#define PTP_DPC_NIKON_ExposureCompensation 0xD058#define PTP_DPC_NIKON_CenterWeightArea 0xD059#define PTP_DPC_NIKON_AELockMode 0xD05E#define PTP_DPC_NIKON_AELAFLMode 0xD05F#define PTP_DPC_NIKON_MeterOff 0xD062#define PTP_DPC_NIKON_SelfTimer 0xD063#define PTP_DPC_NIKON_MonitorOff 0xD064#define PTP_DPC_NIKON_D1ShootingSpeed 0xD068#define PTP_DPC_NIKON_D2MaximumShots 0xD069#define PTP_DPC_NIKON_D3ExpDelayMode 0xD06A#define PTP_DPC_NIKON_LongExposureNoiseReduction 0xD06B#define PTP_DPC_NIKON_FileNumberSequence 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_FlashShutterSpeed 0xD075#define PTP_DPC_NIKON_E3AAFlashMode 0xD076#define PTP_DPC_NIKON_E4ModelingFlash 0xD077#define PTP_DPC_NIKON_BracketSet 0xD078#define PTP_DPC_NIKON_E6ManualModeBracketing 0xD079 #define PTP_DPC_NIKON_BracketOrder 0xD07A#define PTP_DPC_NIKON_E8AutoBracketSelection 0xD07B#define PTP_DPC_NIKON_BracketingSet 0xD07C#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_ReverseCommandDial 0xD086#define PTP_DPC_NIKON_ApertureSetting 0xD087#define PTP_DPC_NIKON_MenusAndPlayback 0xD088#define PTP_DPC_NIKON_F6ButtonsAndDials 0xD089#define PTP_DPC_NIKON_NoCFCard 0xD08A#define PTP_DPC_NIKON_ImageCommentString 0xD090#define PTP_DPC_NIKON_ImageCommentAttach 0xD091#define PTP_DPC_NIKON_ImageRotation 0xD092#define PTP_DPC_NIKON_Bracketing 0xD0C0#define PTP_DPC_NIKON_ExposureBracketingIntervalDist 0xD0C1#define PTP_DPC_NIKON_BracketingProgram 0xD0C2#define PTP_DPC_NIKON_WhiteBalanceBracketStep 0xD0C4#define PTP_DPC_NIKON_LensID 0xD0E0#define PTP_DPC_NIKON_FocalLengthMin 0xD0E3#define PTP_DPC_NIKON_FocalLengthMax 0xD0E4#define PTP_DPC_NIKON_MaxApAtMinFocalLength 0xD0E5#define PTP_DPC_NIKON_MaxApAtMaxFocalLength 0xD0E6#define PTP_DPC_NIKON_ExposureTime 0xD100#define PTP_DPC_NIKON_ACPower 0xD101#define PTP_DPC_NIKON_MaximumShots 0xD103#define PTP_DPC_NIKON_AFLLock 0xD104#define PTP_DPC_NIKON_AutoExposureLock 0xD105#define PTP_DPC_NIKON_AutoFocusLock 0xD106#define PTP_DPC_NIKON_AutofocusLCDTopMode2 0xD107#define PTP_DPC_NIKON_AutofocusArea 0xD108#define PTP_DPC_NIKON_LightMeter 0xD10A#define PTP_DPC_NIKON_CameraOrientation 0xD10E#define PTP_DPC_NIKON_ExposureApertureLock 0xD111#define PTP_DPC_NIKON_BeepOff 0xD160#define PTP_DPC_NIKON_AutofocusMode 0xD161#define PTP_DPC_NIKON_AFAssist 0xD163#define PTP_DPC_NIKON_PADVPMode 0xD164#define PTP_DPC_NIKON_ImageReview 0xD165#define PTP_DPC_NIKON_AFAreaIllumination 0xD166#define PTP_DPC_NIKON_FlashMode 0xD167#define PTP_DPC_NIKON_FlashCommanderMode 0xD168#define PTP_DPC_NIKON_FlashSign 0xD169#define PTP_DPC_NIKON_GridDisplay 0xD16C#define PTP_DPC_NIKON_FlashModeManualPower 0xD16D#define PTP_DPC_NIKON_FlashModeCommanderPower 0xD16E#define PTP_DPC_NIKON_RemoteTimeout 0xD16B#define PTP_DPC_NIKON_GridDisplay 0xD16C#define PTP_DPC_NIKON_BracketingIncrement 0xD190#define PTP_DPC_NIKON_LowLight 0xD1B0#define PTP_DPC_NIKON_FlashOpen 0xD1C0#define PTP_DPC_NIKON_FlashCharged 0xD1C1#define PTP_DPC_NIKON_FlashExposureCompensation 0xD126#define PTP_DPC_NIKON_CSMMenu 0xD180#define PTP_DPC_NIKON_OptimizeImage 0xD140#define PTP_DPC_NIKON_Saturation 0xD142/* 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);/* Nikon extensions */uint16_t ptp_nikon_setcontrolmode (PTPParams* params, uint32_t mode);uint16_t ptp_nikon_directcapture (PTPParams* params, uint32_t unknown);uint16_t ptp_nikon_checkevent (PTPParams* params, PTPUSBEventContainer** event, uint16_t* evnum);uint16_t ptp_nikon_keepalive (PTPParams* params);/* 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_datatype_name (PTPParams* params, uint16_t dt);const char*ptp_get_operation_name (PTPParams* params, uint16_t oc);const char*ptp_prop_getname (PTPParams* params, uint16_t dpc);/* Properties handling functions */const char* ptp_prop_getdesc (PTPParams* params, PTPDevicePropDesc *dpd, void *val);const char* ptp_prop_getdescbystring (PTPParams* params,PTPDevicePropDesc *dpd, const char *strval);const char * ptp_prop_tostr (PTPParams* params, PTPDevicePropDesc *dpd, void *val);uint16_t ptp_prop_getcodebyname (PTPParams* params, char* propname);const char* ptp_prop_getvalbyname (PTPParams* params, char* name, uint16_t dpc);#endif /* __PTP_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -