📄 controlfunc.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 + -