Exemplo n.º 1
0
void USBD_DataOutStage (void) {
  U32 cnt;

  cnt = USBD_ReadEP(0x00, USBD_EP0Data.pData);
  USBD_EP0Data.pData += cnt;
  USBD_EP0Data.Count -= cnt;
}
Exemplo n.º 2
0
// ---------------------------------------------------------------------------
// Receive buffer when handling data endpoint OUT event (Rx <-- Host OUT)
static ErrorCode_t USB_EP_Out_Handler(USBD_HANDLE_T hUsb, void* data, UINT32 event)
{
    int epNum = (int)data;
    int core = USB_CORE(hUsb);
    USB_PACKET64* Packet64;
    USB_CONTROLLER_STATE *State = USB_STATE(core);
    BOOL full;
    UINT32 len;

    // Handle OUT events
    if (State->Queues[epNum] == NULL || State->IsTxQueue[epNum])
        return RET_UNHANDLED;

    switch(event)
    {
        case USB_EVT_OUT_NAK:
            // If we are ready to receive data, send buffer pointer to USB stack
            USBD_ReadReqEP(hUsb, USB_ENDPOINT_OUT(epNum), ep_out_data[core], MAX_EP_SIZE);
            break;

        case USB_EVT_OUT:
            // Read data received via DMA
            len = USBD_ReadEP(hUsb, USB_ENDPOINT_OUT(epNum), ep_out_data[core]) & 0xFFFF;
            if (len > 0)
            {
                // The DMA transfer is complete. Process buffer.
                Packet64 = USB_RxEnqueue(State, epNum, full);
                if (Packet64 != NULL)
                {
                    Packet64->Size = len;
                    memcpy(Packet64->Buffer, ep_out_data[core], Packet64->Size);
                    //Events_Set(SYSTEM_EVENT_FLAG_USB_IN);
                }
                //if (full) USBD_DisableEP(hUsb, USB_ENDPOINT_OUT(epNum));
            }
            break;

        default:
            return RET_UNHANDLED;
    }

    return RET_OK;
}
Exemplo n.º 3
0
void USBD_StatusOutStage (void) {
  USBD_ReadEP(0x00, USBD_EP0Buf);
}
Exemplo n.º 4
0
void USBD_SetupStage (void) {
  USBD_ReadEP(0x00, (U8 *)&USBD_SetupPacket);
}