📄 usb.h
字号:
/****************************************************************
* MT View Silicon Tech. Inc.
*
* Copyright 2007, MT View Silicon Tech. Inc., ShangHai, China
* All rights reserved.
*
*
* Filename: usb.h
*
* Programmer: Grey
*
* Created: 01/xx/2008
*
* Description: usb driver head file
*
*
*****************************************************************/
#ifndef __USB_H__
#define __USB_H__
#include "hcd.h"
/* define descriptor source */
#define MAX_USB_BUS_NUM 1 /* support max 1 usb bus */
#define MAX_USB_DEV_NUM 1 /* support max 1 device, not include root hub */
#define MAX_DEV_CONFIG_NUM 2 /* support max 2 config for each device */
#define MAX_CONFIG_INTERFACE_NUM 2 /* support max 2 interface for each configuration */
#define MAX_INTERFACE_ENDPOINT_NUM 4 /* support max 4 endpoint for each interface */
#define TOTAL_USB_BUS_NUM (MAX_USB_BUS_NUM)
#define TOTAL_USB_DEV_NUM (TOTAL_USB_BUS_NUM * MAX_USB_DEV_NUM)
#define TOTAL_USB_CONFIG_NUM (TOTAL_USB_DEV_NUM * MAX_DEV_CONFIG_NUM)
#define TOTAL_USB_INTERFACE_NUM (TOTAL_USB_CONFIG_NUM * MAX_CONFIG_INTERFACE_NUM)
#define TOTAL_USB_ENDPOINT_NUM (TOTAL_USB_INTERFACE_NUM * MAX_INTERFACE_ENDPOINT_NUM)
/*
* USB bus control structure
*/
typedef struct _USB_BUS
{
VOID *HcPriv;
BYTE UsbDevAddressMap;
BYTE Set;
}USB_BUS;
/*
* USB endpoint structure
*/
typedef struct _USB_ENDPOINT
{
USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
BYTE Set;
}USB_ENDPOINT;
/*
* USB interface structure
*/
typedef struct _USB_INTERFACE
{
USB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
USB_ENDPOINT *Endpoint[MAX_INTERFACE_ENDPOINT_NUM];
VOID *FunctionDevice;
VOID (*CloseFunctionDevice)(VOID *func);
BYTE Set;
}USB_INTERFACE;
/*
* USB configurate structure
*/
typedef struct _USB_CONFIG
{
USB_CONFIG_DESCRIPTOR ConfigDescriptor;
USB_INTERFACE *Interface[MAX_CONFIG_INTERFACE_NUM];
USB_INTERFACE *ActInterface;
BYTE Set;
}USB_CONFIG;
/*
* USB device control structure
*/
typedef struct _USB_DEVICE
{
BYTE DevAddress; /* function device number */
USB_DEVICE_SPEED Speed; /* device connection speed */
USB_DEVICE_DESCRIPTOR DeviceDescriptor;
USB_CONFIG *Config[MAX_DEV_CONFIG_NUM];
USB_CONFIG *ActConfig;
USB_BUS *Usb;
DWORD PipeCtrlIn;
DWORD PipeCtrlOut;
BYTE Set;
}USB_DEVICE;
/*----------------------------USB allocate source---------------------------*/
/*
* Allocate usb endpoint source
* Valid endpoint index from 0 to 31, support 32 endpoints.
*/
extern USB_ENDPOINT* /* Return: success return endpoint structure pointer, else return NULL */
AllocUsbEndpoint(VOID);
/*
* Free usb endpoint source
*/
extern VOID
FreeUsbEndpoint(
USB_ENDPOINT *endpoint /* Input: endpoint pointer */
);
/*
* Allocate usb interface source
*/
extern USB_INTERFACE* /* Return: success return interface structure pointer, else return NULL */
AllocUsbInterface(VOID);
/*
* Free usb interface source
* Before free this interface, endpoints of this interface will be free first.
*/
extern VOID
FreeUsbInterface(
USB_INTERFACE *Interface /* Input: interface structure pointer */
);
/*
* Allocate usb configuration source
*/
extern USB_CONFIG* /* Return: success return config structure pointer, else return NULL */
AllocUsbConfig(VOID);
/*
* Free usb configuration source
* Before free this configuration, interfaces of this configuration will be free first.
*/
extern VOID
FreeUsbConfig(
USB_CONFIG *config /* Input: config structure pointer */
);
/*
* Allocate usb device source
*/
extern USB_DEVICE* /* Return: success return VOID* of device structure, else return NULL */
AllocUsbDevice(VOID);
/*
* Free usb device source
* Before free this device, configuration of this device will be free first.
*/
extern VOID
FreeUsbDevice(
USB_DEVICE *device /* Input: VOID* of device structure */
);
/*
* Allocate usb bus source
*/
extern VOID* /* Return: success return VOID* of usb structure, else return NULL */
AllocUsbBus(VOID);
/*
* Free usb bus source
* Before free this usb bus, hc of this usb bus will be free first.
*/
extern VOID
FreeUsbBus(
VOID *usbpriv /* Input: VOID* of usb structure */
);
/*---------------------------------------------------------------------------*/
/*---------------------------USB control pipe--------------------------------*/
/*
* USB control transfer massage operation
* Reference to chapter 9 of USB2.0 spec for the standard USB request
*/
extern BYTE /* Return: usb operation error code */
UsbControlMsg(
USB_DEVICE *device, /* Input: usb device structure pointer */
DWORD pipe, /* usb control pipe define */
BYTE request, /* request number */
BYTE requestType, /* request type */
WORD value, /* request value */
WORD index, /* request index */
WORD size, /* request size */
VOID *dat /* request data buffer pointer */
);
/*
* Protocol get status
*/
extern BYTE /* Return: usb operation error code */
UsbGetStatus(
USB_DEVICE *device, /* Input: usb device structure pointer */
BYTE type, /* get status request type information */
BYTE target, /* target number */
VOID *dat /* status data buffer */
);
/*
* Protocol clear endpoint stall
* This function use clear feature request, only clear endpoint stall.
*/
extern BYTE /* Return: usb operation error code */
UsbClearHalt(
USB_DEVICE *device, /* Input: usb device structure pointer */
BYTE pipe /* endpoint pipe */
);
/*
* Protocol set usb device address
*/
extern BYTE /* Return: usb operation error code */
UsbSetAddress(
USB_DEVICE *device /* Input: usb device structure pointer */
);
/*
* Protocol get usb device standard configuration descriptor
* USB get configuration descriptor
*/
extern BYTE /* Return: usb operation error code */
UsbGetDescriptor(
USB_DEVICE *device, /* Input: usb device structure pointer */
BYTE type, /* descriptor type */
BYTE index, /* descriptor index */
VOID *buf, /* descriptor data buffer */
WORD size /* descriptor size */
);
/*
* Protocol get usb device string descriptor
*/
extern BYTE /* Return: usb operation error code */
UsbGetString(
USB_DEVICE *device, /* Input: usb device structure pointer */
WORD langid, /* language ID */
BYTE index, /* string descriptor index */
VOID *buf, /* descriptor receive buffer */
WORD size /* descriptor length */
);
/*
* Protocol get usb device standard device descriptor
*/
extern BYTE /* Return: usb operation error code */
UsbGetDeviceDescriptor(
USB_DEVICE *device /* Input: usb device structure pointer */
);
/*
* Protocol set usb device configuration
*/
extern BYTE /* Return: usb operation error code */
UsbSetConfiguration(
USB_DEVICE *device, /* Input: usb device structure pointer */
BYTE configuration /* active configuration number for this device */
);
/*
* Protocol set usb device interface
*/
extern BYTE /* Return: usb operation error code */
UstSetInterface(
USB_DEVICE *device, /* Input: usb device structure pointer */
BYTE interface,
BYTE alternate
);
/*
* Start a usb device
*/
extern BYTE /* Return: usb operation error code */
UsbStartDevice(
USB_DEVICE *device, /* Input: usb device structure pointer */
USB_BUS *usb /* usb bus structure pointer */
);
/*
* Set device configuration
*/
extern BYTE /* Return: usb operation error code */
UsbSetDeviceConfig(
USB_DEVICE *device, /* Input: usb device structure pointer */
USB_CONFIG *config, /* usb configuration structure pointer */
USB_INTERFACE *interface /* usb interface structure pointer */
);
/*---------------------------------------------------------------------------*/
/*--------------------------USB root hub interface---------------------------*/
/*
* Get usb root hub port status
*/
extern DWORD /* Return: root hub port status map */
UstGetRootHubPortStatus(
USB_BUS *usb, /* Input: usb bus structure pointer */
BYTE portNum /* root hub port number */
);
/*
* Usb enable root hub port
*/
extern BOOL /* Return: success return 1, else return 0 */
UsbEnableRootHubPort(
USB_BUS *usb, /* Input: usb bus structure pointer */
BYTE portNum /* root hub port number */
);
/*---------------------------------------------------------------------------*/
/*------------------------------USB init-------------------------------*/
/*
* Open usb and init it
*/
extern BYTE /* Return: usb operation error code */
OpenUsb(
VOID *usbpriv /* Input: VOID* of usb structure */
);
/*----------------------------------------------------------------------*/
/*----------------------------USB bus control---------------------------*/
/*
* Reset usb bus
*/
extern VOID
ResetUsb(
USB_BUS *usb /* Input: usb bus structure pointer */
);
/*
* Suspend usb bus
*/
extern VOID
SuspendUsb(
USB_BUS *usb /* Input: usb bus structure pointer */
);
/*
* Resume usb bus
*/
extern VOID
ResumeUsb(
USB_BUS *usb /* Input: usb bus structure pointer */
);
/*-----------------------------------------------------------------------*/
/*----------------------------USB bulk pipe---------------------------*/
/*
* USB bulk transfer massage operation
* This is the interface for device bulk transfer
*/
extern BYTE /* Return: usb operation error code */
UsbBulkMsg(
USB_DEVICE *device, /* Input: usb device structure pointer */
DWORD pipe, /* usb bulk pipe define */
VOID *dat, /* bulk transfer data buffer pointer */
WORD length, /* bulk transfer data length */
BOOL isUseDMA, /* use DMA set 1, else set 0 */
WORD *actualLength /* Output: actual transfer data length */
);
/*-----------------------------------------------------------------------*/
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -