usb_queue: Assert that transaction succeeded

This commit is contained in:
Ben Gamari
2013-07-03 16:51:18 -04:00
parent 0d1ea07151
commit eef6a0f056

View File

@ -160,6 +160,13 @@ void usb_queue_transfer_complete(usb_endpoint_t* const endpoint)
{
usb_transfer_t* transfer = endpoint_pop_transfer(endpoint);
unsigned int transferred = transfer->maximum_length - transfer->td.total_bytes;
uint8_t status = transfer->td.total_bytes;
if (status & USB_TD_DTD_TOKEN_STATUS_ACTIVE
|| status & USB_TD_DTD_TOKEN_STATUS_HALTED
|| status & USB_TD_DTD_TOKEN_STATUS_BUFFER_ERROR
|| status & USB_TD_DTD_TOKEN_STATUS_TRANSACTION_ERROR) {
assert(0);
}
if (transfer->completion_cb)
transfer->completion_cb(transfer, transferred);
free_transfer(transfer);