📄 ptp.h
字号:
#define PTP_OPC_Duration 0xDC89#define PTP_OPC_Rating 0xDC8A#define PTP_OPC_Track 0xDC8B#define PTP_OPC_Genre 0xDC8C#define PTP_OPC_Credits 0xDC8D#define PTP_OPC_Lyrics 0xDC8E#define PTP_OPC_SubscriptionContentID 0xDC8F#define PTP_OPC_ProducedBy 0xDC90#define PTP_OPC_UseCount 0xDC91#define PTP_OPC_SkipCount 0xDC92#define PTP_OPC_LastAccessed 0xDC93#define PTP_OPC_ParentalRating 0xDC94#define PTP_OPC_MetaGenre 0xDC95#define PTP_OPC_Composer 0xDC96#define PTP_OPC_EffectiveRating 0xDC97#define PTP_OPC_Subtitle 0xDC98#define PTP_OPC_OriginalReleaseDate 0xDC99#define PTP_OPC_AlbumName 0xDC9A#define PTP_OPC_AlbumArtist 0xDC9B#define PTP_OPC_Mood 0xDC9C#define PTP_OPC_DRMStatus 0xDC9D#define PTP_OPC_SubDescription 0xDC9E#define PTP_OPC_IsCropped 0xDCD1#define PTP_OPC_IsColorCorrected 0xDCD2#define PTP_OPC_TotalBitRate 0xDE91#define PTP_OPC_BitRateType 0xDE92#define PTP_OPC_SampleRate 0xDE93#define PTP_OPC_NumberOfChannels 0xDE94#define PTP_OPC_AudioBitDepth 0xDE95#define PTP_OPC_ScanDepth 0xDE97#define PTP_OPC_AudioWAVECodec 0xDE99#define PTP_OPC_AudioBitRate 0xDE9A#define PTP_OPC_VideoFourCCCodec 0xDE9B#define PTP_OPC_VideoBitRate 0xDE9C#define PTP_OPC_FramesPerThousandSeconds 0xDE9D#define PTP_OPC_KeyFrameDistance 0xDE9E#define PTP_OPC_BufferSize 0xDE9F#define PTP_OPC_EncodingQuality 0xDEA0/* Device Property Form Flag */#define PTP_DPFF_None 0x00#define PTP_DPFF_Range 0x01#define PTP_DPFF_Enumeration 0x02/* Object Property Codes used by MTP (first 3 are same as DPFF codes) */#define PTP_OPFF_None 0x00#define PTP_OPFF_Range 0x01#define PTP_OPFF_Enumeration 0x02#define PTP_OPFF_DateTime 0x03#define PTP_OPFF_FixedLengthArray 0x04#define PTP_OPFF_RegularExpression 0x05#define PTP_OPFF_ByteArray 0x06#define PTP_OPFF_LongString 0xFF/* 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, unsigned int *readlen);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, int from_fd);typedef uint16_t (* PTPIOGetResp) (PTPParams* params, PTPContainer* resp);typedef uint16_t (* PTPIOGetData) (PTPParams* params, PTPContainer* ptp, unsigned char **data, unsigned int *recvlen, int to_fd);/* debug functions */typedef void (* PTPErrorFunc) (void *data, const char *format, va_list args)#if (__GNUC__ >= 3) __attribute__((__format__(printf,2,0)))#endif;typedef void (* PTPDebugFunc) (void *data, const char *format, va_list args)#if (__GNUC__ >= 3) __attribute__((__format__(printf,2,0)))#endif;struct _PTPParams { /* data layer byteorder */ uint8_t byteorder; /* IO: Data layer IO functions */ PTPIOReadFunc read_func; PTPIOWriteFunc write_func; PTPIOReadFunc check_int_func; PTPIOReadFunc check_int_fast_func; /* PTP IO: 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; /* PTP IO: if we have MTP style split header/data transfers */ int split_header_data; /* PTP: internal structures used by ptp driver */ PTPObjectHandles handles; PTPObjectInfo *objectinfo; PTPDeviceInfo deviceinfo; /* PTP: Canon specific flags list */ uint32_t *canon_flags; /* size(handles.n) */ /* PTP: Wifi profiles */ uint8_t wifi_profiles_version; uint8_t wifi_profiles_number; PTPNIKONWifiProfile *wifi_profiles; /* IO: PTP/IP related data */ int cmdfd, evtfd; uint8_t cameraguid[16]; uint32_t eventpipeid; char *cameraname; /* PTP: iconv converters */ iconv_t cd_locale_to_ucs2; iconv_t cd_ucs2_to_locale; /* IO: Sometimes the response packet get send in the dataphase * too. This only happens for a Samsung player now. */ uint8_t *response_packet; uint16_t response_packet_size;};/* 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, int from_fd);uint16_t ptp_usb_getresp (PTPParams* params, PTPContainer* resp);uint16_t ptp_usb_getdata (PTPParams* params, PTPContainer* ptp, unsigned char **data, unsigned int *readlen, int to_fd);uint16_t ptp_usb_event_check (PTPParams* params, PTPContainer* event);uint16_t ptp_usb_event_wait (PTPParams* params, PTPContainer* event);int ptp_ptpip_connect (PTPParams* params, const char *port);uint16_t ptp_ptpip_sendreq (PTPParams* params, PTPContainer* req);uint16_t ptp_ptpip_senddata (PTPParams* params, PTPContainer* ptp, unsigned char *data, unsigned int size, int to_fd);uint16_t ptp_ptpip_getresp (PTPParams* params, PTPContainer* resp);uint16_t ptp_ptpip_getdata (PTPParams* params, PTPContainer* ptp, unsigned char **data, unsigned int *readlen, int to_fd);uint16_t ptp_ptpip_event_wait (PTPParams* params, PTPContainer* event);uint16_t ptp_ptpip_event_check (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_formatstore (PTPParams* params, uint32_t storageid);uint16_t ptp_getobjecthandles (PTPParams* params, uint32_t storage, uint32_t objectformatcode, uint32_t associationOH, PTPObjectHandles* objecthandles);uint16_t ptp_getnumobjects (PTPParams* params, uint32_t storage, uint32_t objectformatcode, uint32_t associationOH, uint32_t* numobs);uint16_t ptp_getobjectinfo (PTPParams *params, uint32_t handle, PTPObjectInfo* objectinfo);uint16_t ptp_getobject (PTPParams *params, uint32_t handle, unsigned char** object);uint16_t ptp_getobject_tofd (PTPParams* params, uint32_t handle, int fd);uint16_t ptp_getpartialobject (PTPParams* params, uint32_t handle, uint32_t offset, uint32_t maxbytes, unsigned char** object);uint16_t ptp_getthumb (PTPParams *params, uint32_t handle, unsigned 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, unsigned char* object, uint32_t size);uint16_t ptp_sendobject_fromfd (PTPParams* params, int fd, 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, PTPPropertyValue* value, uint16_t datatype);uint16_t ptp_setdevicepropvalue (PTPParams* params, uint16_t propcode, PTPPropertyValue* value, uint16_t datatype);/* Microsoft MTP extensions */uint16_t ptp_mtp_getobjectpropdesc (PTPParams* params, uint16_t opc, uint16_t ofc, PTPObjectPropDesc *objectpropertydesc);uint16_t ptp_mtp_getobjectpropvalue (PTPParams* params, uint32_t oid, uint16_t opc, PTPPropertyValue *value, uint16_t datatype);uint16_t ptp_mtp_setobjectpropvalue (PTPParams* params, uint32_t oid, uint16_t opc, PTPPropertyValue *value, uint16_t datatype);uint16_t ptp_mtp_getobjectreferences (PTPParams* params, uint32_t handle, uint32_t** ohArray, uint32_t* arraylen);uint16_t ptp_mtp_setobjectreferences (PTPParams* params, uint32_t handle, uint32_t* ohArray, uint32_t arraylen);uint16_t ptp_mtp_getobjectproplist (PTPParams* params, uint32_t handle, MTPPropList **proplist);uint16_t ptp_mtp_sendobjectproplist (PTPParams* params, uint32_t* store, uint32_t* parenthandle, uint32_t* handle, uint16_t objecttype, uint64_t objectsize, MTPPropList *proplist);/* Eastman Kodak extensions */uint16_t ptp_ek_9007 (PTPParams* params, unsigned char **serial, unsigned int *size);uint16_t ptp_ek_9009 (PTPParams* params, uint32_t*, uint32_t*);uint16_t ptp_ek_900c (PTPParams* params, unsigned char **serial, unsigned int *size);uint16_t ptp_ek_getserial (PTPParams* params, unsigned char **serial, unsigned int *size);uint16_t ptp_ek_setserial (PTPParams* params, unsigned char *serial, uint32_t size);uint16_t ptp_ek_settext (PTPParams* params, PTPEKTextParams *text);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, unsigned char* object, uint32_t size);/* Canon PTP extensions */uint16_t ptp_canon_9012 (PTPParams* params);uint16_t ptp_canon_initiate_direct_transfer (PTPParams* params, uint32_t* out);uint16_t ptp_canon_get_target_handles (PTPParams* params, PTPCanon_directtransfer_entry**, unsigned int*cnt);uint16_t ptp_canon_getpartialobjectinfo (PTPParams* params, uint32_t handle, uint32_t p2, uint32_t* size, uint32_t* rp2);uint16_t ptp_canon_get_mac_address (PTPParams* params, unsigned char **mac);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_aeafawb (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, unsigned char** block, uint32_t* readnum);uint16_t ptp_canon_getviewfinderimage (PTPParams* params, unsigned char** image, uint32_t* size);uint16_t ptp_canon_getchanges (PTPParams* params, uint16_t** props, uint32_t* propnum); uint16_t ptp_canon_getobjectinfo (PTPParams* params, uint32_t store, uint32_t p2, uint32_t parenthandle, uint32_t handle, PTPCANONFolderEntry** entries, uint32_t* entnum);uint16_t ptp_canon_get_objecthandle_by_name (PTPParams* params, char* name, uint32_t* objectid);uint16_t ptp_canon_get_directory (PTPParams* params, PTPObjectHandles *handles, PTPObjectInfo **oinfos, uint32_t **flags);uint16_t ptp_canon_setobjectarchive (PTPParams* params, uint32_t oid, uint32_t flags);uint16_t ptp_canon_get_customize_data (PTPParams* params, uint32_t themenr, unsigned char **data, unsigned int *size);uint16_t ptp_nikon_curve_download (PTPParams* params, unsigned char **data, unsigned int *size);uint16_t ptp_nikon_getptpipinfo (PTPParams* params, unsigned char **data, unsigned int *size);uint16_t ptp_nikon_getwifiprofilelist (PTPParams* params);uint16_t ptp_nikon_writewifiprofile (PTPParams* params, PTPNIKONWifiProfile* profile);uint16_t ptp_nikon_deletewifiprofile (PTPParams* params, uint32_t profilenr);uint16_t ptp_nikon_setcontrolmode (PTPParams* params, uint32_t mode);uint16_t ptp_nikon_capture (PTPParams* params, uint32_t x);uint16_t ptp_nikon_check_event (PTPParams* params, PTPUSBEventContainer **evt, int *evtcnt);uint16_t ptp_nikon_getfileinfoinblock (PTPParams* params, uint32_t p1, uint32_t p2, uint32_t p3, unsigned char **data, unsigned int *size);uint16_t ptp_nikon_device_ready (PTPParams* params);uint16_t ptp_mtp_getobjectpropssupported (PTPParams* params, uint16_t ofc, uint32_t *propnum, uint16_t **props);/* Non PTP protocol functions */int ptp_operation_issupported (PTPParams* params, uint16_t operation);int ptp_event_issupported (PTPParams* params, uint16_t event);int ptp_property_issupported (PTPParams* params, uint16_t property);void ptp_free_devicepropdesc (PTPDevicePropDesc* dpd);void ptp_free_devicepropvalue (uint16_t dt, PTPPropertyValue* dpd);void ptp_free_objectpropdesc (PTPObjectPropDesc* dpd);void ptp_perror (PTPParams* params, uint16_t error);const char*ptp_get_property_description(PTPParams* params, uint16_t dpc);intptp_render_property_value(PTPParams* params, uint16_t dpc, PTPDevicePropDesc *dpd, int length, char *out);int ptp_render_ofc(PTPParams* params, uint16_t ofc, int spaceleft, char *txt);int ptp_render_opcode(PTPParams* params, uint16_t opcode, int spaceleft, char *txt);int ptp_render_mtp_propname(uint16_t propid, int spaceleft, char *txt);/* ptpip.c */void ptp_nikon_getptpipguid (unsigned char* guid);#endif /* __PTP_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -