usb_queue: Add completion_cb arguments
This commit is contained in:
@ -131,10 +131,12 @@ static usb_transfer_t* endpoint_pop_transfer(
|
|||||||
void usb_transfer_schedule_wait(
|
void usb_transfer_schedule_wait(
|
||||||
const usb_endpoint_t* const endpoint,
|
const usb_endpoint_t* const endpoint,
|
||||||
void* const data,
|
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();
|
usb_transfer_t* const transfer = allocate_transfer();
|
||||||
fill_in_transfer(transfer, data, maximum_length);
|
fill_in_transfer(transfer, data, maximum_length);
|
||||||
|
transfer->completion_cb = completion_cb;
|
||||||
endpoint_add_transfer(endpoint, transfer);
|
endpoint_add_transfer(endpoint, transfer);
|
||||||
usb_endpoint_schedule_wait(endpoint, &transfer->td);
|
usb_endpoint_schedule_wait(endpoint, &transfer->td);
|
||||||
}
|
}
|
||||||
@ -142,11 +144,13 @@ void usb_transfer_schedule_wait(
|
|||||||
void usb_transfer_schedule_append(
|
void usb_transfer_schedule_append(
|
||||||
const usb_endpoint_t* const endpoint,
|
const usb_endpoint_t* const endpoint,
|
||||||
void* const data,
|
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();
|
usb_transfer_t* const transfer = allocate_transfer();
|
||||||
uint_fast8_t index = USB_ENDPOINT_INDEX(endpoint->address);
|
uint_fast8_t index = USB_ENDPOINT_INDEX(endpoint->address);
|
||||||
fill_in_transfer(transfer, data, maximum_length);
|
fill_in_transfer(transfer, data, maximum_length);
|
||||||
|
transfer->completion_cb = completion_cb;
|
||||||
// TODO: disable_interrupts();
|
// TODO: disable_interrupts();
|
||||||
usb_transfer_t* tail = endpoint_transfers[index];
|
usb_transfer_t* tail = endpoint_transfers[index];
|
||||||
for (; tail->next != NULL; tail = tail->next);
|
for (; tail->next != NULL; tail = tail->next);
|
||||||
@ -158,7 +162,7 @@ void usb_transfer_schedule_append(
|
|||||||
void usb_transfer_schedule_ack(
|
void usb_transfer_schedule_ack(
|
||||||
const usb_endpoint_t* const endpoint
|
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)
|
void usb_queue_transfer_complete(usb_endpoint_t* const endpoint)
|
||||||
|
@ -40,13 +40,15 @@ void usb_endpoint_schedule(
|
|||||||
void usb_transfer_schedule_wait(
|
void usb_transfer_schedule_wait(
|
||||||
const usb_endpoint_t* const endpoint,
|
const usb_endpoint_t* const endpoint,
|
||||||
void* const data,
|
void* const data,
|
||||||
const uint32_t maximum_length
|
const uint32_t maximum_length,
|
||||||
|
const transfer_completion_cb completion_cb
|
||||||
);
|
);
|
||||||
|
|
||||||
void usb_transfer_schedule_append(
|
void usb_transfer_schedule_append(
|
||||||
const usb_endpoint_t* const endpoint,
|
const usb_endpoint_t* const endpoint,
|
||||||
void* const data,
|
void* const data,
|
||||||
const uint32_t maximum_length
|
const uint32_t maximum_length,
|
||||||
|
const transfer_completion_cb completion_cb
|
||||||
);
|
);
|
||||||
|
|
||||||
void usb_transfer_schedule_ack(
|
void usb_transfer_schedule_ack(
|
||||||
|
Reference in New Issue
Block a user