📄 usb.h
字号:
/*
* File: usb.h
* Purpose: USB Header File
*/
#ifndef __USB_H__
#define __USB_H__
#include "usb_cfgbuf.h"
#include "usb_desc.h"
/********************************************************************/
#define swap16(x) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))
#define swap32(x) ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24))
/********************************************************************/
#define STARTOFDESC 0x00000000
#define STARTOFSTRD 0x0200
/* Default size to malloc() when needed */
#define BUFFER_SIZE 1024
/* Total number of EPs in this USB core */
#define NUM_ENDPOINTS 4
/* Depth of the FIFOs in packet lengths (Must be at */
/* least 2 for non-isochronous endpoints) */
#define FIFO_DEPTH 4
/* Definitions for Device Config Change events */
#define CONFIGURATION_CHG 1
#define INTERFACE_CHG 2
#define ADDRESS_CHG 4
/* Definitions for Bus Change events */
#define SUSPEND 1
#define RESUME 2
#define ENABLE_WAKEUP 4
#define RESET 8
/* Definitions for Transfer Status */
#define SUCCESS 1
#define OVERFLOW_ERROR 2
#define MALLOC_ERROR 4
/* Definition for LED Command */
#define MCF5275_CMD_LED 0x00000001
/********************************************************************/
/* Structure for storing IN and OUT transfer data */
typedef struct {
uint8 *start; /* Starting address for buffer */
uint16 position; /* Offset pointer within buffer */
uint16 length; /* Length of the buffer in bytes */
uint8 free; /* Was this buffer malloc()ed? */
} USB_BUFFER;
/* USB Endpoint State Info */
typedef struct {
uint32 fifo_length; /* Length of FIFO */
uint32 in_fifo_start; /* Starting address of IN-FIFO */
uint32 out_fifo_start; /* Starting address of OUT-FIFO */
uint32 packet_size; /* Maximum Packet Size */
uint8 ttype; /* Transfer Type */
uint8 dir; /* Direction of transfer */
USB_BUFFER buffer; /* Data Buffer for IN and OUT transfers */
} USB_EP_STATE;
/********************************************************************
* Standardized Function Prototypes
*********************************************************************/
/*
* The following functions are provided in usb.c
*/
void usb_setup(void);
void usb_init(void);
void usb_reset(void);
void usb_handler (void);
void usb_ep0_handler (void);
void usb_ep1_handler (void);
void usb_ep2_handler (void);
void usb_ep3_handler (void);
/*
* These are old functions provided in usb.c
*/
void usb_isr_init(void);
void usb_fifo_init(void);
void usb_handle_device_request(void);
void usb_in_service(uint32, uint32);
uint8* usb_get_desc(int8, int8, int8, int8);
void usb_ep_tx_done(uint32 epnum);
void usb_devreq_done(uint32 error);
/********************************************************************/
#endif /* __USB_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -