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

📄 usbdriver.h

📁 基于ARM的应用Source6
💻 H
字号:
/*----------------------------------------------------------------------------
 *  Copyright (c) 2001 by National Semiconductor Corporation
 *  National Semiconductor Corporation
 *  2900 Semiconductor Drive
 *  Santa Clara, California 95051
 *
 *  All rights reserved
 *
 *<<<-------------------------------------------------------------------------
 * File Contents:
 *	USBDriver.h
 *
 *  Project: USB Demo Application
 *  Author : Yan Nosovitsky
 *  Date   : Dec 2001
 *----------------------------------------------------------------------->>>*/
#ifndef __USBDRIVER_H__
#define __USBDRIVER_H__

#include "c:/WinDriver/include/windrvr.h"
typedef struct DRIVER_STRUCT
{
    HANDLE              hWD;
    WD_USB_DEVICE_INFO  deviceInfo;
    DWORD               hDevice;
} DRIVER_STRUCT;

typedef struct DRIVER_STRUCT *DRIVER_HANDLE;

enum { DRIVER_DEFAULT_VENDOR_ID  = 0x0400 };
enum { DRIVER_DEFAULT_PRODUCT_ID = 0xC35D };
enum { DRIVER_DEFAULT_CONFIG = 0 };
enum { DRIVER_DEFAULT_INTERFACE = 0 };
enum { DRIVER_DEFAULT_ALTERNATE = 1 };

typedef enum {
	NO_USB_ERROR = 0,
	NO_USB_DEVICE_FOUND,
	FAIL_OPEN_WINDRIVER,
	INCORRECT_WINDRIVER_VER,
	FAIL_OPEN_USB_DEVICE,
	DEVICE_WAS_DISCONNECTED
}USBErrorCode;

class USBDriver
{
public:
	~USBDriver();

	
	
	CString GetErrorDescriptor();
	void ChangeConfig(int configNum);
	void ChangeInterface(int interfaceNum);
	bool CheckPipe(USB_PIPE_TYPE pipeType, int pipeNum, WD_USB_PIPE_INFO *pipeInfo);
	int  WorkWithPipe(int pipeAddress, BYTE *buffer, int size, BOOL isRead);
	int  WorkWithZeroPipe( BYTE setupPacket[8], BYTE *buffer, int size, BOOL isRead);
	void StopTransferPipe(int pipeAddress);
	void ResetPipe(int pipeAddress);
	void IncreaseUSBUsers() { numOfUSBUsers++ ;}
	void DecreaseUSBUsers() { numOfUSBUsers-- ;}
	int  CurUSBUsers()		{ return numOfUSBUsers; }
	void CnangeBulkOutTestStatus(bool bulkStatus) { bulkOutTestRun = bulkStatus; }
	bool IsBulkOutTestRun()		{ return bulkOutTestRun; }
	void CnangeIntTestStatus(bool intStatus) { intTestRun = intStatus; }
	bool IsIntTestRun()	{ return intTestRun; }
	bool IsUSBDriverHaveError() { return (errorCode != NO_USB_ERROR); }
	void CloseUSBDriver();

	static USBDriver* GetUSBDriver();

private:
	USBDriver();
	static USBDriver* curUSBDriver;
	bool OpenUSBDriver(DWORD uniqueId, DWORD configIndex, DWORD dwInterface, DWORD dwAlternate);
	
	bool USB_Get_WD_handle(HANDLE *phWD);
	void RegisterWinDriver();
	
	int uniqueId;
	WD_USB_DEVICE_GENERAL_INFO deviceGeneralInfo;
	int currentConfig;
	DRIVER_HANDLE driverHandle;
	int numOfInterface;
	int currentInterface;
	int numOfUSBUsers;
	bool bulkOutTestRun;
	bool intTestRun;
	USBErrorCode errorCode;
};


#endif

⌨️ 快捷键说明

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