From 22846b568263cbf5e432adaf9fdf22572148eb5f Mon Sep 17 00:00:00 2001 From: Martin Ling Date: Wed, 14 Sep 2022 15:44:48 +0100 Subject: [PATCH] Make libhackrf honour the valid_length set by TX callback. --- host/libhackrf/src/hackrf.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/host/libhackrf/src/hackrf.c b/host/libhackrf/src/hackrf.c index eaf3a935..0ccc57e5 100644 --- a/host/libhackrf/src/hackrf.c +++ b/host/libhackrf/src/hackrf.c @@ -359,6 +359,8 @@ static int prepare_transfers( .tx_ctx = device->tx_ctx, }; if (device->callback(&transfer) == 0) { + device->transfers[transfer_index]->length = + transfer.valid_length; ready_transfers++; } else { break; @@ -1791,7 +1793,7 @@ hackrf_libusb_transfer_callback(struct libusb_transfer* usb_transfer) hackrf_transfer transfer = { .device = device, .buffer = usb_transfer->buffer, - .buffer_length = usb_transfer->length, + .buffer_length = TRANSFER_BUFFER_SIZE, .valid_length = usb_transfer->actual_length, .rx_ctx = device->rx_ctx, .tx_ctx = device->tx_ctx}; @@ -1803,6 +1805,9 @@ hackrf_libusb_transfer_callback(struct libusb_transfer* usb_transfer) pthread_mutex_lock(&device->transfer_lock); if ((resubmit = device->transfers_setup)) { + if (usb_transfer->endpoint == TX_ENDPOINT_ADDRESS) { + usb_transfer->length = transfer.valid_length; + } result = libusb_submit_transfer(usb_transfer); }