|
|
|
|
@ -14,33 +14,48 @@ void SetAttenuation(int);
|
|
|
|
|
void SetPowerLevel(int);
|
|
|
|
|
void SetGenerate(int);
|
|
|
|
|
void SetRBW(int);
|
|
|
|
|
void SetDrive(int d);
|
|
|
|
|
void SetIF(int f);
|
|
|
|
|
void SetStepDelay(int t);
|
|
|
|
|
extern int setting_rbw;
|
|
|
|
|
void SetSpur(int);
|
|
|
|
|
int GetSpur(void);
|
|
|
|
|
void SetAverage(int);
|
|
|
|
|
int GetAverage(void);
|
|
|
|
|
extern int setting_average;
|
|
|
|
|
void SetStorage(void);
|
|
|
|
|
void SetClearStorage(void);
|
|
|
|
|
void SetSubtractStorage(void);
|
|
|
|
|
void toggle_waterfall(void);
|
|
|
|
|
void SetMode(int);
|
|
|
|
|
int GetMode(void);
|
|
|
|
|
void SetRefpos(int);
|
|
|
|
|
void SetScale(int);
|
|
|
|
|
void AllDirty(void);
|
|
|
|
|
void MenuDirty(void);
|
|
|
|
|
void ToggleLNA(void);
|
|
|
|
|
void ToggleAGC(void);
|
|
|
|
|
void redrawHisto(void);
|
|
|
|
|
void self_test(void);
|
|
|
|
|
extern int32_t frequencyExtra;
|
|
|
|
|
extern int extraVFO;
|
|
|
|
|
extern int settingDrive;
|
|
|
|
|
extern int settingLNA;
|
|
|
|
|
extern int settingAGC;
|
|
|
|
|
extern int settingSpeed;
|
|
|
|
|
extern int stepDelay;
|
|
|
|
|
extern int setting_tracking;
|
|
|
|
|
extern int setting_drive;
|
|
|
|
|
extern int setting_lna;
|
|
|
|
|
extern int setting_agc;
|
|
|
|
|
void SetModulation(int);
|
|
|
|
|
extern int setting_modulation;
|
|
|
|
|
// extern int settingSpeed;
|
|
|
|
|
extern int setting_step_delay;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum {
|
|
|
|
|
KM_START, KM_STOP, KM_CENTER, KM_SPAN, KM_CW, KM_REFPOS, KM_SCALE, KM_ATTENUATION, KM_ACTUALPOWER, KM_IF, KM_SAMPLETIME, KM_DRIVE
|
|
|
|
|
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_HIGHOUTLEVEL
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define KP_X(x) (48*(x) + 2 + (320-BUTTON_WIDTH-192))
|
|
|
|
|
#define KP_Y(y) (48*(y) + 2)
|
|
|
|
|
|
|
|
|
|
@ -128,6 +143,7 @@ static const keypads_t keypads_level[] = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const keypads_t * const keypads_mode_tbl[] = {
|
|
|
|
|
NULL, // never used
|
|
|
|
|
keypads_freq, // start
|
|
|
|
|
keypads_freq, // stop
|
|
|
|
|
keypads_freq, // center
|
|
|
|
|
@ -140,6 +156,8 @@ static const keypads_t * const keypads_mode_tbl[] = {
|
|
|
|
|
keypads_freq, // IF
|
|
|
|
|
keypads_level, // sample time
|
|
|
|
|
keypads_scale, // drive
|
|
|
|
|
keypads_level, // KM_LOWOUTLEVEL
|
|
|
|
|
keypads_level, // KM_HIGHOUTLEVEL
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#ifdef __VNA__
|
|
|
|
|
@ -149,7 +167,7 @@ static const char * const keypad_mode_label[] = {
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef __SA__
|
|
|
|
|
static const char * const keypad_mode_label[] = {
|
|
|
|
|
"START", "STOP", "CENTER", "SPAN", "CW FREQ", "REFPOS", "SCALE", "ATTENUATION", "ACTUALPOWER", "IF", "SAMPLE TIME", "DRIVE"
|
|
|
|
|
"error", "START", "STOP", "CENTER", "SPAN", "CW FREQ", "REFPOS", "SCALE", "ATTENUATION", "ACTUALPOWER", "IF", "SAMPLE TIME", "DRIVE", "LEVEL", "LEVEL"
|
|
|
|
|
};
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
@ -159,20 +177,32 @@ static const char * const keypad_mode_label[] = {
|
|
|
|
|
|
|
|
|
|
int generator_enabled = false;
|
|
|
|
|
|
|
|
|
|
extern const menuitem_t menu_lowoutputmode[];
|
|
|
|
|
extern const menuitem_t menu_highoutputmode[];
|
|
|
|
|
extern const menuitem_t menu_modulation[];
|
|
|
|
|
extern const menuitem_t menu_top[];
|
|
|
|
|
extern const menuitem_t menu_tophigh[];
|
|
|
|
|
|
|
|
|
|
static void menu_mode_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
SetMode(item-1);
|
|
|
|
|
// draw_cal_status();
|
|
|
|
|
switch (item) {
|
|
|
|
|
case 4: // Change reference output
|
|
|
|
|
case 1:
|
|
|
|
|
menu_push_submenu(menu_top);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
SetMode(item);
|
|
|
|
|
menu_move_back();
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
case 2:
|
|
|
|
|
menu_push_submenu(menu_tophigh);
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
menu_push_submenu(menu_lowoutputmode);
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
menu_push_submenu(menu_highoutputmode);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// draw_cal_status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern int dirty;
|
|
|
|
|
@ -180,60 +210,69 @@ void menu_autosettings_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)item;
|
|
|
|
|
(void)data;
|
|
|
|
|
SetMode(M_LOW);
|
|
|
|
|
// set_sweep_frequency(ST_START, (int32_t) 0);
|
|
|
|
|
// set_sweep_frequency(ST_STOP, (int32_t) 300000000);
|
|
|
|
|
|
|
|
|
|
int value = 10; // 10dB/
|
|
|
|
|
set_trace_scale(0, value);
|
|
|
|
|
set_trace_scale(1, value);
|
|
|
|
|
set_trace_scale(2, value);
|
|
|
|
|
|
|
|
|
|
value = -10; // Top at -10dB
|
|
|
|
|
set_trace_refpos(0, - value / get_trace_scale(0) + NGRIDY);
|
|
|
|
|
set_trace_refpos(1, - value / get_trace_scale(0) + NGRIDY);
|
|
|
|
|
set_trace_refpos(2, - value / get_trace_scale(0) + NGRIDY);
|
|
|
|
|
int current_mode = GetMode();
|
|
|
|
|
SetMode(-1); // Force setmode to do something
|
|
|
|
|
SetMode(current_mode);
|
|
|
|
|
|
|
|
|
|
active_marker = 0;
|
|
|
|
|
menu_marker_type_cb(M_REFERENCE,M_REFERENCE);
|
|
|
|
|
for (int i = 1; i<MARKER_COUNT; i++ ) {
|
|
|
|
|
markers[i].enabled = false;
|
|
|
|
|
}
|
|
|
|
|
markers[0].enabled = true;
|
|
|
|
|
markers[0].mtype = M_REFERENCE;
|
|
|
|
|
|
|
|
|
|
// set_refer_output(1);
|
|
|
|
|
|
|
|
|
|
set_refer_output(1);
|
|
|
|
|
SetAttenuation(0);
|
|
|
|
|
SetPowerLevel(100); // Reset
|
|
|
|
|
// SetPowerLevel(100); // Reset
|
|
|
|
|
SetClearStorage();
|
|
|
|
|
SetRBW(0);
|
|
|
|
|
dirty = true;
|
|
|
|
|
menu_move_back();
|
|
|
|
|
// menu_move_back(); // stay in input menu
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void menu_calibrate_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
switch (item) {
|
|
|
|
|
case 1:
|
|
|
|
|
calibrate();
|
|
|
|
|
menu_move_back();
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
reset_calibration();
|
|
|
|
|
draw_menu();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void menu_config_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
switch (item) {
|
|
|
|
|
case 0:
|
|
|
|
|
touch_cal_exec();
|
|
|
|
|
redraw_frame();
|
|
|
|
|
request_to_redraw_grid();
|
|
|
|
|
draw_menu();
|
|
|
|
|
break;
|
|
|
|
|
touch_cal_exec();
|
|
|
|
|
redraw_frame();
|
|
|
|
|
request_to_redraw_grid();
|
|
|
|
|
draw_menu();
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
touch_draw_test();
|
|
|
|
|
redraw_frame();
|
|
|
|
|
request_to_redraw_grid();
|
|
|
|
|
draw_menu();
|
|
|
|
|
break;
|
|
|
|
|
touch_draw_test();
|
|
|
|
|
redraw_frame();
|
|
|
|
|
request_to_redraw_grid();
|
|
|
|
|
draw_menu();
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
menu_move_back();
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
self_test();
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
show_version();
|
|
|
|
|
redraw_frame();
|
|
|
|
|
request_to_redraw_grid();
|
|
|
|
|
draw_menu();
|
|
|
|
|
menu_move_back();
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
self_test();
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
show_version();
|
|
|
|
|
redraw_frame();
|
|
|
|
|
request_to_redraw_grid();
|
|
|
|
|
draw_menu();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -246,24 +285,38 @@ static void menu_dfu_cb(int item, uint8_t data)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int menu_refer_value[]={-1,0,1,2,3,4,5,6};
|
|
|
|
|
static void menu_refer_cb(int item, uint8_t data)
|
|
|
|
|
int menu_modulation_value[]={0, MO_NONE,MO_AM, MO_NFM, MO_WFM};
|
|
|
|
|
char *menu_modulation_text[]={"NONE","AM","NARROW FM","WIDE FM"};
|
|
|
|
|
static void menu_modulation_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
//Serial.println(item);
|
|
|
|
|
set_refer_output(menu_refer_value[item]);
|
|
|
|
|
SetModulation(menu_modulation_value[item]);
|
|
|
|
|
menu_move_back();
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
// ui_mode_normal(); // Stay in menu mode
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void menu_refer_cb2(int item, uint8_t data)
|
|
|
|
|
|
|
|
|
|
const int menu_reffer_value[]={-1,0,1,2,3,4,5,6};
|
|
|
|
|
const char *menu_reffer_text[]={"OFF","30MHz","15MHz","10MHz","4MHz","3MHz","2MHz","1MHz"};
|
|
|
|
|
static void menu_reffer_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
//Serial.println(item);
|
|
|
|
|
set_refer_output(menu_refer_value[item+5]);
|
|
|
|
|
set_refer_output(menu_reffer_value[item]);
|
|
|
|
|
menu_move_back();
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
// ui_mode_normal(); // Stay in menu mode
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void menu_reffer_cb2(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
//Serial.println(item);
|
|
|
|
|
set_refer_output(menu_reffer_value[item+5]);
|
|
|
|
|
menu_move_back();
|
|
|
|
|
// ui_mode_normal(); // Stay in menu mode
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -271,13 +324,15 @@ static void menu_spur_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
(void)item;
|
|
|
|
|
#if 0
|
|
|
|
|
if (GetSpur())
|
|
|
|
|
SetSpur(0);
|
|
|
|
|
else
|
|
|
|
|
SetSpur(1); // must be 0 or 1 !!!!
|
|
|
|
|
menu_move_back();
|
|
|
|
|
// menu_move_back();
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void menu_storage_cb(int item, uint8_t data)
|
|
|
|
|
@ -331,7 +386,7 @@ static void menu_marker_type_cb(int item, uint8_t data)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int rbwsel[]={0,3,10,30,100,300};
|
|
|
|
|
const int rbwsel[]={0,3,10,30,100,300};
|
|
|
|
|
|
|
|
|
|
static void menu_rbw_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
@ -347,9 +402,7 @@ int menu_dBper_value[]={1,2,5,10,20};
|
|
|
|
|
static void menu_dBper_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
set_trace_scale(0, menu_dBper_value[item]);
|
|
|
|
|
set_trace_scale(1, menu_dBper_value[item]);
|
|
|
|
|
set_trace_scale(2, menu_dBper_value[item]);
|
|
|
|
|
SetScale(menu_dBper_value[item]);
|
|
|
|
|
menu_move_back();
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
@ -382,9 +435,53 @@ static void choose_active_marker(void)
|
|
|
|
|
|
|
|
|
|
static void menu_scale_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
(void)item;
|
|
|
|
|
int status;
|
|
|
|
|
status = btn_wait_release();
|
|
|
|
|
if (status & EVT_BUTTON_DOWN_LONG) {
|
|
|
|
|
ui_mode_numeric(data);
|
|
|
|
|
// ui_process_numeric();
|
|
|
|
|
} else {
|
|
|
|
|
ui_mode_keypad(data);
|
|
|
|
|
ui_process_keypad();
|
|
|
|
|
}
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void menu_lowoutputmode_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
int status;
|
|
|
|
|
int km = data;
|
|
|
|
|
(void) item;
|
|
|
|
|
// if (km == KM_SCALE && trace[uistat.current_trace].type == TRC_DELAY) {
|
|
|
|
|
// km = KM_SCALEDELAY;
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
status = btn_wait_release();
|
|
|
|
|
|
|
|
|
|
if (item == 3) {
|
|
|
|
|
menu_push_submenu(menu_modulation);
|
|
|
|
|
} else
|
|
|
|
|
{
|
|
|
|
|
if (status & EVT_BUTTON_DOWN_LONG) {
|
|
|
|
|
ui_mode_numeric(km);
|
|
|
|
|
// ui_process_numeric();
|
|
|
|
|
} else {
|
|
|
|
|
area_width = AREA_WIDTH_NORMAL - MENU_BUTTON_WIDTH;
|
|
|
|
|
redraw_frame(); // Remove form numbers
|
|
|
|
|
ui_mode_keypad(km);
|
|
|
|
|
ui_process_keypad();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
}
|
|
|
|
|
#if 0
|
|
|
|
|
static void menu_highoutputmode_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
int status;
|
|
|
|
|
int km = KM_REFPOS + item;
|
|
|
|
|
int km = data;
|
|
|
|
|
(void) item;
|
|
|
|
|
|
|
|
|
|
// if (km == KM_SCALE && trace[uistat.current_trace].type == TRC_DELAY) {
|
|
|
|
|
// km = KM_SCALEDELAY;
|
|
|
|
|
// }
|
|
|
|
|
@ -393,23 +490,25 @@ static void menu_scale_cb(int item, uint8_t data)
|
|
|
|
|
ui_mode_numeric(km);
|
|
|
|
|
// ui_process_numeric();
|
|
|
|
|
} else {
|
|
|
|
|
area_width = AREA_WIDTH_NORMAL - MENU_BUTTON_WIDTH;
|
|
|
|
|
redraw_frame(); // Remove form numbers
|
|
|
|
|
ui_mode_keypad(km);
|
|
|
|
|
ui_process_keypad();
|
|
|
|
|
}
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
static void menu_settings_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void)data;
|
|
|
|
|
(void)item;
|
|
|
|
|
int status;
|
|
|
|
|
int km = KM_ACTUALPOWER+item;
|
|
|
|
|
status = btn_wait_release();
|
|
|
|
|
if (status & EVT_BUTTON_DOWN_LONG) {
|
|
|
|
|
ui_mode_numeric(km);
|
|
|
|
|
ui_mode_numeric(data);
|
|
|
|
|
// ui_process_numeric();
|
|
|
|
|
} else {
|
|
|
|
|
ui_mode_keypad(km);
|
|
|
|
|
ui_mode_keypad(data);
|
|
|
|
|
ui_process_keypad();
|
|
|
|
|
}
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
@ -420,13 +519,13 @@ static void menu_settings2_cb(int item, uint8_t data)
|
|
|
|
|
(void)data;
|
|
|
|
|
switch(item) {
|
|
|
|
|
case 0:
|
|
|
|
|
settingAGC = !settingAGC;
|
|
|
|
|
ToggleAGC();
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
settingLNA = !settingLNA;
|
|
|
|
|
ToggleLNA();;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
extraVFO = !extraVFO;
|
|
|
|
|
toggle_tracking();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
@ -437,22 +536,23 @@ static void menu_stimulus_cb(int item, uint8_t data)
|
|
|
|
|
{
|
|
|
|
|
(void) data;
|
|
|
|
|
int status;
|
|
|
|
|
switch (item) {
|
|
|
|
|
case 0: /* START */
|
|
|
|
|
case 1: /* STOP */
|
|
|
|
|
case 2: /* CENTER */
|
|
|
|
|
case 3: /* SPAN */
|
|
|
|
|
case 4: /* CW */
|
|
|
|
|
int km = item+KM_START;
|
|
|
|
|
switch (km) {
|
|
|
|
|
case KM_START: /* START */
|
|
|
|
|
case KM_STOP: /* STOP */
|
|
|
|
|
case KM_CENTER: /* CENTER */
|
|
|
|
|
case KM_SPAN: /* SPAN */
|
|
|
|
|
case KM_CW: /* CW */
|
|
|
|
|
status = btn_wait_release();
|
|
|
|
|
if (status & EVT_BUTTON_DOWN_LONG) {
|
|
|
|
|
ui_mode_numeric(item);
|
|
|
|
|
ui_mode_numeric(km);
|
|
|
|
|
// ui_process_numeric();
|
|
|
|
|
} else {
|
|
|
|
|
ui_mode_keypad(item);
|
|
|
|
|
ui_mode_keypad(km);
|
|
|
|
|
ui_process_keypad();
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 5: /* PAUSE */
|
|
|
|
|
case KM_CW+1: /* PAUSE */
|
|
|
|
|
toggle_sweep();
|
|
|
|
|
menu_move_back();
|
|
|
|
|
ui_mode_normal();
|
|
|
|
|
@ -462,18 +562,43 @@ static void menu_stimulus_cb(int item, uint8_t data)
|
|
|
|
|
draw_cal_status();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//static void menu_marker_sel_cb(int);
|
|
|
|
|
//static void menu_marker_op_cb(int);
|
|
|
|
|
|
|
|
|
|
// ===[MENU DEFINITION]=========================================================
|
|
|
|
|
|
|
|
|
|
const menuitem_t menu_modulation[] = {
|
|
|
|
|
{ MT_FORM | MT_TITLE, 0, "MODULATION",NULL},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "NONE", menu_modulation_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "AM", menu_modulation_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "NARROW FM", menu_modulation_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "WIDE FM", menu_modulation_cb},
|
|
|
|
|
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK",NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const menuitem_t menu_lowoutputmode[] = {
|
|
|
|
|
{ MT_FORM | MT_TITLE, 0, "LOW OUTPUT", NULL},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, KM_CENTER, "FREQ: %s", menu_lowoutputmode_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, KM_LOWOUTLEVEL, "LEVEL: %s", menu_lowoutputmode_cb},
|
|
|
|
|
{ MT_FORM | MT_SUBMENU, 0, "MODULATION: %s", menu_modulation},
|
|
|
|
|
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK",NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const menuitem_t menu_highoutputmode[] = {
|
|
|
|
|
{ MT_FORM | MT_TITLE, 0, "HIGH OUTPUT", NULL},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, KM_CENTER, "FREQ: %s", menu_lowoutputmode_cb}, // same menu as low mode
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, KM_HIGHOUTLEVEL, "LEVEL: %s", menu_lowoutputmode_cb},
|
|
|
|
|
{ MT_FORM | MT_SUBMENU, 0, "MODULATION: %s", menu_modulation},
|
|
|
|
|
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK",NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_average[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "OFF", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "MIN", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "MAX", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, " 2 ", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, " OFF", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2 MIN\0 HOLD", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2 MAX\0 HOLD", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2 MAX\0 DECAY", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, " 4 ", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, " 8 ", menu_average_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, " 16 ", menu_average_cb},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
@ -509,36 +634,47 @@ static const menuitem_t menu_dBper[] = {
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_refer2[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "3MHz" , menu_refer_cb2},
|
|
|
|
|
{ MT_CALLBACK, 0, "2MHz" , menu_refer_cb2},
|
|
|
|
|
{ MT_CALLBACK, 0, "1MHz" , menu_refer_cb2},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
static const menuitem_t menu_reffer2[] = {
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "3MHz" , menu_reffer_cb2},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "2MHz" , menu_reffer_cb2},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "1MHz" , menu_reffer_cb2},
|
|
|
|
|
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_refer[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "OFF" , menu_refer_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "30MHz", menu_refer_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "15MHz", menu_refer_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "10MHz", menu_refer_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "4MHz" , menu_refer_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, S_RARROW" MORE", menu_refer2},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
static const menuitem_t menu_reffer[] = {
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "OFF" , menu_reffer_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "30MHz", menu_reffer_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "15MHz", menu_reffer_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "10MHz", menu_reffer_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "4MHz" , menu_reffer_cb},
|
|
|
|
|
{ MT_FORM | MT_SUBMENU, 0, S_RARROW" MORE", menu_reffer2},
|
|
|
|
|
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_scale[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "\2REF\0LEVEL", menu_scale_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "\2SCALE/\0DIV", menu_dBper},
|
|
|
|
|
{ MT_CALLBACK, 0, "ATTEN", menu_scale_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "AVERAGE", menu_average},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2SPUR\0REDUCT.",menu_spur_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "RBW", menu_rbw},
|
|
|
|
|
{ MT_CALLBACK, KM_REFPOS, "\2REF\0LEVEL", menu_scale_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "\2SCALE/\0DIV", menu_dBper},
|
|
|
|
|
{ MT_CALLBACK, KM_ATTENUATION, "ATTEN", menu_scale_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "AVERAGE", menu_average},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2SPUR\0REDUCT.",menu_spur_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "RBW", menu_rbw},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_scalehigh[] = {
|
|
|
|
|
{ MT_CALLBACK, KM_REFPOS, "\2REF\0LEVEL", menu_scale_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "\2SCALE/\0DIV", menu_dBper},
|
|
|
|
|
{ MT_SUBMENU, 0, "AVERAGE", menu_average},
|
|
|
|
|
{ MT_SUBMENU, 0, "RBW", menu_rbw},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_stimulus[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "START", menu_stimulus_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "STOP", menu_stimulus_cb},
|
|
|
|
|
@ -560,12 +696,24 @@ static const menuitem_t menu_marker_type[] = {
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const menuitem_t menu_marker_search[] = {
|
|
|
|
|
//{ MT_CALLBACK, "OFF", menu_marker_search_cb },
|
|
|
|
|
{ MT_CALLBACK, 0, "MAXIMUM", menu_marker_search_cb },
|
|
|
|
|
{ MT_CALLBACK, 0, "MINIMUM", menu_marker_search_cb },
|
|
|
|
|
{ MT_CALLBACK, 0, "\2SEARCH\0" S_LARROW" LEFT", menu_marker_search_cb },
|
|
|
|
|
{ MT_CALLBACK, 0, "\2SEARCH\0" S_RARROW" RIGHT", menu_marker_search_cb },
|
|
|
|
|
{ MT_CALLBACK, 0, "TRACKING", menu_marker_search_cb },
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_marker_sel[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "MARKER 1", menu_marker_sel_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "MARKER 2", menu_marker_sel_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "MARKER 3", menu_marker_sel_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "MARKER 4", menu_marker_sel_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "ALL OFF", menu_marker_sel_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "\2SEARCH\0MARKER", menu_marker_search},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
@ -582,24 +730,13 @@ static const menuitem_t menu_marker[] = {
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_dfu[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "ENTER DFU", menu_dfu_cb},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_mode[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "\2LOW\0INPUT", menu_mode_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2HIGH\0INPUT",menu_mode_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2LOW\0OUTPUT", menu_mode_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2HIGH\0OUTPUT",menu_mode_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "\2REFER\0OUTPUT",menu_refer},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "ENTER DFU", menu_dfu_cb},
|
|
|
|
|
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_settings2[] =
|
|
|
|
|
{
|
|
|
|
|
// { MT_CALLBACK, 0, "TRACK", menu_settings2_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "AGC", menu_settings2_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "LNA", menu_settings2_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "BPF", menu_settings2_cb},
|
|
|
|
|
@ -609,37 +746,87 @@ static const menuitem_t menu_settings2[] =
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_settings[] =
|
|
|
|
|
{
|
|
|
|
|
{ MT_CALLBACK, 0, "\2ACTUAL\0POWER", menu_settings_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2IF\0FREQ", menu_settings_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2SAMPLE\0TIME", menu_settings_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2LO\0DRIVE", menu_settings_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, S_RARROW" MORE", menu_settings2},
|
|
|
|
|
{ MT_CALLBACK, KM_ACTUALPOWER, "\2ACTUAL\0POWER", menu_settings_cb},
|
|
|
|
|
{ MT_CALLBACK, KM_IF, "\2IF\0FREQ", menu_settings_cb},
|
|
|
|
|
{ MT_CALLBACK, KM_SAMPLETIME, "\2SAMPLE\0TIME", menu_settings_cb},
|
|
|
|
|
{ MT_CALLBACK, KM_DRIVE, "\2LO\0DRIVE", menu_settings_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, S_RARROW" MORE", menu_settings2},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// { MT_SUBMENU, 0, "RBW", menu_rbw},
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_settingshigh2[] =
|
|
|
|
|
{
|
|
|
|
|
{ MT_CALLBACK, 0, "AGC", menu_settings2_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "LNA", menu_settings2_cb},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_settingshigh[] =
|
|
|
|
|
{
|
|
|
|
|
{ MT_CALLBACK, KM_ACTUALPOWER, "\2ACTUAL\0POWER", menu_settings_cb},
|
|
|
|
|
{ MT_CALLBACK, KM_SAMPLETIME, "\2SAMPLE\0TIME", menu_settings_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, S_RARROW" MORE", menu_settingshigh2},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_calibrate[] =
|
|
|
|
|
{
|
|
|
|
|
{ MT_FORM | MT_TITLE, 0, "CONNECT INPUT AND OUTPUT", NULL},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "CALIBRATE", menu_calibrate_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "RESET CALBRATION", menu_calibrate_cb},
|
|
|
|
|
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_config[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "\2TOUCH\0CAL", menu_config_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2TOUCH\0TEST", menu_config_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "\2SELF\0TEST", menu_config_cb},
|
|
|
|
|
{ MT_CALLBACK, 0, "VERSION", menu_config_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "SETTINGS", menu_settings},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "TOUCH CAL", menu_config_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "TOUCH TEST", menu_config_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "SELF TEST", menu_config_cb},
|
|
|
|
|
{ MT_FORM | MT_SUBMENU, 0, "CALIBRATE", menu_calibrate},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "VERSION", menu_config_cb},
|
|
|
|
|
// { MT_SUBMENU, 0, "SETTINGS", menu_settings},
|
|
|
|
|
// { MT_SUBMENU, 0, "RBW", menu_rbw},
|
|
|
|
|
{ MT_SUBMENU, 0, S_RARROW"DFU", menu_dfu},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_FORM | MT_SUBMENU, 0, S_RARROW"DFU", menu_dfu},
|
|
|
|
|
{ MT_FORM | MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static const menuitem_t menu_top[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "AUTO", menu_autosettings_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "SCAN", menu_stimulus},
|
|
|
|
|
{ MT_SUBMENU, 0, "MARKER", menu_marker},
|
|
|
|
|
{ MT_SUBMENU, 0, "DISPLAY", menu_scale},
|
|
|
|
|
{ MT_SUBMENU, 0, "STORAGE", menu_storage},
|
|
|
|
|
{ MT_SUBMENU, 0, "MODE", menu_mode},
|
|
|
|
|
{ MT_SUBMENU, 0, "CONFIG", menu_config},
|
|
|
|
|
static const menuitem_t menu_mode[] = {
|
|
|
|
|
{ MT_FORM | MT_TITLE, 0, "MODE", NULL},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "LOW INPUT", menu_mode_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "HIGH INPUT", menu_mode_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "LOW OUTPUT", menu_mode_cb},
|
|
|
|
|
{ MT_FORM | MT_CALLBACK, 0, "HIGH OUTPUT", menu_mode_cb},
|
|
|
|
|
{ MT_FORM | MT_SUBMENU, 0, "CAL OUTPUT: %s", menu_reffer},
|
|
|
|
|
{ MT_FORM | MT_SUBMENU, 0, "CONFIG", menu_config},
|
|
|
|
|
// { MT_CANCEL, 0, S_LARROW" BACK", NULL },
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const menuitem_t menu_top[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "AUTO", menu_autosettings_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "SCAN", menu_stimulus},
|
|
|
|
|
{ MT_SUBMENU, 0, "MARKER", menu_marker},
|
|
|
|
|
{ MT_SUBMENU, 0, "DISPLAY", menu_scale},
|
|
|
|
|
{ MT_SUBMENU, 0, "STORAGE", menu_storage},
|
|
|
|
|
{ MT_SUBMENU, 0, "SETTINGS", menu_settings},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" MODE",NULL},
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel,
|
|
|
|
|
// MENUITEM_CLOSE,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const menuitem_t menu_tophigh[] = {
|
|
|
|
|
{ MT_CALLBACK, 0, "AUTO", menu_autosettings_cb},
|
|
|
|
|
{ MT_SUBMENU, 0, "SCAN", menu_stimulus},
|
|
|
|
|
{ MT_SUBMENU, 0, "MARKER", menu_marker},
|
|
|
|
|
{ MT_SUBMENU, 0, "DISPLAY", menu_scalehigh},
|
|
|
|
|
{ MT_SUBMENU, 0, "STORAGE", menu_storage},
|
|
|
|
|
{ MT_SUBMENU, 0, "SETTINGS", menu_settingshigh},
|
|
|
|
|
{ MT_CANCEL, 0, S_LARROW" MODE",NULL},
|
|
|
|
|
{ MT_NONE, 0, NULL, NULL } // sentinel,
|
|
|
|
|
// MENUITEM_CLOSE,
|
|
|
|
|
};
|
|
|
|
|
@ -651,20 +838,38 @@ static const menuitem_t menu_top[] = {
|
|
|
|
|
|
|
|
|
|
#define ACTIVE_COLOR RGBHEX(0x007FFF)
|
|
|
|
|
|
|
|
|
|
void frequency_string(char *buf, size_t len, int32_t freq);
|
|
|
|
|
|
|
|
|
|
int menu_is_form(const menuitem_t *menu)
|
|
|
|
|
{
|
|
|
|
|
int i;
|
|
|
|
|
for (i = 0; MT_MASK(menu[i].type) != MT_NONE; i++)
|
|
|
|
|
if (menu[i].type & MT_FORM)
|
|
|
|
|
return (true);
|
|
|
|
|
return(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void menu_item_modify_attribute(
|
|
|
|
|
const menuitem_t *menu, int item, uint16_t *fg, uint16_t *bg)
|
|
|
|
|
{
|
|
|
|
|
if (menu == menu_mode) {
|
|
|
|
|
if (item == GetMode()){
|
|
|
|
|
if (item == GetMode()+1) {
|
|
|
|
|
*bg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
*fg = config.menu_normal_color;
|
|
|
|
|
} else if (item == 5) {
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, menu_reffer_text[get_refer_output()+1]);
|
|
|
|
|
}
|
|
|
|
|
} else if (menu == menu_refer) {
|
|
|
|
|
} else if (menu == menu_lowoutputmode || menu == menu_highoutputmode) {
|
|
|
|
|
if (item == 3) {
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, menu_modulation_text[setting_modulation]);
|
|
|
|
|
}
|
|
|
|
|
} else if (menu == menu_reffer) {
|
|
|
|
|
if (item < 5 && item == get_refer_output() + 1){
|
|
|
|
|
*bg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
*fg = config.menu_normal_color;
|
|
|
|
|
}
|
|
|
|
|
} else if (menu == menu_refer2) {
|
|
|
|
|
} else if (menu == menu_reffer2) {
|
|
|
|
|
if (item == get_refer_output() - 4){
|
|
|
|
|
*bg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
*fg = config.menu_normal_color;
|
|
|
|
|
@ -675,10 +880,12 @@ static void menu_item_modify_attribute(
|
|
|
|
|
*fg = config.menu_normal_color;
|
|
|
|
|
}
|
|
|
|
|
} else if (menu == menu_scale) {
|
|
|
|
|
#if 0
|
|
|
|
|
if (item == 4 /* Spur reduction */ && GetSpur()) {
|
|
|
|
|
*bg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
*fg = config.menu_normal_color;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
} else if (menu == menu_average) {
|
|
|
|
|
if (item == GetAverage()){
|
|
|
|
|
*bg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
@ -708,20 +915,64 @@ static void menu_item_modify_attribute(
|
|
|
|
|
*bg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
*fg = config.menu_normal_color;
|
|
|
|
|
}
|
|
|
|
|
} else if (menu == menu_settings2) {
|
|
|
|
|
if (item ==0 && settingAGC){
|
|
|
|
|
} else if (menu == menu_settings2 || menu == menu_settingshigh2) {
|
|
|
|
|
if (item ==0 && setting_agc){
|
|
|
|
|
*bg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
*fg = config.menu_normal_color;
|
|
|
|
|
}
|
|
|
|
|
if (item == 1 && settingLNA){
|
|
|
|
|
if (item == 1 && setting_lna){
|
|
|
|
|
*bg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
*fg = config.menu_normal_color;
|
|
|
|
|
}
|
|
|
|
|
if (item == 2 && extraVFO){
|
|
|
|
|
if (item == 2 && setting_tracking){ // should not happen in high mode
|
|
|
|
|
*bg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
*fg = config.menu_normal_color;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (ui_mode == UI_MENU && menu_is_form(menu)) {
|
|
|
|
|
// if (item == 0)
|
|
|
|
|
// redraw_frame();
|
|
|
|
|
if (item <= 1) {
|
|
|
|
|
|
|
|
|
|
area_width = 0;
|
|
|
|
|
#if 0
|
|
|
|
|
// area_height = HEIGHT - 32;
|
|
|
|
|
int y = MENU_BUTTON_HEIGHT*item;
|
|
|
|
|
uint16_t bg = config.menu_normal_color;
|
|
|
|
|
uint16_t fg = DEFAULT_MENU_TEXT_COLOR;
|
|
|
|
|
// ili9341_fill(320-MENU_BUTTON_WIDTH, y, MENU_BUTTON_WIDTH, MENU_BUTTON_HEIGHT-2, bg);
|
|
|
|
|
ili9341_set_foreground(fg);
|
|
|
|
|
ili9341_set_background(bg);
|
|
|
|
|
char buf[15];
|
|
|
|
|
ili9341_fill(50+25, y, 170, MENU_BUTTON_HEIGHT-2, bg);
|
|
|
|
|
if (menu == menu_lowoutputmode) {
|
|
|
|
|
switch (item) {
|
|
|
|
|
case 0:
|
|
|
|
|
set_sweep_frequency(ST_SPAN, 0); // For CW sweep mode
|
|
|
|
|
plot_printf(buf, sizeof buf, "%3.3fMHz", frequency0 / 1000000.0);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
plot_printf(buf, sizeof buf, "%ddB", -10 - setting_attenuate);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (menu == menu_highoutputmode) {
|
|
|
|
|
switch (item) {
|
|
|
|
|
case 0:
|
|
|
|
|
set_sweep_frequency(ST_SPAN, 0); // For CW sweep mode
|
|
|
|
|
plot_printf(buf, sizeof buf, "%3.3fMHz", frequency0 / 1000000.0);
|
|
|
|
|
break;
|
|
|
|
|
case 1:
|
|
|
|
|
plot_printf(buf, sizeof buf, "%ddB", -10 - setting_drive);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ili9341_drawstring_size(buf, 130, y+6, 2);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
area_width = AREA_WIDTH_NORMAL - MENU_BUTTON_WIDTH;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void fetch_numeric_target(void)
|
|
|
|
|
@ -729,41 +980,61 @@ static void fetch_numeric_target(void)
|
|
|
|
|
switch (keypad_mode) {
|
|
|
|
|
case KM_START:
|
|
|
|
|
uistat.value = get_sweep_frequency(ST_START);
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%3.3fMHz", uistat.value / 1000000.0);
|
|
|
|
|
break;
|
|
|
|
|
case KM_STOP:
|
|
|
|
|
uistat.value = get_sweep_frequency(ST_STOP);
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%3.3fMHz", uistat.value / 1000000.0);
|
|
|
|
|
break;
|
|
|
|
|
case KM_CENTER:
|
|
|
|
|
uistat.value = get_sweep_frequency(ST_CENTER);
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%3.3fMHz", uistat.value / 1000000.0);
|
|
|
|
|
break;
|
|
|
|
|
case KM_SPAN:
|
|
|
|
|
uistat.value = get_sweep_frequency(ST_SPAN);
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%3.3fMHz", uistat.value / 1000000.0);
|
|
|
|
|
break;
|
|
|
|
|
case KM_CW:
|
|
|
|
|
uistat.value = get_sweep_frequency(ST_CW);
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%3.3fMHz", uistat.value / 1000000.0);
|
|
|
|
|
break;
|
|
|
|
|
case KM_SCALE:
|
|
|
|
|
uistat.value = get_trace_scale(uistat.current_trace) * 1000;
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%ddB/", uistat.value / 1000);
|
|
|
|
|
break;
|
|
|
|
|
case KM_REFPOS:
|
|
|
|
|
uistat.value = get_trace_refpos(uistat.current_trace) * 1000;
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%ddB", uistat.value / 1000);
|
|
|
|
|
break;
|
|
|
|
|
case KM_ATTENUATION:
|
|
|
|
|
uistat.value = settingAttenuate;
|
|
|
|
|
uistat.value = setting_attenuate;
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%ddB", uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
case KM_ACTUALPOWER:
|
|
|
|
|
uistat.value = settingLevelOffset();
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%ddB", uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
case KM_IF:
|
|
|
|
|
uistat.value = frequency_IF;
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%3.3fMHz", uistat.value / 1000000.0);
|
|
|
|
|
break;
|
|
|
|
|
case KM_SAMPLETIME:
|
|
|
|
|
uistat.value = settingSpeed;
|
|
|
|
|
uistat.value = setting_step_delay;
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%3duS", uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
case KM_DRIVE:
|
|
|
|
|
uistat.value = settingDrive;
|
|
|
|
|
uistat.value = setting_drive;
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%3ddB", uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
case KM_LOWOUTLEVEL:
|
|
|
|
|
uistat.value = setting_attenuate;
|
|
|
|
|
uistat.value = -5 - uistat.value; // compensation for dB offset during low output mode
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%ddB", uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
case KM_HIGHOUTLEVEL:
|
|
|
|
|
uistat.value = setting_drive*5 + 5;
|
|
|
|
|
plot_printf(uistat.text, sizeof uistat.text, "%3ddB", uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
@ -776,7 +1047,6 @@ static void fetch_numeric_target(void)
|
|
|
|
|
// uistat.previous_value = uistat.value;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
set_numeric_value(void)
|
|
|
|
|
{
|
|
|
|
|
@ -802,9 +1072,7 @@ set_numeric_value(void)
|
|
|
|
|
set_trace_scale(2, uistat.value / 1000.0);
|
|
|
|
|
break;
|
|
|
|
|
case KM_REFPOS:
|
|
|
|
|
set_trace_refpos(0, NGRIDY - uistat.value / get_trace_scale(0));
|
|
|
|
|
set_trace_refpos(1, NGRIDY - uistat.value / get_trace_scale(0));
|
|
|
|
|
set_trace_refpos(2, NGRIDY - uistat.value / get_trace_scale(0));
|
|
|
|
|
SetRefpos(uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
case KM_ATTENUATION:
|
|
|
|
|
SetAttenuation(uistat.value);
|
|
|
|
|
@ -814,14 +1082,22 @@ set_numeric_value(void)
|
|
|
|
|
config_save();
|
|
|
|
|
break;
|
|
|
|
|
case KM_IF:
|
|
|
|
|
frequency_IF = uistat.value;
|
|
|
|
|
SetIF(uistat.value);
|
|
|
|
|
config_save();
|
|
|
|
|
break;
|
|
|
|
|
case KM_SAMPLETIME:
|
|
|
|
|
settingSpeed = uistat.value;
|
|
|
|
|
SetStepDelay(uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
case KM_DRIVE:
|
|
|
|
|
settingDrive = uistat.value;
|
|
|
|
|
SetDrive(uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
case KM_LOWOUTLEVEL:
|
|
|
|
|
uistat.value = -5 - uistat.value ; // compensation for dB offset during low output mode
|
|
|
|
|
SetAttenuation(uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
case KM_HIGHOUTLEVEL:
|
|
|
|
|
uistat.value = uistat.value / 5 - 1 ; // compensation for dB offset during high output mode
|
|
|
|
|
SetDrive(uistat.value);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|