Level offset and sweep time added

tinySA-v0.2
erikkaashoek 6 years ago
parent 5ce6439211
commit 7100b9aee0

@ -2268,6 +2268,7 @@ static const VNAShellCommand commands[] =
{ "if", cmd_if, 0 },
{ "attenuate", cmd_attenuate, 0 },
{ "level", cmd_level, 0 },
{ "leveloffset", cmd_leveloffset, 0 },
{ "levelsweep", cmd_levelsweep, 0 },
{ "modulation", cmd_modulation, 0 },
{ "reflevel", cmd_reflevel, 0 },

@ -185,6 +185,7 @@ void set_step_delay(int t);
void set_repeat(int);
void set_level_sweep(float);
void set_level(float);
void set_sweep_time(int32_t);
//extern int setting.repeat;
//extern int setting.rbw;
#ifdef __SPUR__
@ -575,6 +576,7 @@ typedef struct setting
int linearity_step;
float level;
float level_sweep;
int32_t sweep_time;
int test_argument;
uint32_t checksum;
}setting_t;

@ -88,18 +88,18 @@ VNA_SHELL_FUNCTION(cmd_attenuate)
VNA_SHELL_FUNCTION(cmd_level)
{
if (argc != 1) {
usage:
shell_printf("usage: level -76..20\r\n");
shell_printf("usage: level -76..-6\r\n");
return;
}
float f = my_atof(argv[0]);
set_level(f);
}
VNA_SHELL_FUNCTION(cmd_levelsweep)
{
if (argc != 1) {
usage:
shell_printf("usage: levelsweep -76..+76\r\n");
return;
}
@ -127,6 +127,27 @@ VNA_SHELL_FUNCTION(cmd_reflevel)
}
}
VNA_SHELL_FUNCTION(cmd_leveloffset)
{
if (argc == 0) {
shell_printf("leveloffset low %.1f\r\n", (float) config.low_level_offset);
shell_printf("leveloffset high %.1f\r\n", (float)config.high_level_offset);
return;
} else if (argc == 2) {
float v = my_atof(argv[1]);
if (strcmp(argv[0],"low") == 0)
config.low_level_offset = v;
else if (strcmp(argv[0],"high") == 0)
config.low_level_offset = v;
else
goto usage;
} else {
usage:
shell_printf("leveloffset [low|high <offset>]\r\n");
}
}
VNA_SHELL_FUNCTION(cmd_rbw)
{
if (argc != 1) {

@ -52,6 +52,7 @@ void reset_settings(int m)
setting.level = -15.0;
setting.trigger_level = -150.0;
setting.linearity_step = 0;
setting.sweep_time = 1000;
trace[TRACE_STORED].enabled = false;
trace[TRACE_TEMP].enabled = false;
setting.refer = -1;
@ -160,8 +161,14 @@ void set_drive(int d)
void set_level_sweep(float l)
{
setting.level_sweep = l;
dirty = true;
}
void set_sweep_time(int32_t t)
{
setting.sweep_time = t;
dirty = true;
}
void set_tracking_output(int t)
{
@ -1209,7 +1216,8 @@ again:
return false;
if (MODE_OUTPUT(setting.mode)) {
if (setting.modulation == MO_NONE) {
osalThreadSleepMilliseconds(10); // Slow down sweep in output mode
// osalThreadSleepMilliseconds(10); // Slow down sweep in output mode
my_microsecond_delay(setting.sweep_time * 1000 / 290);
}
continue; // Skip all other processing
}

@ -279,7 +279,8 @@ const uint16_t right_icons [] =
enum {
KM_START=1, KM_STOP, KM_CENTER, KM_SPAN, KM_CW, KM_REFPOS, KM_SCALE, KM_ATTENUATION,
KM_ACTUALPOWER, KM_IF, KM_SAMPLETIME, KM_DRIVE, KM_LOWOUTLEVEL, KM_DECAY, KM_NOISE, KM_10MHZ, KM_REPEAT, KM_OFFSET, KM_TRIGGER, KM_LEVELSWEEP,
KM_ACTUALPOWER, KM_IF, KM_SAMPLETIME, KM_DRIVE, KM_LOWOUTLEVEL, KM_DECAY, KM_NOISE,
KM_10MHZ, KM_REPEAT, KM_OFFSET, KM_TRIGGER, KM_LEVELSWEEP, KM_SWEEP_TIME,
};
@ -369,6 +370,24 @@ static const keypads_t keypads_level[] = {
{ 0, 0, -1 }
};
static const keypads_t keypads_time[] = {
{ 1, 3, KP_PERIOD },
{ 0, 3, 0 },
{ 0, 2, 1 },
{ 1, 2, 2 },
{ 2, 2, 3 },
{ 0, 1, 4 },
{ 1, 1, 5 },
{ 2, 1, 6 },
{ 0, 0, 7 },
{ 1, 0, 8 },
{ 2, 0, 9 },
{ 3, 1, KP_N },
{ 3, 2, KP_P },
{ 3, 3, KP_MINUS },
{ 2, 3, KP_BS },
{ 0, 0, -1 }
};
static const keypads_t * const keypads_mode_tbl[] = {
NULL, // never used
@ -392,6 +411,7 @@ static const keypads_t * const keypads_mode_tbl[] = {
keypads_level, // KM_OFFSET
keypads_level, // KM_TRIGGER
keypads_level, // KM_LEVELSWEEP
keypads_time, // KM_SWEEP_TIME
};
#ifdef __VNA__
@ -403,7 +423,7 @@ static const char * const keypad_mode_label[] = {
static const char * const keypad_mode_label[] = {
"error", "START", "STOP", "CENTER", "SPAN", "FREQ", "REFPOS", "SCALE", // 0-7
"\2ATTENUATE\0 0-31dB", "ACTUALPOWER", "IF", "SAMPLE TIME", "DRIVE", "LEVEL", "LEVEL", "LEVEL", // 8-15
"OFFSET" , "REPEATS", "OFFSET", "TRIGGER", "LEVELSWEEP"// 16-
"OFFSET" , "REPEATS", "OFFSET", "TRIGGER", "LEVEL SWEEP", "SWEEP TIME"// 16-
};
#endif
@ -1061,7 +1081,8 @@ const menuitem_t menu_lowoutputmode[] = {
{ MT_FORM | MT_SUBMENU, 0, "MODULATION: %s", menu_modulation},
{ MT_FORM | MT_KEYPAD, KM_SPAN, "SPAN: %s", NULL},
{ MT_FORM | MT_KEYPAD, KM_LEVELSWEEP, "LEVELSWEEP: %s", NULL},
// { MT_FORM | MT_KEYPAD, KM_10MHZ, "10MHZ: %s", NULL},
{ MT_FORM | MT_KEYPAD, KM_SWEEP_TIME, "SWEEP TIME: %s", NULL},
// { MT_FORM | MT_KEYPAD, KM_10MHZ, "10MHZ: %s", NULL},
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK", NULL },
{ MT_FORM | MT_NONE, 0, NULL, NULL } // sentinel
};
@ -1726,6 +1747,10 @@ static void fetch_numeric_target(void)
uistat.value = setting.level_sweep;
plot_printf(uistat.text, sizeof uistat.text, "%.1fdB", uistat.value);
break;
case KM_SWEEP_TIME:
uistat.value = setting.sweep_time;
plot_printf(uistat.text, sizeof uistat.text, "%.0fmS", uistat.value);
break;
case KM_TRIGGER:
uistat.value = setting.trigger_level;
plot_printf(uistat.text, sizeof uistat.text, "%fdB", uistat.value);
@ -1812,6 +1837,9 @@ set_numeric_value(void)
case KM_LEVELSWEEP:
set_level_sweep(uistat.value);
break;
case KM_SWEEP_TIME:
set_sweep_time(uistat.value);
break;
case KM_TRIGGER:
set_trigger_level(uistat.value);
break;

Loading…
Cancel
Save

Powered by TurnKey Linux.