Пример #1
0
void USBD_DataInStage (void) {
  U32 cnt;

  if (USBD_EP0Data.Count > usbd_max_packet0) {
    cnt = usbd_max_packet0;
  } else {
    cnt = USBD_EP0Data.Count;
  }
  if (!cnt) USBD_ZLP = 0;
  cnt = USBD_WriteEP(0x80, USBD_EP0Data.pData, cnt);
  USBD_EP0Data.pData += cnt;
  USBD_EP0Data.Count -= cnt;
}
Пример #2
0
// ---------------------------------------------------------------------------
// Transmit buffer when handling data endpoint IN event (Tx -> Host IN)
static ErrorCode_t USB_EP_In_Handler(USBD_HANDLE_T hUsb, void* data, UINT32 event)
{
    // Exit if not an IN event
    if (event != USB_EVT_IN) return RET_UNHANDLED;

    int epNum = (int)data;
    int core = USB_CORE(hUsb);

    // Exit if buffer empty
    if (ep_in_count[core] == 0) return RET_UNHANDLED;

    // Send buffer
    USBD_WriteEP(hUsb, USB_ENDPOINT_IN(epNum), ep_in_data[core], ep_in_count[core]);
    ep_in_count[core] = 0;

    return RET_OK;
}
Пример #3
0
void USBD_StatusInStage (void) {
  USBD_WriteEP(0x80, NULL, 0);
}