#ifndef  _USB_TABLE_H_
#define  _USB_TABLE_H_


#include "USBDEF.h"


typedef struct
{
    USB_DEVICE_DESCRIPTOR       dev_dscr;
    USB_CONFIG_DESCRIPTOR       config_dscr;
    USB_INTERFACE_DESCRIPTOR    infterface_dscr;
    USB_ENDPOINT_DESCRIPTOR     endpoint3_dscr;
    USB_ENDPOINT_DESCRIPTOR     endpoint4_dscr;
    uint8_t*                    pString_dscr_0;
    uint8_t*                    pString_dscr_1;
    uint8_t*                    pString_dscr_2;
    uint8_t*                    pString_dscr_3;
}USB_ENUM_ALL_DESCRIPTORS;


//*******************************************************************************************
//  USB Tables
//*******************************************************************************************
#define USB_DSCR_INTERFACE_NUM          1
#define USB_DSCR_ENDPOINT_NUM           2

#define USB_DSCR_ENDPOINT_TOTAL_LEN     (USB_DSCR_LEN_ENDPOINT * USB_DSCR_ENDPOINT_NUM)
#define USB_DSCR_INTERFACE_TOTAL_LEN    (USB_DSCR_LEN_INTERFACE * USB_DSCR_INTERFACE_NUM)
#define USB_DSCR_CONFIG_ALL_LEN         (USB_DSCR_LEN_CONFIG + USB_DSCR_INTERFACE_TOTAL_LEN + USB_DSCR_ENDPOINT_TOTAL_LEN)


#define USB_DSCR_BULK_IN_ENDPOINT         6
#define USB_DSCR_BULK_OUT_ENDPOINT        7
#define USB_DSCR_INTERRUPT_IN_ENDPOINT    3
#define USB_DSCR_INTERRUPT_OUT_ENDPOINT   3
#define USB_DSCR_ISO_IN_ENDPOINT          3
#define USB_DSCR_ISO_OUT_ENDPOINT         3

extern uint8_t  g_UsbStringDscrBuff0[];
extern uint8_t  g_UsbStringDscrBuff1[];
extern uint8_t  g_UsbStringDscrBuff2[];
extern uint8_t  g_UsbStringDscrBuff3[];

extern USB_ENUM_ALL_DESCRIPTORS g_usb_all_dscr;

//*******************************************************************************************
//  UMS Tables
//*******************************************************************************************

#endif

