From d0c0270b9c8038ed7cb6f260052d111db73ee9b6 Mon Sep 17 00:00:00 2001 From: Michael Ossmann Date: Sun, 12 Dec 2021 13:25:44 -0700 Subject: [PATCH] clear frequency ranges before adding new ones --- firmware/common/operacake.c | 5 +++++ firmware/common/operacake.h | 1 + firmware/hackrf_usb/usb_api_operacake.c | 1 + 3 files changed, 7 insertions(+) diff --git a/firmware/common/operacake.c b/firmware/common/operacake.c index 4999b19b..f4acd306 100644 --- a/firmware/common/operacake.c +++ b/firmware/common/operacake.c @@ -294,6 +294,11 @@ uint8_t operacake_add_range(uint16_t freq_min, uint16_t freq_max, uint8_t port) return 0; } +void operacake_clear_ranges(void) +{ + range_idx = 0; +} + #define FREQ_ONE_MHZ (1000000ull) uint8_t operacake_set_range(uint32_t freq_mhz) { diff --git a/firmware/common/operacake.h b/firmware/common/operacake.h index 88bb135c..3b2621bb 100644 --- a/firmware/common/operacake.h +++ b/firmware/common/operacake.h @@ -50,6 +50,7 @@ uint8_t operacake_get_mode(uint8_t address); uint8_t operacake_set_ports(uint8_t address, uint8_t PA, uint8_t PB); uint8_t operacake_add_range(uint16_t freq_min, uint16_t freq_max, uint8_t port); uint8_t operacake_set_range(uint32_t freq_mhz); +void operacake_clear_ranges(void); uint16_t gpio_test(uint8_t address); #ifdef __cplusplus diff --git a/firmware/hackrf_usb/usb_api_operacake.c b/firmware/hackrf_usb/usb_api_operacake.c index 00374522..43f14a52 100644 --- a/firmware/hackrf_usb/usb_api_operacake.c +++ b/firmware/hackrf_usb/usb_api_operacake.c @@ -65,6 +65,7 @@ usb_request_status_t usb_vendor_request_operacake_set_ranges( if((num_ranges == 0) || (num_ranges > MAX_OPERACAKE_RANGES)) { return USB_REQUEST_STATUS_STALL; } + operacake_clear_ranges(); usb_transfer_schedule_block(endpoint->out, &data, endpoint->setup.length, NULL, NULL); } else if (stage == USB_TRANSFER_STAGE_DATA) {