tinySA-V4-SI4463
erikkaashoek 5 years ago
parent fd53c06bae
commit 22bea84c4d

@ -140,8 +140,12 @@
#endif #endif
#define TRACE_ACTUAL 0 // order linked to colors in palette!!!!! #define TRACE_ACTUAL 0 // order linked to colors in palette!!!!!
#define TRACE_TEMP (LCD_TRACE_2_COLOR - LCD_TRACE_1_COLOR) #if TRACES_MAX == 3
#define TRACE_STORED (LCD_TRACE_3_COLOR - LCD_TRACE_1_COLOR) #define TRACE_TEMP (LCD_TRACE_3_COLOR - LCD_TRACE_1_COLOR)
#else
#define TRACE_TEMP (LCD_TRACE_4_COLOR - LCD_TRACE_1_COLOR)
#endif
#define TRACE_STORED (LCD_TRACE_2_COLOR - LCD_TRACE_1_COLOR)
//#define TRACE_AGE 3 //#define TRACE_AGE 3
#define TRACE_INVALID -1 #define TRACE_INVALID -1
@ -339,7 +343,7 @@ void set_average(int t, int);
void set_storage(void); void set_storage(void);
void set_clear_storage(void); void set_clear_storage(void);
void set_subtract_storage(void); void set_subtract_storage(void);
void toggle_normalize(void); void toggle_normalize(int);
void set_waterfall(void); void set_waterfall(void);
void disable_waterfall(void); void disable_waterfall(void);
void set_mode(int); void set_mode(int);
@ -858,6 +862,7 @@ typedef uint16_t pixel_t;
#define LCD_M_NOISE 28 #define LCD_M_NOISE 28
#define LCD_M_DEFAULT 29 #define LCD_M_DEFAULT 29
#if TRACES_MAX == 3
#define LCD_DEFAULT_PALETTE {\ #define LCD_DEFAULT_PALETTE {\
[LCD_BG_COLOR ] = RGB565( 0, 0, 0), \ [LCD_BG_COLOR ] = RGB565( 0, 0, 0), \
[LCD_FG_COLOR ] = RGB565(255,255,255), \ [LCD_FG_COLOR ] = RGB565(255,255,255), \
@ -866,8 +871,8 @@ typedef uint16_t pixel_t;
[LCD_MENU_TEXT_COLOR ] = RGB565( 0, 0, 0), \ [LCD_MENU_TEXT_COLOR ] = RGB565( 0, 0, 0), \
[LCD_MENU_ACTIVE_COLOR] = RGB565(210,210,210), \ [LCD_MENU_ACTIVE_COLOR] = RGB565(210,210,210), \
[LCD_TRACE_1_COLOR ] = RGB565(255,255, 0), \ [LCD_TRACE_1_COLOR ] = RGB565(255,255, 0), \
[LCD_TRACE_2_COLOR ] = RGB565(255, 64, 64), \ [LCD_TRACE_2_COLOR ] = RGB565( 64,255, 64), \
[LCD_TRACE_3_COLOR ] = RGB565( 64,255, 64), \ [LCD_TRACE_3_COLOR ] = RGB565(255, 64, 64), \
[LCD_TRACE_4_COLOR ] = RGB565(255, 0,255), \ [LCD_TRACE_4_COLOR ] = RGB565(255, 0,255), \
[LCD_NORMAL_BAT_COLOR ] = RGB565( 31,227, 0), \ [LCD_NORMAL_BAT_COLOR ] = RGB565( 31,227, 0), \
[LCD_LOW_BAT_COLOR ] = RGB565(255, 0, 0), \ [LCD_LOW_BAT_COLOR ] = RGB565(255, 0, 0), \
@ -890,6 +895,40 @@ typedef uint16_t pixel_t;
[LCD_M_NOISE ] = RGB565( 0,255,255), \ [LCD_M_NOISE ] = RGB565( 0,255,255), \
[LCD_M_DEFAULT ] = RGB565(255,255, 0), \ [LCD_M_DEFAULT ] = RGB565(255,255, 0), \
} }
#else
#define LCD_DEFAULT_PALETTE {\
[LCD_BG_COLOR ] = RGB565( 0, 0, 0), \
[LCD_FG_COLOR ] = RGB565(255,255,255), \
[LCD_GRID_COLOR ] = RGB565(128,128,128), \
[LCD_MENU_COLOR ] = RGB565(230,230,230), \
[LCD_MENU_TEXT_COLOR ] = RGB565( 0, 0, 0), \
[LCD_MENU_ACTIVE_COLOR] = RGB565(210,210,210), \
[LCD_TRACE_1_COLOR ] = RGB565(255,255, 0), \
[LCD_TRACE_2_COLOR ] = RGB565( 64,255, 64), \
[LCD_TRACE_3_COLOR ] = RGB565(255, 0,255), \
[LCD_TRACE_4_COLOR ] = RGB565(255, 64, 64), \
[LCD_NORMAL_BAT_COLOR ] = RGB565( 31,227, 0), \
[LCD_LOW_BAT_COLOR ] = RGB565(255, 0, 0), \
[LCD_TRIGGER_COLOR ] = RGB565( 0, 0,255), \
[LCD_RISE_EDGE_COLOR ] = RGB565(255,255,255), \
[LCD_FALLEN_EDGE_COLOR] = RGB565(128,128,128), \
[LCD_SWEEP_LINE_COLOR ] = RGB565( 0,255, 0), \
[LCD_BW_TEXT_COLOR ] = RGB565(128,128,128), \
[LCD_INPUT_TEXT_COLOR ] = RGB565( 0, 0, 0), \
[LCD_INPUT_BG_COLOR ] = RGB565(255,255,255), \
[LCD_BRIGHT_COLOR_BLUE] = RGB565( 0, 0,255), \
[LCD_BRIGHT_COLOR_RED ] = RGB565(255,128,128), \
[LCD_BRIGHT_COLOR_GREEN]= RGB565( 0,255, 0), \
[LCD_DARK_GREY ] = RGB565(140,140,140), \
[LCD_LIGHT_GREY ] = RGB565(220,220,220), \
[LCD_HAM_COLOR ] = RGB565( 80, 80, 80), \
[LCD_GRID_VALUE_COLOR ] = RGB565(196,196,196), \
[LCD_M_REFERENCE ] = RGB565(255,255,255), \
[LCD_M_DELTA ] = RGB565( 0,255, 0), \
[LCD_M_NOISE ] = RGB565( 0,255,255), \
[LCD_M_DEFAULT ] = RGB565(255,255, 0), \
}
#endif
#define GET_PALTETTE_COLOR(idx) config.lcd_palette[idx] #define GET_PALTETTE_COLOR(idx) config.lcd_palette[idx]
@ -972,6 +1011,7 @@ typedef struct setting
uint8_t subtract[TRACES_MAX];// index uint8_t subtract[TRACES_MAX];// index
uint8_t measurement; // enum uint8_t measurement; // enum
uint8_t spur_removal; // enum uint8_t spur_removal; // enum
int8_t normalized_trace;
int8_t tracking; // -1...1 Can NOT convert to bool!!!!!! int8_t tracking; // -1...1 Can NOT convert to bool!!!!!!
uint8_t atten_step; // 0...1 !!! need convert to bool uint8_t atten_step; // 0...1 !!! need convert to bool

@ -254,6 +254,8 @@ void reset_settings(int m)
setting.show_stored = 0; setting.show_stored = 0;
setting.auto_attenuation = false; setting.auto_attenuation = false;
setting.normalize_level = 0.0; setting.normalize_level = 0.0;
setting.normalized_trace = -1;
#ifdef TINYSA4 #ifdef TINYSA4
setting.lo_drive=5; setting.lo_drive=5;
#else #else
@ -943,13 +945,19 @@ void limits_update(void)
} }
#endif #endif
void store_trace(int f, int t) void copy_trace(int f, int t)
{ {
if (f == t) if (f == t)
return; return;
for (int i=0; i<POINTS_COUNT;i++) for (int i=0; i<POINTS_COUNT;i++)
measured[t][i] = measured[f][i]; measured[t][i] = measured[f][i];
setting.stored[t] = true; setting.stored[t] = true;
//dirty = true; // No HW update required, only status panel refresh
}
void store_trace(int f, int t)
{
copy_trace(f,t);
enableTracesAtComplete(1<<t); enableTracesAtComplete(1<<t);
//dirty = true; // No HW update required, only status panel refresh //dirty = true; // No HW update required, only status panel refresh
} }
@ -990,19 +998,22 @@ void subtract_trace(int t, int f)
setting.subtract[t] = 0; setting.subtract[t] = 0;
} }
void toggle_normalize(void) void toggle_normalize(int t)
{ {
/* if (!setting.subtract_stored) { if (setting.normalized_trace != -1 && t != setting.normalized_trace) {
for (int i=0; i<POINTS_COUNT;i++) setting.subtract[setting.normalized_trace] = 0;
stored_t[i] = actual_t[i]; setting.normalized_trace = -1;
setting.subtract_stored = true; }
if (!setting.subtract[t]) {
copy_trace(t,TRACE_TEMP);
setting.subtract[t] = TRACE_TEMP+1;
setting.auto_attenuation = false; // Otherwise noise level may move leading to strange measurements setting.auto_attenuation = false; // Otherwise noise level may move leading to strange measurements
setting.normalize_level = 0.0; setting.normalize_level = 0.0;
setting.normalized_trace = t;
} else { } else {
setting.subtract_stored = false; setting.subtract[t] = 0;
setting.normalized_trace = -1;
} }
*/
//dirty = true; // No HW update required, only status panel refresh
} }
@ -1182,8 +1193,9 @@ void set_average(int t, int v)
&& (v != AV_QUASI) && (v != AV_QUASI)
#endif #endif
); );
if (enable && !IS_TRACES_ENABLED(TRACE_TEMP_FLAG)) { if (enable && !IS_TRACES_ENABLED(TRACE_TEMP_FLAG) && setting.normalized_trace == -1) {
enableTracesAtComplete(TRACE_TEMP_FLAG); enableTracesAtComplete(TRACE_TEMP_FLAG);
setting.stored[TRACE_TEMP] = false;
scan_after_dirty = 0; scan_after_dirty = 0;
} }
// else // else
@ -5019,6 +5031,7 @@ static void test_acquire(int i)
peakLevel = summed_peak_level / LEVEL_TEST_SWEEPS; peakLevel = summed_peak_level / LEVEL_TEST_SWEEPS;
} else } else
sweep(false); sweep(false);
TRACE_ENABLE(TRACE_STORED_FLAG);
plot_into_index(measured); plot_into_index(measured);
redraw_request |= REDRAW_CELLS | REDRAW_FREQUENCY; redraw_request |= REDRAW_CELLS | REDRAW_FREQUENCY;
} }

@ -518,6 +518,7 @@ static const menuitem_t menu_top[];
static const menuitem_t menu_trace[]; static const menuitem_t menu_trace[];
static const menuitem_t menu_marker_trace[]; static const menuitem_t menu_marker_trace[];
static const menuitem_t menu_subtract_trace[]; static const menuitem_t menu_subtract_trace[];
static const menuitem_t menu_average[];
static const menuitem_t menu_reffer[]; static const menuitem_t menu_reffer[];
static const menuitem_t menu_sweep_points[]; static const menuitem_t menu_sweep_points[];
static const menuitem_t menu_sweep_points_form[]; static const menuitem_t menu_sweep_points_form[];
@ -1595,6 +1596,15 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb)
plot_printf(b->text, sizeof(b->text), "SUBTRACT\nTRACE %d", setting.subtract[current_trace]); plot_printf(b->text, sizeof(b->text), "SUBTRACT\nTRACE %d", setting.subtract[current_trace]);
else else
plot_printf(b->text, sizeof(b->text), "SUBTRACT\nOFF"); plot_printf(b->text, sizeof(b->text), "SUBTRACT\nOFF");
b->icon = setting.subtract[current_trace] ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
} else if (data == 4) {
if (current_trace == TRACES_MAX-1)
b->fg = LCD_DARK_GREY;
else
b->icon = setting.normalized_trace == current_trace ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
} else if (data == 5) {
plot_printf(b->text, sizeof(b->text), "CALC\n%s", averageText[setting.average[0]]);
b->icon = setting.average[current_trace] ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
} }
return; return;
} }
@ -1624,6 +1634,22 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb)
menu_push_submenu(menu_subtract_trace); menu_push_submenu(menu_subtract_trace);
return; return;
break; break;
case 4:
if (current_trace < TRACES_MAX-1) {
toggle_normalize(current_trace);
if (setting.subtract[current_trace]) {
kp_help_text = "Ref level";
ui_mode_keypad(KM_REFLEVEL);
// setting.normalize_level = uistat.value;
} else
set_auto_reflevel(true);
}
break;
case 5:
menu_push_submenu(menu_average);
return;
break;
#ifdef TINYSA4 #ifdef TINYSA4
case 6: case 6:
save_to_sd(1+(2<<current_trace)); // frequencies + trace save_to_sd(1+(2<<current_trace)); // frequencies + trace
@ -1633,7 +1659,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_traces_acb)
// ui_mode_normal(); // ui_mode_normal();
// draw_cal_status(); // draw_cal_status();
} }
#if 0
static UI_FUNCTION_ADV_CALLBACK(menu_storage_acb) static UI_FUNCTION_ADV_CALLBACK(menu_storage_acb)
{ {
(void)item; (void)item;
@ -1679,6 +1705,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_storage_acb)
ui_mode_normal(); ui_mode_normal();
// draw_cal_status(); // draw_cal_status();
} }
#endif
static UI_FUNCTION_ADV_CALLBACK(menu_waterfall_acb){ static UI_FUNCTION_ADV_CALLBACK(menu_waterfall_acb){
(void)item; (void)item;
@ -2770,7 +2797,7 @@ static const menuitem_t menu_config[] = {
#endif #endif
{ MT_NONE, 0, NULL, menu_back} // next-> menu_back { MT_NONE, 0, NULL, menu_back} // next-> menu_back
}; };
#if 0
static const menuitem_t menu_storage[] = static const menuitem_t menu_storage[] =
{ {
{ MT_ADV_CALLBACK,0, "TRACE %d", menu_storage_acb}, { MT_ADV_CALLBACK,0, "TRACE %d", menu_storage_acb},
@ -2782,7 +2809,7 @@ static const menuitem_t menu_storage[] =
{ MT_ADV_CALLBACK,5, "WRITE\n"S_RARROW"SD",menu_storage_acb}, { MT_ADV_CALLBACK,5, "WRITE\n"S_RARROW"SD",menu_storage_acb},
{ MT_NONE, 0, NULL, menu_back} // next-> menu_back { MT_NONE, 0, NULL, menu_back} // next-> menu_back
}; };
#endif
static const menuitem_t menu_trace[] = static const menuitem_t menu_trace[] =
{ {
{ MT_ADV_CALLBACK|MT_REPEATS,DATA_STARTS_REPEATS(0,TRACES_MAX), "TRACE %d", menu_trace_acb}, { MT_ADV_CALLBACK|MT_REPEATS,DATA_STARTS_REPEATS(0,TRACES_MAX), "TRACE %d", menu_trace_acb},
@ -2813,7 +2840,8 @@ static const menuitem_t menu_traces[] =
{ MT_ADV_CALLBACK,1, "ENABLE", menu_traces_acb}, { MT_ADV_CALLBACK,1, "ENABLE", menu_traces_acb},
{ MT_ADV_CALLBACK,2, "FREEZE", menu_traces_acb}, { MT_ADV_CALLBACK,2, "FREEZE", menu_traces_acb},
{ MT_ADV_CALLBACK,3, MT_CUSTOM_LABEL, menu_traces_acb}, { MT_ADV_CALLBACK,3, MT_CUSTOM_LABEL, menu_traces_acb},
{ MT_SUBMENU, 0, "CALC", menu_average}, { MT_ADV_CALLBACK,4, "NORMALIZE", menu_traces_acb},
{ MT_ADV_CALLBACK,5, MT_CUSTOM_LABEL, menu_traces_acb},
{ MT_SUBMENU, 0, "COPY\n"S_RARROW"TRACE", menu_store_trace}, { MT_SUBMENU, 0, "COPY\n"S_RARROW"TRACE", menu_store_trace},
#ifdef TINYSA4 #ifdef TINYSA4
{ MT_ADV_CALLBACK,6, "WRITE\n"S_RARROW"SD", menu_traces_acb}, { MT_ADV_CALLBACK,6, "WRITE\n"S_RARROW"SD", menu_traces_acb},
@ -2824,6 +2852,9 @@ static const menuitem_t menu_traces[] =
static const menuitem_t menu_display[] = { static const menuitem_t menu_display[] = {
{ MT_ADV_CALLBACK,0, "PAUSE\nSWEEP", menu_pause_acb}, { MT_ADV_CALLBACK,0, "PAUSE\nSWEEP", menu_pause_acb},
{ MT_ADV_CALLBACK,1, "WATER\nFALL", menu_waterfall_acb}, { MT_ADV_CALLBACK,1, "WATER\nFALL", menu_waterfall_acb},
#ifdef __VBW__
{ MT_SUBMENU, 0, "VBW", menu_vbw},
#endif
#ifdef __LIMITS__ #ifdef __LIMITS__
{ MT_SUBMENU, 0, "LIMITS", menu_limit_select}, { MT_SUBMENU, 0, "LIMITS", menu_limit_select},
#endif #endif
@ -3497,7 +3528,7 @@ redraw_cal_status:
if (setting.subtract[0]) { if (setting.subtract[0]) {
ili9341_set_foreground(LCD_BRIGHT_COLOR_GREEN); ili9341_set_foreground(LCD_BRIGHT_COLOR_GREEN);
ili9341_drawstring("Norm.", x, y); ili9341_drawstring("Norm.", x, y);
y = add_quick_menu(y, (menuitem_t *)menu_storage); y = add_quick_menu(y, (menuitem_t *)menu_display);
} }
// RBW // RBW

Loading…
Cancel
Save

Powered by TurnKey Linux.