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

📄 controlfunc.h

📁 杭州利宇泰公司的基于44B0的ARMSys开发板上的大量源代码
💻 H
字号:
/*----------------------------------------------------------------------------
 *  Copyright (c) 2001 by National Semiconductor Corporation
 *  National Semiconductor Corporation
 *  2900 Semiconductor Drive
 *  Santa Clara, California 95051
 *
 *  All rights reserved
 *
 *<<<-------------------------------------------------------------------------
 * File Contents:
 *	ControlFunc.h
 *
 *  Project: USB Demo Application
 *  Author : Yan Nosovitsky
 *  Date   : Dec 2001
 *----------------------------------------------------------------------->>>*/
// ControlFunc.h: interface for the ControlFunc class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_BULKFUNC_H__A677DDD3_055F_11D4_915B_0060972A7504__INCLUDED_)
#define AFX_BULKFUNE_H__A677DDD3_055F_11D4_915B_0060972A7504__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

typedef enum {
	GET_STAUS = 0,
	CLEAR_FEATURE,
	RESERVED,
	SET_FEATURE,
	SET_ADDRESS = 5,
	GET_DESCRIPTOR,
	SET_DESCRIPTOR,
	GET_CONFIGURATION,
	SET_CONFIGURATION,
	GET_INTERFACE,
	SET_INTERFACE,
	SYNCH_FRAME
} StandardRequest;

typedef enum {
	DEV_TO_HOST_STAND_DEV = 0x80,
	DEV_TO_HOST_STAND_INT = 0x81
} RequestType;

typedef struct {
    BYTE	bLength;
    BYTE	bDescriptorType;
    struct {
		BYTE address:4;
		BYTE reserved:3;
		BYTE direction:1;
    } bEndpointAddress;
    BYTE	bmAttributes;
    WORD	wMaxPacketSize;
    BYTE	bInterval;
} USB_endpoint_desc_t;
#define SIZEOF_USB_END_DESC	7

typedef struct {
    BYTE	bLength;
    BYTE	bDescriptorType;
    BYTE	bInterfaceNumber;
    BYTE	bAlternateSetting;
    BYTE	bNumEndpoints;
    BYTE	bInterfaceClass;
    BYTE	bInterfaceSubClass;
    BYTE	bInterfaceProtocol;
    BYTE	iInterface;
} USB_interface_desc_t;
#define SIZEOF_USB_INT_DESC	9

typedef struct {
    BYTE	bLength;
    BYTE	bDescriptorType;
    WORD	bcdUSB;
    BYTE	bDeviceClass;
    BYTE	bDeviceSubClass;
    BYTE	bDeviceProtocol;
    BYTE	bMaxPacketSize;
    WORD	idVendor;
    WORD	idProduct;
    WORD	bcdDevice;
    BYTE	iManufacturer;
    BYTE	iProduct;
    BYTE	iSerialNumber;
    BYTE	bNumConfigs;
} USB_device_desc_t;

typedef struct {
    BYTE	bLength;
    BYTE	bDescriptorType;
    WORD	wTotalLength;
    BYTE	bNumInterfaces;
    BYTE	bConfigurationValue;
    BYTE	iConfiguration;
    BYTE	bmAttributes;
    BYTE	MaxPower;
} USB_config_desc_t;

#define SIZEOF_USB_CONF_DESC	9
typedef struct {
    BYTE	bLength;
    BYTE	bDescriptorType;
    char	bstring;
} USB_string_desc_t;

class ControlFunc  
{
public:
	ControlFunc();
	~ControlFunc();

	static BOOL SendSetupPacketOut(BYTE request, WORD value, WORD index, WORD length);
	static BOOL SendSetupPacketIn(BYTE request, WORD value, WORD index, WORD length, BYTE *buffer);

	int ProcessStandardRequest(BYTE reqType, BYTE request, WORD value, WORD index, WORD length, BYTE *buffer);
	

private:
	
	static void BuildSetup(BYTE *setup, BYTE reqType, BYTE request, WORD value, WORD index, WORD length);


};

#endif // !defined(AFX_USERINTERFACE_H__A677DDD3_055F_11D4_915B_0060972A7504__INCLUDED_)

⌨️ 快捷键说明

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