Description
Source
Call Graph
Start Line: 922
char USBD_Read(unsigned char bEndpoint, void *pData, unsigned int dLength, TransferCallback fCallback, void *pArg)
{
Endpoint *pEndpoint = &(endpoints[bEndpoint]);
Transfer *pTransfer = &(pEndpoint->transfer);
// Return if the endpoint is not in IDLE state
if (pEndpoint->state != UDP_ENDPOINT_IDLE) {
return USBD_STATUS_LOCKED;
}
// Endpoint enters Receiving state
pEndpoint->state = UDP_ENDPOINT_RECEIVING;
TRACE_DEBUG_WP("Read%d(%d) ", bEndpoint, dLength);
// Set the transfer descriptor
pTransfer->pData = pData;
pTransfer->remaining = dLength;
pTransfer->buffered = 0;
pTransfer->transferred = 0;
pTransfer->fCallback = fCallback;
pTransfer->pArgument = pArgument;
// Enable interrupt on endpoint
AT91C_BASE_UDP->UDP_IER = 1 << bEndpoint;
return USBD_STATUS_SUCCESS;
}