fixed firmware bug with sweep ranges that start at high frequencies

This commit is contained in:
Michael Ossmann
2017-02-07 16:00:20 -07:00
parent 4b6de820ef
commit e9d1c71646

View File

@ -78,7 +78,7 @@ usb_request_status_t usb_vendor_request_init_sweep(
for(i=0; i<(num_ranges*2); i++) { for(i=0; i<(num_ranges*2); i++) {
frequencies[i] = ((uint16_t)(data[10+i*2]) << 8) + data[9+i*2]; frequencies[i] = ((uint16_t)(data[10+i*2]) << 8) + data[9+i*2];
} }
sweep_freq = frequencies[0] * FREQ_GRANULARITY; sweep_freq = (uint64_t)frequencies[0] * FREQ_GRANULARITY;
set_freq(sweep_freq + offset); set_freq(sweep_freq + offset);
start_sweep_mode = true; start_sweep_mode = true;
usb_transfer_schedule_ack(endpoint->in); usb_transfer_schedule_ack(endpoint->in);
@ -136,7 +136,7 @@ void sweep_mode(void) {
if(INTERLEAVED == style) { if(INTERLEAVED == style) {
if(!odd && ((sweep_freq + step_width) >= ((uint64_t)frequencies[1+range*2] * FREQ_GRANULARITY))) { if(!odd && ((sweep_freq + step_width) >= ((uint64_t)frequencies[1+range*2] * FREQ_GRANULARITY))) {
range = (range + 1) % num_ranges; range = (range + 1) % num_ranges;
sweep_freq = frequencies[range*2] * FREQ_GRANULARITY; sweep_freq = (uint64_t)frequencies[range*2] * FREQ_GRANULARITY;
} else { } else {
if(odd) { if(odd) {
sweep_freq += step_width/4; sweep_freq += step_width/4;
@ -148,7 +148,7 @@ void sweep_mode(void) {
} else { } else {
if((sweep_freq + step_width) >= ((uint64_t)frequencies[1+range*2] * FREQ_GRANULARITY)) { if((sweep_freq + step_width) >= ((uint64_t)frequencies[1+range*2] * FREQ_GRANULARITY)) {
range = (range + 1) % num_ranges; range = (range + 1) % num_ranges;
sweep_freq = frequencies[range*2] * FREQ_GRANULARITY; sweep_freq = (uint64_t)frequencies[range*2] * FREQ_GRANULARITY;
} else { } else {
sweep_freq += step_width; sweep_freq += step_width;
} }