/** * Reads incoming data on an USB endpoint This methods sets the transfer * descriptor and activate the endpoint interrupt. The actual transfer is * then carried out by the endpoint interrupt handler. The Read operation * finishes either when the buffer is full, or a short packet (inferior to * endpoint maximum size) is received. * * *The buffer must be kept allocated until the transfer is finished*. * \param bEndpoint Endpoint number. * \param pData Pointer to a data buffer. * \param dLength Size of the data buffer in bytes. * \param fCallback Optional end-of-transfer callback function. * \param pArgument Optional argument to the callback function. * \return USBD_STATUS_SUCCESS if the read operation has been started; * otherwise, the corresponding error code. */ uint8_t USBD_Read(uint8_t bEndpoint, void *pData, uint32_t dLength, TransferCallback fCallback, void *pArgument) { USBD_HAL_SetTransferCallback(bEndpoint, fCallback, pArgument); return USBD_HAL_Read(bEndpoint, pData, dLength); }
/** * Reads incoming data on an USB endpoint This methods sets the transfer * descriptor and activate the endpoint interrupt. The actual transfer is * then carried out by the endpoint interrupt handler. The Read operation * finishes either when the buffer is full, or a short packet (inferior to * endpoint maximum size) is received. * * *The buffer must be kept allocated until the transfer is finished*. * \param bEndpoint Endpoint number. * \param pData Pointer to a data buffer. * \param dLength Size of the data buffer in bytes. * \param fCallback Optional end-of-transfer callback function. * \param pArgument Optional argument to the callback function. * \return USBD_STATUS_SUCCESS if the read operation has been started; * otherwise, the corresponding error code. */ uint8_t USBD_Read(uint8_t bEndpoint, void *pData, uint32_t dLength, TransferCallback fCallback, void *pArgument) { //USBD_HAL_SetTransferCallback(bEndpoint, fCallback, pArgument); if(USBD_HAL_SetTransferCallback(bEndpoint, fCallback, pArgument) == USBD_STATUS_LOCKED) { return USBD_STATUS_LOCKED; } return USBD_HAL_Read(bEndpoint, pData, dLength); }