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

📄 osusb.h

📁 一个Linux下的软猫驱动
💻 H
字号:
/* * Octopus / Cadmus2 USB Adaptation Layer for Linux * Written by Marc Boucher <marc@linuxant.com> * * Copyright (c) 2002-2004 Linuxant inc. * All rights reserved. *  * TODO: * 	- Proper locking * 	- DCP support * 	- Cleanup */#ifndef __OSUSB_H#define __OSUSB_H#ifdef __cplusplusextern "C"{#endif#include "usbhalos.h"#include <linux/usb.h>#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,4,18) )#define usb_fill_int_urb	FILL_INT_URB#define usb_fill_bulk_urb	FILL_BULK_URB#define usb_fill_control_urb	FILL_CONTROL_URB#endif#define	MAX_NOTIFY_DATA_PACKET	64#define	MAX_BULK_DATA_PACKET	64#define	MAX_CONTROL_DATA_PACKET	64#if TARGET_HCF_FAMILY#define DATA_PIPE_NUM			4#else#define DATA_PIPE_NUM			2#endif#define INT_PIPE_NUM			1#define MAX_RECEIVE_URB_BUFSIZE	(MAX_BULK_DATA_PACKET*4)#define MAX_SEND_URB_BUFSIZE	(MAX_BULK_DATA_PACKET*4)#define MAX_NOTIFY_URB_BUFSIZE	MAX_NOTIFY_PACKET#define MAX_CONTROL_URB_BUFSIZE	(MAX_BULK_DATA_PACKET*4)#define MAX_DOWNLOAD_URB_BUFSIZE (8*1024)#define MAX_DCP_URB_BUFSIZE		MAX_BULK_DATA_PACKET#if TARGET_HCF_FAMILY#define NUM_RECEIVE_URBS		2#define NUM_SEND_URBS			2#else#define NUM_RECEIVE_URBS		32#define NUM_SEND_URBS			32#endif#define NUM_NOTIFY_URBS			1#define NUM_CONTROL_URBS		2#define NUM_DOWNLOAD_URBS		2#if !defined(URB_ASYNC_UNLINK) && defined(USB_ASYNC_UNLINK)#define URB_ASYNC_UNLINK USB_ASYNC_UNLINK#endiftypedef struct urb *PURB;typedef enum {	ULE_FREE,	ULE_ALLOCATED,	ULE_QUEUED,	ULE_SUBMITTED,	ULE_COMPLETED,	ULE_ABORTED,	ULE_FAILED,	ULE_LAST} URB_LIST_ENTRY_STATE;typedef struct {	__u8 bRequestType;	__u8 bRequest;	__u16 wValue;	__u16 wIndex;	__u16 wLength;} __attribute__ ((packed)) USB_CTRLREQUEST;struct tagUSBOSHAL;typedef struct {	struct list_head entry;	struct list_head queued_entry;	struct tagURB_LIST *ul;	struct tagUSBOSHAL *pUsbOsHal;	URB_LIST_ENTRY_STATE state;	PURB volatile urb;	USB_CTRLREQUEST	devRequest;	PUINT8 bufferPtr;	size_t bufferSize;	PUINT8 userBufferPtr;	size_t userBufferSize;	PVOID userContext;	UINT32	startTime;} URB_LIST_ENTRY, *PURB_LIST_ENTRY;typedef struct tagURB_LIST {	struct list_head urb_list;	struct list_head queued_list;	volatile int count[ULE_LAST];} URB_LIST, *PURB_LIST;//// A structure representing the instance information associated with// this particular device.//typedef struct tagUSBOSHAL {	BOOL			bActive;	BOOL (*cbUsbHalNotificationReceived)	(PVOID hUpper, PUINT8 pDataReceived, unsigned RecvLength) __shimcall__;	void (*cbUsbHalDataReceived)			(PVOID hUpper, PUINT8 pDataReceived, unsigned RecvLength) __shimcall__;	void (*cbUsbHalDataTransmitDone)		(PVOID hUpper, unsigned TxLength) __shimcall__;	void (*cbUsbHalControlTransferDone)		(PVOID hUpper, PVOID userContext, UINT8 Request, UINT16 value, UINT16 index) __shimcall__;#if TARGET_HCF_FAMILY	void (*cbUsbHalDownloadTransmitDone)	(PVOID hUpper) __shimcall__;#endif	HOSEVENT		ControlRequestEvent;	struct usb_device	*pUsbDevice;	struct usb_interface	*pUsbDataInterface;	struct usb_interface	*pUsbCommInterface;	// URBs for 	// data transmit pipe	URB_LIST SendUrbList;	// data receive pipe	URB_LIST RecvUrbList;	// notify pipe	URB_LIST NotifyUrbList;	// control pipe	URB_LIST ControlUrbList;#if TARGET_HCF_FAMILY	// datapump download	URB_LIST DownloadUrbList;#endif#ifdef USE_DCP	// datapump download	URB_LIST DcpUrbList;#endif	int				DataInPipe,					DataOutPipe,					DcpInPipe,#if TARGET_HCF_FAMILY					DownloadPipe,#endif					NotifyPipe;	__u8			NotifyInterval;	HANDLE hUpper; // handle of OS independent portion of the USB HAL	BOOL			UpdateEEPROM;//	BOOL				bPipeResetInProgress;//    int		        ResetAttemptCount;	PVOID				pLastControlData;	size_t				nLastControlSize;	size_t				MaxControlSize;	size_t				MaxNotifySize;} USBOSHAL, *PUSBOSHAL;//It downloads FW including script engine.//The FW starts after been loaded.//Do not need to wait after download.__shimcall__int OsUsbFWDownload (PUSBOSHAL pUsbOsHal);__shimcall__BOOL OsUsbAllocateUrbs (PUSBOSHAL pUsbOsHal);__shimcall__void OsUsbFreeUrbs (PUSBOSHAL pUsbOsHal);#ifdef __cplusplus}#endif#endif /* __OSUSB_H */

⌨️ 快捷键说明

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