172 lines
4.5 KiB
C
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
|
|
|
|
|