ptp.h

来自「AMLOGIC DPF source code」· C头文件 代码 · 共 914 行 · 第 1/3 页

H
914
字号
#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);

typedef enum {
    PTP_INIT, 
    PTP_READY, 		
    PTP_CMD, 
    PTP_DATA, 
    PTP_RES
} ptp_device_state_e;

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;

	ptp_device_state_e state;	
	uint32_t	cur_handle;
	uint32_t	cur_offset;
	uint32_t	read_offset; //read offset
	uint32_t	cur_size;   //data size of current object
	uint16_t	packet_size;   //data packet size of usb device

	/* internal structures used by ptp driver */
	PTPObjectHandles handles;
	PTPStorageIDs storages;  //add by Andrew
	PTPObjectInfo * objectinfo;
	PTPDeviceInfo deviceinfo;

	struct _PTPUSBBulkContainer bulkcontainer; //add by wanyong
};

typedef struct ptp_device_s {
	struct list_head	head;
	struct usb_endpoint_descriptor *ep_in;		/* bulk in endpoint   */
	struct usb_endpoint_descriptor *ep_out;		/* bulk out endpoint  */
	struct usb_endpoint_descriptor *ep_int;	 /* interrupt endpoint */ 

	__u8	dev_id;
	
	usb_device_t *dev;		//usb device

	struct _PTPParams	params;

	__u8	partialSupport;

       __u8*    rwbuffer;       /* use in unalignment data read/write */
       int         rwbuffersize;
#ifdef AVOS
	avfs_device_major_number major;
	avfs_device_minor_number minor;
	char * dev_name;
#endif	
	
} ptp_device_t;

/* 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_getstorageids (PTPParams* params, PTPStorageIDs* storageids);
uint16_t ptp_getstorageinfo (PTPParams* params, uint32_t storageid,PTPStorageInfo* storageinfo);
uint16_t ptp_getnumobjects (PTPParams* params, uint32_t storageid,uint32_t objectformatcode, 
			uint32_t associationOH, uint32_t* numobjects);
uint16_t ptp_getthumb (PTPParams* params, uint32_t handle,  char** object);



#ifdef PTP_EXTENTION

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_getviewfinderptp (PTPParams* params, char** ptp,
				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);
#endif //PTP_EXTENTION

/* Non PTP protocol functions */
int ptp_operation_issupported	(PTPParams* params, uint16_t operation);
int ptp_property_issupported	(PTPParams* params, uint16_t property);


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);


//add by Andrew
void ptp_free_devicepropdesc	(PTPDevicePropDesc* dpd);
void ptp_free_dev_info(PTPDeviceInfo* ptr, int self);
void ptp_free_obj_handles(PTPObjectHandles* ptr);
void ptp_free_obj_info(PTPObjectInfo* ptr);
uint16_t ptp_get_object_cmd(PTPParams* params,unsigned handle);
uint16_t ptp_get_object_data(PTPParams* params, unsigned handle, char *buffer, 
	unsigned offset, unsigned size,  unsigned *act_len);
uint16_t ptp_get_partial_object(PTPParams* params, unsigned handle, char *buffer, 
	unsigned offset, unsigned size,  unsigned *act_len);
uint16_t ptp_get_object_res(PTPParams* params, unsigned handle);

uint16_t ptp_ek_get_labelcategorybookinfo (PTPParams* params, 
                                    PTPKodakLabelCategoryBookInfo * labelinfo);

#endif /* __PTP_H__ */

⌨️ 快捷键说明

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