usb_queue: Add completion_cb arguments

This commit is contained in:
Ben Gamari
2013-07-03 14:08:46 -04:00
parent f015fd7640
commit bd4e39d379
2 changed files with 11 additions and 5 deletions

View File

@ -131,10 +131,12 @@ static usb_transfer_t* endpoint_pop_transfer(
void usb_transfer_schedule_wait(
const usb_endpoint_t* const endpoint,
void* const data,
const uint32_t maximum_length
const uint32_t maximum_length,
const transfer_completion_cb completion_cb
) {
usb_transfer_t* const transfer = allocate_transfer();
fill_in_transfer(transfer, data, maximum_length);
transfer->completion_cb = completion_cb;
endpoint_add_transfer(endpoint, transfer);
usb_endpoint_schedule_wait(endpoint, &transfer->td);
}
@ -142,11 +144,13 @@ void usb_transfer_schedule_wait(
void usb_transfer_schedule_append(
const usb_endpoint_t* const endpoint,
void* const data,
const uint32_t maximum_length
const uint32_t maximum_length,
const transfer_completion_cb completion_cb
) {
usb_transfer_t* const transfer = allocate_transfer();
uint_fast8_t index = USB_ENDPOINT_INDEX(endpoint->address);
fill_in_transfer(transfer, data, maximum_length);
transfer->completion_cb = completion_cb;
// TODO: disable_interrupts();
usb_transfer_t* tail = endpoint_transfers[index];
for (; tail->next != NULL; tail = tail->next);
@ -158,7 +162,7 @@ void usb_transfer_schedule_append(
void usb_transfer_schedule_ack(
const usb_endpoint_t* const endpoint
) {
usb_transfer_schedule_wait(endpoint, 0, 0);
usb_transfer_schedule_wait(endpoint, 0, 0, NULL);
}
void usb_queue_transfer_complete(usb_endpoint_t* const endpoint)

View File

@ -40,13 +40,15 @@ void usb_endpoint_schedule(
void usb_transfer_schedule_wait(
const usb_endpoint_t* const endpoint,
void* const data,
const uint32_t maximum_length
const uint32_t maximum_length,
const transfer_completion_cb completion_cb
);
void usb_transfer_schedule_append(
const usb_endpoint_t* const endpoint,
void* const data,
const uint32_t maximum_length
const uint32_t maximum_length,
const transfer_completion_cb completion_cb
);
void usb_transfer_schedule_ack(