24static volatile uint8_t *g_usbd_CtrlInPointer = 0;
25static volatile uint32_t g_usbd_CtrlInSize = 0;
26static volatile uint8_t *g_usbd_CtrlOutPointer = 0;
27static volatile uint32_t g_usbd_CtrlOutSize = 0;
28static volatile uint32_t g_usbd_CtrlOutSizeLimit = 0;
29static volatile uint32_t g_usbd_UsbAddr = 0;
30static volatile uint32_t g_usbd_CtrlMaxPktSize = 8;
31static volatile uint32_t g_usbd_UsbAltInterface = 0;
32static volatile uint32_t g_usbd_CtrlOutToggle = 0;
33static volatile uint8_t g_usbd_CtrlInZeroFlag = 0ul;
34volatile uint32_t g_usbd_UsbConfig = 0;
112 g_usbd_CtrlOutToggle = 0;
162 g_usbd_CtrlInZeroFlag = (uint8_t)0ul;
173 u32Len =
Minimum(u32Len, LEN_DEVICE);
181 uint32_t u32TotalLen;
186 if (u32Len > u32TotalLen)
188 u32Len = u32TotalLen;
189 if ((u32Len % g_usbd_CtrlMaxPktSize) == 0ul)
191 g_usbd_CtrlInZeroFlag = (uint8_t)1ul;
203 uint32_t u32ConfigDescOffset;
204 u32Len =
Minimum(u32Len, LEN_HID);
216 if ((u32Len % g_usbd_CtrlMaxPktSize) == 0ul)
218 g_usbd_CtrlInZeroFlag = (uint8_t)1ul;
234 if ((u32Len % g_usbd_CtrlMaxPktSize) == 0ul)
236 g_usbd_CtrlInZeroFlag = (uint8_t)1ul;
270 g_usbd_CtrlInPointer = 0;
271 g_usbd_CtrlInSize = 0;
278 case GET_CONFIGURATION:
383 case SET_CONFIGURATION:
390 if (g_usbd_UsbConfig == 0)
455 if(u32Size > g_usbd_CtrlMaxPktSize)
458 g_usbd_CtrlInPointer = pu8Buf + g_usbd_CtrlMaxPktSize;
459 g_usbd_CtrlInSize = u32Size - g_usbd_CtrlMaxPktSize;
467 g_usbd_CtrlInPointer = 0;
468 g_usbd_CtrlInSize = 0;
486 if(g_usbd_CtrlInSize)
489 if(g_usbd_CtrlInSize > g_usbd_CtrlMaxPktSize)
494 g_usbd_CtrlInPointer += g_usbd_CtrlMaxPktSize;
495 g_usbd_CtrlInSize -= g_usbd_CtrlMaxPktSize;
502 g_usbd_CtrlInPointer = 0;
503 g_usbd_CtrlInSize = 0;
518 if(g_usbd_CtrlInZeroFlag)
521 g_usbd_CtrlInZeroFlag = (uint8_t)0ul;
538 g_usbd_CtrlOutPointer = pu8Buf;
539 g_usbd_CtrlOutSize = 0;
540 g_usbd_CtrlOutSizeLimit = u32Size;
560 if(g_usbd_CtrlOutSize < g_usbd_CtrlOutSizeLimit)
564 g_usbd_CtrlOutPointer += u32Size;
565 g_usbd_CtrlOutSize += u32Size;
588 g_usbd_CtrlInPointer = 0;
589 g_usbd_CtrlInSize = 0;
590 g_usbd_CtrlOutPointer = 0;
591 g_usbd_CtrlOutSize = 0;
592 g_usbd_CtrlOutSizeLimit = 0;
Nano100 series peripheral access layer header file. This file contains all the peripheral register's ...
#define USBD_EPSTS_EPSTS1_Msk
#define USBD_CFG_DSQ_SYNC_Msk
#define USBD_CFG_SSTALL_Msk
#define USBD_PDMA_BYTEM_Msk
int32_t CLK_SysTickDelay(uint32_t us)
This function execute delay function.
#define M8(addr)
Get a 8-bit unsigned value from specified address.
#define USBD
Pointer to USBD register structure.
#define USBD_GET_EP_BUF_ADDR(ep)
Get buffer for USB endpoint.
void USBD_LockEpStall(uint32_t u32EpBitmap)
void USBD_StandardRequest(void)
Process USB standard request.
#define USBD_SET_SE0()
Force USB PHY Transceiver to Drive SE0.
#define USBD_GET_PAYLOAD_LEN(ep)
Get USB payload size (OUT data)
uint32_t * gu32ConfigHidDescIdx
#define USBD_SET_DATA1(ep)
Set USB data1 token.
volatile uint8_t g_usbd_RemoteWakeupEn
void USBD_PrepareCtrlOut(uint8_t *pu8Buf, uint32_t u32Size)
Prepare Control OUT transaction.
static __INLINE void USBD_SetStall(uint8_t epnum)
Set USB endpoint stall state.
#define USBD_GET_ADDR()
Get USBD address.
uint8_t ** gu8HidReportDesc
uint32_t * gu32HidReportSize
static __INLINE uint32_t USBD_GetStall(uint8_t epnum)
Get USB endpoint stall state.
#define USBD_SET_ADDR(addr)
Set USBD address.
void USBD_GetSetupPacket(uint8_t *buf)
Get Setup Packet.
#define USBD_CLR_SE0()
Release SE0.
void USBD_Start(void)
USBD Start.
void USBD_SwReset(void)
Clear all software flags.
void USBD_PrepareCtrlIn(uint8_t *pu8Buf, uint32_t u32Size)
Prepare Control IN transaction.
void USBD_CtrlIn(void)
Start Control IN transfer.
#define Minimum(a, b)
Compare two input numbers and return minimum one.
void USBD_SetConfigCallback(SET_CONFIG_CB pfnSetConfigCallback)
The callback function which called when get SET CONFIGURATION request.
static __INLINE void USBD_MemCopy(uint8_t *dest, uint8_t *src, int32_t size)
To support byte access between USB SRAM and system SRAM.
#define USBD_SET_EP_STALL(ep)
Set USB endpoint stall state.
void USBD_SetVendorRequest(VENDOR_REQ pfnVendorReq)
USBD Set Vendor Request.
void USBD_ProcessSetupPacket(void)
Process Setup Packet.
void USBD_Open(S_USBD_INFO_T *param, CLASS_REQ pfnClassReq, SET_INTERFACE_REQ pfnSetInterface)
USBD Initial, Enable clock and reset USB.
void(* SET_CONFIG_CB)(void)
void(* SET_INTERFACE_REQ)(uint32_t u32AltInterface)
void USBD_CtrlOut(void)
Start Control OUT transfer.
#define USBD_ENABLE_INT(intr)
Enable USBD interrupt.
#define USBD_SET_PAYLOAD_LEN(ep, size)
Set USB payload size (IN data)
#define NULL
NULL pointer.
S_USBD_INFO_T * g_usbd_sInfo
CLASS_REQ g_usbd_pfnClassRequest
void USBD_GetDescriptor(void)
Get Descriptor request.
SET_INTERFACE_REQ g_usbd_pfnSetInterface
uint32_t g_u32EpStallLock
uint8_t g_usbd_SetupPacket[8]
SET_CONFIG_CB g_usbd_pfnSetConfigCallback
VENDOR_REQ g_usbd_pfnVendorRequest