mirror of
https://github.com/ttrftech/NanoVNA.git
synced 2025-12-06 03:31:59 +01:00
Format fixes for frequency value string
More code defines (various mode) Add debug command for i2c bus speed
This commit is contained in:
parent
1a3f2b1354
commit
156e21f4ee
80
main.c
80
main.c
|
|
@ -81,6 +81,8 @@ static volatile vna_shellcmd_t shell_function = 0;
|
||||||
//#define ENABLE_GAIN_COMMAND
|
//#define ENABLE_GAIN_COMMAND
|
||||||
// Enable port command, used for debug
|
// Enable port command, used for debug
|
||||||
//#define ENABLE_PORT_COMMAND
|
//#define ENABLE_PORT_COMMAND
|
||||||
|
// Enable si5351 timing command, used for debug
|
||||||
|
#define ENABLE_SI5351_TIMINGS
|
||||||
|
|
||||||
static void apply_CH0_error_term_at(int i);
|
static void apply_CH0_error_term_at(int i);
|
||||||
static void apply_CH1_error_term_at(int i);
|
static void apply_CH1_error_term_at(int i);
|
||||||
|
|
@ -363,6 +365,25 @@ adjust_gain(uint32_t newfreq)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef ENABLE_GAIN_COMMAND
|
||||||
|
VNA_SHELL_FUNCTION(cmd_gain)
|
||||||
|
{
|
||||||
|
int rvalue = 0;
|
||||||
|
int lvalue = 0;
|
||||||
|
if (argc < 1 && argc > 3) {
|
||||||
|
shell_printf("usage: gain idx {lgain(0-95)} [rgain(0-95)]\r\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int idx = my_atoui(argv[0]);
|
||||||
|
lvalue = rvalue = my_atoui(argv[1]);
|
||||||
|
if (argc == 3)
|
||||||
|
rvalue = my_atoui(argv[2]);
|
||||||
|
tlv320aic3204_set_gain(lvalue, rvalue);
|
||||||
|
gain_table[idx][0] = lvalue;
|
||||||
|
gain_table[idx][1] = rvalue;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
int set_frequency(uint32_t freq)
|
int set_frequency(uint32_t freq)
|
||||||
{
|
{
|
||||||
int delay = adjust_gain(freq);
|
int delay = adjust_gain(freq);
|
||||||
|
|
@ -836,7 +857,7 @@ static const I2SConfig i2sconfig = {
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DSP_START(delay) {wait_count = delay + config.bandwidth;}
|
#define DSP_START(delay) {wait_count = delay + config.bandwidth;}
|
||||||
#define DSP_WAIT_READY while (wait_count) {if (operation_requested && break_on_operation) return false; __WFI();}
|
#define DSP_WAIT_READY while (wait_count) {__WFI();}
|
||||||
#define DSP_WAIT while (wait_count) {__WFI();}
|
#define DSP_WAIT while (wait_count) {__WFI();}
|
||||||
#define RESET_SWEEP {p_sweep = 0;}
|
#define RESET_SWEEP {p_sweep = 0;}
|
||||||
#define DELAY_CHANNEL_CHANGE 2
|
#define DELAY_CHANNEL_CHANGE 2
|
||||||
|
|
@ -863,7 +884,7 @@ bool sweep(bool break_on_operation, uint16_t sweep_mode)
|
||||||
if (p_sweep>=sweep_points || break_on_operation == false) RESET_SWEEP;
|
if (p_sweep>=sweep_points || break_on_operation == false) RESET_SWEEP;
|
||||||
if (break_on_operation && sweep_mode == 0)
|
if (break_on_operation && sweep_mode == 0)
|
||||||
return false;
|
return false;
|
||||||
|
uint16_t start_sweep = p_sweep;
|
||||||
// blink LED while scanning
|
// blink LED while scanning
|
||||||
palClearPad(GPIOC, GPIOC_LED);
|
palClearPad(GPIOC, GPIOC_LED);
|
||||||
// Power stabilization after LED off, before measure
|
// Power stabilization after LED off, before measure
|
||||||
|
|
@ -880,7 +901,7 @@ bool sweep(bool break_on_operation, uint16_t sweep_mode)
|
||||||
//================================================
|
//================================================
|
||||||
DSP_WAIT_READY;
|
DSP_WAIT_READY;
|
||||||
(*sample_func)(measured[0][p_sweep]); // calculate reflection coefficient
|
(*sample_func)(measured[0][p_sweep]); // calculate reflection coefficient
|
||||||
if (cal_status & CALSTAT_APPLY)
|
if (!APPLY_CALIBRATION_AFTER_SWEEP && cal_status & CALSTAT_APPLY)
|
||||||
apply_CH0_error_term_at(p_sweep);
|
apply_CH0_error_term_at(p_sweep);
|
||||||
}
|
}
|
||||||
if (sweep_mode & SWEEP_CH1_MEASURE){
|
if (sweep_mode & SWEEP_CH1_MEASURE){
|
||||||
|
|
@ -891,16 +912,23 @@ bool sweep(bool break_on_operation, uint16_t sweep_mode)
|
||||||
//================================================
|
//================================================
|
||||||
DSP_WAIT_READY;
|
DSP_WAIT_READY;
|
||||||
(*sample_func)(measured[1][p_sweep]); // calculate transmission coefficient
|
(*sample_func)(measured[1][p_sweep]); // calculate transmission coefficient
|
||||||
if (cal_status & CALSTAT_APPLY)
|
if (!APPLY_CALIBRATION_AFTER_SWEEP && cal_status & CALSTAT_APPLY)
|
||||||
apply_CH1_error_term_at(p_sweep);
|
apply_CH1_error_term_at(p_sweep);
|
||||||
}
|
}
|
||||||
|
if (operation_requested && break_on_operation) break;
|
||||||
st_delay = 0;
|
st_delay = 0;
|
||||||
// Display SPI made noise on measurement (can see in CW mode)
|
// Display SPI made noise on measurement (can see in CW mode)
|
||||||
// ili9341_fill(OFFSETX+CELLOFFSETX, OFFSETY, (p_sweep * WIDTH)/(sweep_points-1), 1, RGB565(0,0,255));
|
// ili9341_fill(OFFSETX+CELLOFFSETX, OFFSETY, (p_sweep * WIDTH)/(sweep_points-1), 1, RGB565(0,0,255));
|
||||||
}
|
}
|
||||||
|
if (APPLY_CALIBRATION_AFTER_SWEEP && (cal_status & CALSTAT_APPLY)){
|
||||||
|
for (;start_sweep<=p_sweep;start_sweep++){
|
||||||
|
if (sweep_mode & SWEEP_CH0_MEASURE) apply_CH0_error_term_at(start_sweep);
|
||||||
|
if (sweep_mode & SWEEP_CH1_MEASURE) apply_CH1_error_term_at(start_sweep);
|
||||||
|
}
|
||||||
|
}
|
||||||
// blink LED while scanning
|
// blink LED while scanning
|
||||||
palSetPad(GPIOC, GPIOC_LED);
|
palSetPad(GPIOC, GPIOC_LED);
|
||||||
return true;
|
return p_sweep == sweep_points;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t get_bandwidth_frequency(void){
|
uint32_t get_bandwidth_frequency(void){
|
||||||
|
|
@ -1840,7 +1868,7 @@ VNA_SHELL_FUNCTION(cmd_marker)
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
for (t = 0; t < MARKERS_MAX; t++) {
|
for (t = 0; t < MARKERS_MAX; t++) {
|
||||||
if (markers[t].enabled) {
|
if (markers[t].enabled) {
|
||||||
shell_printf("%d %d %d\r\n", t+1, markers[t].index, markers[t].frequency);
|
shell_printf("%d %d %u\r\n", t+1, markers[t].index, markers[t].frequency);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
@ -1858,7 +1886,7 @@ VNA_SHELL_FUNCTION(cmd_marker)
|
||||||
if (t < 0 || t >= MARKERS_MAX)
|
if (t < 0 || t >= MARKERS_MAX)
|
||||||
goto usage;
|
goto usage;
|
||||||
if (argc == 1) {
|
if (argc == 1) {
|
||||||
shell_printf("%d %d %d\r\n", t+1, markers[t].index, markers[t].frequency);
|
shell_printf("%d %d %u\r\n", t+1, markers[t].index, markers[t].frequency);
|
||||||
active_marker = t;
|
active_marker = t;
|
||||||
// select active marker
|
// select active marker
|
||||||
markers[t].enabled = TRUE;
|
markers[t].enabled = TRUE;
|
||||||
|
|
@ -2041,25 +2069,6 @@ VNA_SHELL_FUNCTION(cmd_test)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_GAIN_COMMAND
|
|
||||||
VNA_SHELL_FUNCTION(cmd_gain)
|
|
||||||
{
|
|
||||||
int rvalue = 0;
|
|
||||||
int lvalue = 0;
|
|
||||||
if (argc < 1 && argc > 3) {
|
|
||||||
shell_printf("usage: gain idx {lgain(0-95)} [rgain(0-95)]\r\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int idx = my_atoui(argv[0]);
|
|
||||||
lvalue = rvalue = my_atoui(argv[1]);
|
|
||||||
if (argc == 3)
|
|
||||||
rvalue = my_atoui(argv[2]);
|
|
||||||
tlv320aic3204_set_gain(lvalue, rvalue);
|
|
||||||
gain_table[idx][0] = lvalue;
|
|
||||||
gain_table[idx][1] = rvalue;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef ENABLE_PORT_COMMAND
|
#ifdef ENABLE_PORT_COMMAND
|
||||||
VNA_SHELL_FUNCTION(cmd_port)
|
VNA_SHELL_FUNCTION(cmd_port)
|
||||||
{
|
{
|
||||||
|
|
@ -2161,6 +2170,22 @@ VNA_SHELL_FUNCTION(cmd_vbat_offset)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef ENABLE_SI5351_TIMINGS
|
||||||
|
VNA_SHELL_FUNCTION(cmd_si5351time)
|
||||||
|
{
|
||||||
|
(void)argc;
|
||||||
|
// si5351_set_timing(my_atoui(argv[0]), my_atoui(argv[1]));
|
||||||
|
|
||||||
|
uint32_t tim = STM32_TIMINGR_PRESC(0U) |
|
||||||
|
STM32_TIMINGR_SCLDEL(my_atoui(argv[0])) | STM32_TIMINGR_SDADEL(my_atoui(argv[1])) |
|
||||||
|
STM32_TIMINGR_SCLH(my_atoui(argv[2])) | STM32_TIMINGR_SCLL(my_atoui(argv[3]));
|
||||||
|
I2CD1.i2c->CR1 &=~I2C_CR1_PE;
|
||||||
|
I2CD1.i2c->TIMINGR = tim;
|
||||||
|
I2CD1.i2c->CR1 |= I2C_CR1_PE;
|
||||||
|
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef ENABLE_INFO_COMMAND
|
#ifdef ENABLE_INFO_COMMAND
|
||||||
VNA_SHELL_FUNCTION(cmd_info)
|
VNA_SHELL_FUNCTION(cmd_info)
|
||||||
{
|
{
|
||||||
|
|
@ -2356,6 +2381,9 @@ static const VNAShellCommand commands[] =
|
||||||
#endif
|
#endif
|
||||||
#ifdef ENABLE_THREADS_COMMAND
|
#ifdef ENABLE_THREADS_COMMAND
|
||||||
{"threads" , cmd_threads , 0},
|
{"threads" , cmd_threads , 0},
|
||||||
|
#endif
|
||||||
|
#ifdef ENABLE_SI5351_TIMINGS
|
||||||
|
{"t" , cmd_si5351time , CMD_WAIT_MUTEX},
|
||||||
#endif
|
#endif
|
||||||
{NULL , NULL , 0}
|
{NULL , NULL , 0}
|
||||||
};
|
};
|
||||||
|
|
|
||||||
12
nanovna.h
12
nanovna.h
|
|
@ -41,6 +41,9 @@
|
||||||
#define FREQUENCY_OFFSET 8000
|
#define FREQUENCY_OFFSET 8000
|
||||||
// Frequency offset for 48k ADC (sin_cos table in dsp.c generated for 3k, 4k, 5k, 6k, if change need create new table )
|
// Frequency offset for 48k ADC (sin_cos table in dsp.c generated for 3k, 4k, 5k, 6k, if change need create new table )
|
||||||
//#define FREQUENCY_OFFSET 5000
|
//#define FREQUENCY_OFFSET 5000
|
||||||
|
// Apply calibration after made sweep, if set to 1, calibration move out from sweep cycle
|
||||||
|
// On fast CPU it slow down sweep, on slow CPU can made faster (not need wait additional measure time)
|
||||||
|
#define APPLY_CALIBRATION_AFTER_SWEEP 0
|
||||||
// Use real time build table (undef for use constant)
|
// Use real time build table (undef for use constant)
|
||||||
//#define USE_VARIABLE_OFFSET
|
//#define USE_VARIABLE_OFFSET
|
||||||
// Speed of light const
|
// Speed of light const
|
||||||
|
|
@ -146,7 +149,14 @@ extern const char *info_about[];
|
||||||
// Bandwidth depend from AUDIO_SAMPLES_COUNT and audio ADC frequency
|
// Bandwidth depend from AUDIO_SAMPLES_COUNT and audio ADC frequency
|
||||||
// for AUDIO_SAMPLES_COUNT = 48 and ADC = 96kHz one measure give 96000/48=2000Hz
|
// for AUDIO_SAMPLES_COUNT = 48 and ADC = 96kHz one measure give 96000/48=2000Hz
|
||||||
// define additional measure count
|
// define additional measure count
|
||||||
#if AUDIO_ADC_FREQ/AUDIO_SAMPLES_COUNT == 2000
|
#if AUDIO_ADC_FREQ/AUDIO_SAMPLES_COUNT == 4000
|
||||||
|
#define BANDWIDTH_4000 ( 1 - 1)
|
||||||
|
#define BANDWIDTH_2000 ( 2 - 1)
|
||||||
|
#define BANDWIDTH_1000 ( 4 - 1)
|
||||||
|
#define BANDWIDTH_333 ( 12 - 1)
|
||||||
|
#define BANDWIDTH_100 ( 40 - 1)
|
||||||
|
#define BANDWIDTH_30 (132 - 1)
|
||||||
|
#elif AUDIO_ADC_FREQ/AUDIO_SAMPLES_COUNT == 2000
|
||||||
#define BANDWIDTH_2000 ( 1 - 1)
|
#define BANDWIDTH_2000 ( 1 - 1)
|
||||||
#define BANDWIDTH_1000 ( 2 - 1)
|
#define BANDWIDTH_1000 ( 2 - 1)
|
||||||
#define BANDWIDTH_333 ( 6 - 1)
|
#define BANDWIDTH_333 ( 6 - 1)
|
||||||
|
|
|
||||||
32
si5351.c
32
si5351.c
|
|
@ -472,7 +472,8 @@ si5351_set_frequency(uint32_t freq, uint8_t drive_strength)
|
||||||
if (current_band != band) {
|
if (current_band != band) {
|
||||||
si5351_reset_pll(SI5351_PLL_RESET_A | SI5351_PLL_RESET_B);
|
si5351_reset_pll(SI5351_PLL_RESET_A | SI5351_PLL_RESET_B);
|
||||||
// Possibly not need add delay now
|
// Possibly not need add delay now
|
||||||
chThdSleepMicroseconds(DELAY_RESET_PLL_BEFORE);
|
if (DELAY_RESET_PLL_BEFORE)
|
||||||
|
chThdSleepMicroseconds(DELAY_RESET_PLL_BEFORE);
|
||||||
}
|
}
|
||||||
static const uint8_t band_setting[] = {1, PLL_N_1, PLL_N_2, 8, 6, 4};
|
static const uint8_t band_setting[] = {1, PLL_N_1, PLL_N_2, 8, 6, 4};
|
||||||
switch (band) {
|
switch (band) {
|
||||||
|
|
@ -483,18 +484,14 @@ si5351_set_frequency(uint32_t freq, uint8_t drive_strength)
|
||||||
if (current_band != band) {
|
if (current_band != band) {
|
||||||
si5351_setupPLL(SI5351_REG_PLL_A, pll_n, 0, 1);
|
si5351_setupPLL(SI5351_REG_PLL_A, pll_n, 0, 1);
|
||||||
si5351_setupPLL(SI5351_REG_PLL_B, PLL_N_2, 0, 1);
|
si5351_setupPLL(SI5351_REG_PLL_B, PLL_N_2, 0, 1);
|
||||||
si5351_set_frequency_fixedpll(
|
si5351_set_frequency_fixedpll(2, XTALFREQ * PLL_N_2, CLK2_FREQUENCY, SI5351_R_DIV_1, SI5351_CLK_DRIVE_STRENGTH_2MA | SI5351_CLK_PLL_SELECT_B);
|
||||||
2, XTALFREQ * PLL_N_2, CLK2_FREQUENCY, SI5351_R_DIV_1,
|
|
||||||
SI5351_CLK_DRIVE_STRENGTH_2MA | SI5351_CLK_PLL_SELECT_B);
|
|
||||||
delay = DELAY_BANDCHANGE_1_2;
|
delay = DELAY_BANDCHANGE_1_2;
|
||||||
} else {
|
} else {
|
||||||
delay = DELAY_BAND_1_2;
|
delay = DELAY_BAND_1_2;
|
||||||
}
|
}
|
||||||
// Calculate and set CH0 and CH1 divider
|
// Calculate and set CH0 and CH1 divider
|
||||||
si5351_set_frequency_fixedpll(0, (uint64_t)omul * XTALFREQ * pll_n, ofreq, rdiv,
|
si5351_set_frequency_fixedpll(0, (uint64_t)omul * XTALFREQ * pll_n, ofreq, rdiv, drive_strength | SI5351_CLK_PLL_SELECT_A);
|
||||||
drive_strength | SI5351_CLK_PLL_SELECT_A);
|
si5351_set_frequency_fixedpll(1, (uint64_t) mul * XTALFREQ * pll_n, freq, rdiv, drive_strength | SI5351_CLK_PLL_SELECT_A);
|
||||||
si5351_set_frequency_fixedpll(1, (uint64_t)mul * XTALFREQ * pll_n, freq, rdiv,
|
|
||||||
drive_strength | SI5351_CLK_PLL_SELECT_A);
|
|
||||||
break;
|
break;
|
||||||
case 3: // fdiv = 8, f 100-130 PLL 800-1040
|
case 3: // fdiv = 8, f 100-130 PLL 800-1040
|
||||||
case 4: // fdiv = 6, f 130-170 PLL 780-1050
|
case 4: // fdiv = 6, f 130-170 PLL 780-1050
|
||||||
|
|
@ -503,29 +500,24 @@ si5351_set_frequency(uint32_t freq, uint8_t drive_strength)
|
||||||
|
|
||||||
// Setup CH0 and CH1 constant fdiv divider at change
|
// Setup CH0 and CH1 constant fdiv divider at change
|
||||||
if (current_band != band) {
|
if (current_band != band) {
|
||||||
si5351_setupMultisynth(0, fdiv, 0, 1, SI5351_R_DIV_1,
|
si5351_setupMultisynth(0, fdiv, 0, 1, SI5351_R_DIV_1, drive_strength | SI5351_CLK_PLL_SELECT_A);
|
||||||
drive_strength | SI5351_CLK_PLL_SELECT_A);
|
si5351_setupMultisynth(1, fdiv, 0, 1, SI5351_R_DIV_1, drive_strength | SI5351_CLK_PLL_SELECT_B);
|
||||||
si5351_setupMultisynth(1, fdiv, 0, 1, SI5351_R_DIV_1,
|
|
||||||
drive_strength | SI5351_CLK_PLL_SELECT_B);
|
|
||||||
delay= DELAY_BANDCHANGE_3_4;
|
delay= DELAY_BANDCHANGE_3_4;
|
||||||
} else {
|
} else {
|
||||||
delay= DELAY_BAND_3_4;
|
delay= DELAY_BAND_3_4;
|
||||||
}
|
}
|
||||||
// Calculate and set CH0 and CH1 PLL freq
|
// Calculate and set CH0 and CH1 PLL freq
|
||||||
si5351_setupPLL_freq(SI5351_REG_PLL_A, ofreq, fdiv,
|
si5351_setupPLL_freq(SI5351_REG_PLL_A, ofreq, fdiv, omul); // set PLLA freq = (ofreq/omul)*fdiv
|
||||||
omul); // set PLLA freq = (ofreq/omul)*fdiv
|
si5351_setupPLL_freq(SI5351_REG_PLL_B, freq, fdiv, mul); // set PLLB freq = ( freq/ mul)*fdiv
|
||||||
si5351_setupPLL_freq(SI5351_REG_PLL_B, freq, fdiv,
|
|
||||||
mul); // set PLLB freq = ( freq/ mul)*fdiv
|
|
||||||
// Calculate CH2 freq = CLK2_FREQUENCY, depend from calculated before CH1 PLLB = (freq/mul)*fdiv
|
// Calculate CH2 freq = CLK2_FREQUENCY, depend from calculated before CH1 PLLB = (freq/mul)*fdiv
|
||||||
si5351_set_frequency_fixedpll(
|
si5351_set_frequency_fixedpll(2, (uint64_t)freq * fdiv, CLK2_FREQUENCY * mul, SI5351_R_DIV_1, SI5351_CLK_DRIVE_STRENGTH_2MA | SI5351_CLK_PLL_SELECT_B);
|
||||||
2, (uint64_t)freq * fdiv, CLK2_FREQUENCY * mul, SI5351_R_DIV_1,
|
|
||||||
SI5351_CLK_DRIVE_STRENGTH_2MA | SI5351_CLK_PLL_SELECT_B);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (current_band != band) {
|
if (current_band != band) {
|
||||||
// Possibly not need add delay now
|
// Possibly not need add delay now
|
||||||
chThdSleepMicroseconds(DELAY_RESET_PLL_AFTER);
|
if (DELAY_RESET_PLL_AFTER)
|
||||||
|
chThdSleepMicroseconds(DELAY_RESET_PLL_AFTER);
|
||||||
si5351_reset_pll(SI5351_PLL_RESET_A|SI5351_PLL_RESET_B);
|
si5351_reset_pll(SI5351_PLL_RESET_A|SI5351_PLL_RESET_B);
|
||||||
current_band = band;
|
current_band = band;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
9
ui.c
9
ui.c
|
|
@ -963,14 +963,14 @@ static const char s1_file_header[] =
|
||||||
"# Hz S RI R 50\r\n";
|
"# Hz S RI R 50\r\n";
|
||||||
|
|
||||||
static const char s1_file_param[] =
|
static const char s1_file_param[] =
|
||||||
"%10d % f % f\r\n";
|
"%10u % f % f\r\n";
|
||||||
|
|
||||||
static const char s2_file_header[] =
|
static const char s2_file_header[] =
|
||||||
"!File created by NanoVNA\r\n"\
|
"!File created by NanoVNA\r\n"\
|
||||||
"# Hz S RI R 50\r\n";
|
"# Hz S RI R 50\r\n";
|
||||||
|
|
||||||
static const char s2_file_param[] =
|
static const char s2_file_param[] =
|
||||||
"%10d % f % f % f % f 0 0 0 0\r\n";
|
"%10u % f % f % f % f 0 0 0 0\r\n";
|
||||||
|
|
||||||
static UI_FUNCTION_CALLBACK(menu_sdcard_cb)
|
static UI_FUNCTION_CALLBACK(menu_sdcard_cb)
|
||||||
{
|
{
|
||||||
|
|
@ -1144,6 +1144,9 @@ const menuitem_t menu_transform[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
const menuitem_t menu_bandwidth[] = {
|
const menuitem_t menu_bandwidth[] = {
|
||||||
|
#ifdef BANDWIDTH_4000
|
||||||
|
{ MT_ADV_CALLBACK, BANDWIDTH_4000, "4 kHz", menu_bandwidth_acb },
|
||||||
|
#endif
|
||||||
#ifdef BANDWIDTH_2000
|
#ifdef BANDWIDTH_2000
|
||||||
{ MT_ADV_CALLBACK, BANDWIDTH_2000, "2 kHz", menu_bandwidth_acb },
|
{ MT_ADV_CALLBACK, BANDWIDTH_2000, "2 kHz", menu_bandwidth_acb },
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -1151,7 +1154,9 @@ const menuitem_t menu_bandwidth[] = {
|
||||||
{ MT_ADV_CALLBACK, BANDWIDTH_333, "333 Hz", menu_bandwidth_acb },
|
{ MT_ADV_CALLBACK, BANDWIDTH_333, "333 Hz", menu_bandwidth_acb },
|
||||||
{ MT_ADV_CALLBACK, BANDWIDTH_100, "100 Hz", menu_bandwidth_acb },
|
{ MT_ADV_CALLBACK, BANDWIDTH_100, "100 Hz", menu_bandwidth_acb },
|
||||||
{ MT_ADV_CALLBACK, BANDWIDTH_30, "30 Hz", menu_bandwidth_acb },
|
{ MT_ADV_CALLBACK, BANDWIDTH_30, "30 Hz", menu_bandwidth_acb },
|
||||||
|
#ifdef BANDWIDTH_10
|
||||||
{ MT_ADV_CALLBACK, BANDWIDTH_10, "10 Hz", menu_bandwidth_acb },
|
{ MT_ADV_CALLBACK, BANDWIDTH_10, "10 Hz", menu_bandwidth_acb },
|
||||||
|
#endif
|
||||||
{ MT_CANCEL, 255, S_LARROW" BACK", NULL },
|
{ MT_CANCEL, 255, S_LARROW" BACK", NULL },
|
||||||
{ MT_NONE, 0, NULL, NULL } // sentinel
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue