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) {