Skip to content

Commit 7ccc36d

Browse files
committed
Add vendor request to retrieve buffer size.
1 parent 7410233 commit 7ccc36d

3 files changed

Lines changed: 26 additions & 0 deletions

File tree

firmware/hackrf_usb/hackrf_usb.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ static usb_request_handler_fn vendor_request_handler[] = {
150150
usb_vendor_request_read_selftest,
151151
usb_vendor_request_adc_read,
152152
usb_vendor_request_test_rtc_osc,
153+
usb_vendor_request_get_buffer_size,
153154
};
154155

155156
static const uint32_t vendor_request_handler_count =

firmware/hackrf_usb/usb_api_transceiver.c

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,28 @@ usb_request_status_t usb_vendor_request_set_rx_overrun_limit(
476476
return USB_REQUEST_STATUS_OK;
477477
}
478478

479+
usb_request_status_t usb_vendor_request_get_buffer_size(
480+
usb_endpoint_t* const endpoint,
481+
const usb_transfer_stage_t stage)
482+
{
483+
if (stage == USB_TRANSFER_STAGE_SETUP) {
484+
uint32_t value = USB_SAMP_BUFFER_SIZE + USB_BULK_BUFFER_SIZE;
485+
endpoint->buffer[0] = value & 0xff;
486+
endpoint->buffer[1] = (value & 0xff00) >> 8;
487+
endpoint->buffer[2] = (value & 0xff0000) >> 16;
488+
endpoint->buffer[3] = (value & 0xff000000) >> 24;
489+
usb_transfer_schedule_block(
490+
endpoint->in,
491+
&endpoint->buffer,
492+
4,
493+
NULL,
494+
NULL);
495+
usb_transfer_schedule_ack(endpoint->out);
496+
return USB_REQUEST_STATUS_OK;
497+
}
498+
return USB_REQUEST_STATUS_OK;
499+
}
500+
479501
void transceiver_start_dma(void* src, void* dest, size_t size)
480502
{
481503
uint32_t num_transfers = size >> 2;

firmware/hackrf_usb/usb_api_transceiver.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ usb_request_status_t usb_vendor_request_set_tx_underrun_limit(
7777
usb_request_status_t usb_vendor_request_set_rx_overrun_limit(
7878
usb_endpoint_t* const endpoint,
7979
const usb_transfer_stage_t stage);
80+
usb_request_status_t usb_vendor_request_get_buffer_size(
81+
usb_endpoint_t* const endpoint,
82+
const usb_transfer_stage_t stage);
8083

8184
void request_transceiver_mode(transceiver_mode_t mode);
8285
void transceiver_startup(transceiver_mode_t mode);

0 commit comments

Comments
 (0)