Files
kunlun/driver/inc/usb_dev.h
2024-09-28 14:24:04 +08:00

172 lines
4.5 KiB
C

/****************************************************************************
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
be copied by any method or incorporated into another program without
the express written consent of Aerospace C.Power. This Information or any portion
thereof remains the property of Aerospace C.Power. The Information contained herein
is believed to be accurate and Aerospace C.Power assumes no responsibility or
liability for its use in any way and conveys no license or title under
any patent or copyright and makes no representation or warranty that this
Information is free from patent or copyright infringement.
****************************************************************************/
#ifndef _USB_DEV_H
#define _USB_DEV_H
#ifdef __cplusplus
extern "C" {
#endif
#define USB_ERR_NOTOPEN 3
#define USB_ERR_BUF 4
#define USB_ERR_NOTFREE 5
#define USB_ERR_NOCONF 11
#define USB_ERR_DISCONN 12
#define USB_ERR_REATTACHED 13
#define USB_ERR_CLOSED 14
#define USB_ERR_TIMEOUT 0xff
#define EP0 0
#define EP1 1
enum PID_TYPE{P_SETUP=0x01,P_IN=0x02,P_OUT=0x04,P_SOF=0x08,P_DATA0=0x10,P_DATA1=0x20};
static const uint8_t DESCRIPTOR_DEVICE[18]=
{
18,//length
1,//descriptor type:device
0,//version l
2,//version h
0,//class
0,//sub-class,offset 5
0,//protocol
64,//ep0 packet size
0x34,//vendor l
0x12,//vendor h
0x01,//0x01,product l,offset 10
0x01,//product h
0x01,//release l,01-first version,101-revised version
0x01,//release h
1,//manufacturer string index
2,//product string index,offset 15
0,//serial number string index
1//configuration numbers
};
static const uint8_t DESCRIPTOR_CONFIG[46]=
{
//config define
9,//length
2,//descriptor type:config
46,//total length,l
0,//total length,h
1,//interface numbers
1,//configuration index,offset 5
4,//string descriptor index for this config
//--Attributes: D7-reserved, set to 1. (USB 1.0 Bus Powered)
// D6-self powered, D5-remote wakeup, D4..0-reserved to 0
0xc0,
3,//maximum power drawn from bus in 2 mA units
//interface define
9,//length
4,//descriptor type:interface,offset 10
0,//interface index
0,//alternate setting
2,//endpoint numbers excluding ep0
0xFF,//interface class,0x08:mass storage,0xff:vendor specific
0x00,//interface subclass,0x06,offset 15
0x00,//interface protocol,0x50,
0,//string descriptor index for this interface
//endpoint1 define,used as BULK-IN
7,//length
5,//descriptor type:endpoint
0x81,//endpoint address,D7 is direction,0:OUT,1:IN,offset 20
2,//attribute,0-Control,1-Isochronous,2-Bulk,3-Interrupt
64,//max packet size,l
0,//max packet size,h
0,//polling Interval(ms)
//Endpoint2 define,used as BULK-OUT
7,//length,offset 25
5,//descriptor type:endpoint
0x01,//endpoint address,D7 is direction,0:OUT,1:IN
0x02,//attribute,0-Control,1-Isochronous,2-Bulk,3-Interrupt
64,//max packet size,l
0,//max packet size,h,offset 30
0,//polling Interval(ms)
//Endpoint3 define,used as BULK-OUT
7,//length
5,//descriptor type:endpoint
0x82,//endpoint address,D7 is direction,0:OUT,1:IN
0x02,//attribute,0-Control,1-Isochronous,2-Bulk,3-Interrupt,offset 35
64,//max packet size,l
0,//max packet size,h
0,//polling Interval(ms)
//Endpoint4 define,used as BULK-IN
7,//length
5,//descriptor type:endpoint,offset 40
0x02,//endpoint address,D7 is direction,0:OUT,1:IN
0x02,//attribute,0-Control,1-Isochronous,2-Bulk,3-Interrupt
64,//max packet size,l
0,//max packet size,h,offset 30
0,//polling Interval(ms),offset 45
};
static const uint8_t DESCRIPTOR_STR_0[4]=//string descriptor of LANGUAGE_ID
{
4,
3,
0x09,0x04
};
static const uint8_t DESCRIPTOR_STR_1[8]=//string descriptor of manufacturer
{
8,
3,
'P',0,
'A',0,
'X',0
};
static const uint8_t DESCRIPTOR_STR_2[24]=//string descriptor of product
{
24,//length
3,//descriptor type:string
'S',0,
'8',0,
'0',0,
' ',0,
' ',0,
'W',0,
'U',0,
'-',0,
'-',0,
'Q',0,
'I',0
};
static const uint8_t DESCRIPTOR_STR_4[8]=//string descriptor of config
{
8,
3,
'#',0,
'0',0,
'2',0
};
uint8_t UsbDevOpen(uint8_t EnableFullSpeed);
uint8_t UsbDevStop(void);
#ifdef __cplusplus
}
#endif
#endif