mirror of
https://github.com/ttrftech/NanoVNA.git
synced 2025-12-06 03:31:59 +01:00
fix: boundary check of center/span
This commit is contained in:
parent
e1ba0c77f0
commit
c4edbee973
39
main.c
39
main.c
|
|
@ -846,44 +846,49 @@ set_sweep_frequency(int type, uint32_t freq)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ST_CENTER:
|
case ST_CENTER:
|
||||||
ensure_edit_config();
|
if (freq < START_MIN)
|
||||||
|
freq = START_MIN;
|
||||||
|
if (freq > STOP_MAX)
|
||||||
|
freq = STOP_MAX;
|
||||||
freq_mode_centerspan();
|
freq_mode_centerspan();
|
||||||
uint32_t center = frequency0/2 + frequency1/2;
|
uint32_t center = frequency0/2 + frequency1/2;
|
||||||
if (center != freq) {
|
if (center != freq) {
|
||||||
uint32_t span = frequency0 - frequency1;
|
uint32_t span = frequency0 - frequency1;
|
||||||
ensure_edit_config();
|
ensure_edit_config();
|
||||||
|
if (freq < START_MIN + span/2) {
|
||||||
|
span = (freq - START_MIN) * 2;
|
||||||
|
}
|
||||||
|
if (freq > STOP_MAX - span/2) {
|
||||||
|
span = (STOP_MAX - freq) * 2;
|
||||||
|
}
|
||||||
frequency0 = freq + span/2;
|
frequency0 = freq + span/2;
|
||||||
frequency1 = freq - span/2;
|
frequency1 = freq - span/2;
|
||||||
if (frequency1 < START_MIN) {
|
|
||||||
frequency0 -= START_MIN - frequency1;
|
|
||||||
frequency1 = START_MIN;
|
|
||||||
}
|
|
||||||
if (frequency0 > STOP_MAX) {
|
|
||||||
frequency1 += frequency0 - STOP_MAX;
|
|
||||||
frequency0 = STOP_MAX;
|
|
||||||
}
|
|
||||||
update_frequencies();
|
update_frequencies();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ST_SPAN:
|
case ST_SPAN:
|
||||||
|
if (freq > STOP_MAX)
|
||||||
|
freq = STOP_MAX;
|
||||||
freq_mode_centerspan();
|
freq_mode_centerspan();
|
||||||
if (frequency0 - frequency1 != freq) {
|
if (frequency0 - frequency1 != freq) {
|
||||||
ensure_edit_config();
|
ensure_edit_config();
|
||||||
uint32_t center = frequency0/2 + frequency1/2;
|
uint32_t center = frequency0/2 + frequency1/2;
|
||||||
|
if (center < START_MIN + freq/2) {
|
||||||
|
center = START_MIN + freq/2;
|
||||||
|
}
|
||||||
|
if (center > STOP_MAX - freq/2) {
|
||||||
|
center = STOP_MAX - freq/2;
|
||||||
|
}
|
||||||
frequency1 = center - freq/2;
|
frequency1 = center - freq/2;
|
||||||
frequency0 = center + freq/2;
|
frequency0 = center + freq/2;
|
||||||
if (frequency1 < START_MIN) {
|
|
||||||
frequency0 -= START_MIN - frequency1;
|
|
||||||
frequency1 = START_MIN;
|
|
||||||
}
|
|
||||||
if (frequency0 > STOP_MAX) {
|
|
||||||
frequency1 += frequency0 - STOP_MAX;
|
|
||||||
frequency0 = STOP_MAX;
|
|
||||||
}
|
|
||||||
update_frequencies();
|
update_frequencies();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ST_CW:
|
case ST_CW:
|
||||||
|
if (freq < START_MIN)
|
||||||
|
freq = START_MIN;
|
||||||
|
if (freq > STOP_MAX)
|
||||||
|
freq = STOP_MAX;
|
||||||
freq_mode_centerspan();
|
freq_mode_centerspan();
|
||||||
if (frequency0 != freq || frequency1 != freq) {
|
if (frequency0 != freq || frequency1 != freq) {
|
||||||
ensure_edit_config();
|
ensure_edit_config();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue