add menu item delay (but not work)

This commit is contained in:
TT 2017-01-05 09:04:28 +09:00
parent 3852f9cb21
commit 5ebb3330ff
4 changed files with 77 additions and 41 deletions

46
main.c
View file

@ -323,6 +323,7 @@ config_t config = {
/* menu_normal_color */ 0xffff, /* menu_normal_color */ 0xffff,
/* menu_active_color */ 0x7777, /* menu_active_color */ 0x7777,
/* trace_colors[4] */ { RGB565(0,255,255), RGB565(255,0,40), RGB565(0,0,255), RGB565(50,255,0) }, /* trace_colors[4] */ { RGB565(0,255,255), RGB565(255,0,40), RGB565(0,0,255), RGB565(50,255,0) },
///* touch_cal[4] */ { 620, 600, 160, 190 },
/* touch_cal[4] */ { 620, 600, 130, 180 }, /* touch_cal[4] */ { 620, 600, 130, 180 },
/* checksum */ 0 /* checksum */ 0
}; };
@ -336,6 +337,7 @@ properties_t current_props = {
/* frequencies */ {}, /* frequencies */ {},
/* cal_data */ {}, /* cal_data */ {},
/* trace[4] */ { /* trace[4] */ {
/* enable, type, channel, polar, scale */
{ 1, TRC_LOGMAG, 0, 0, 1.0 }, { 1, TRC_LOGMAG, 0, 0, 1.0 },
{ 1, TRC_LOGMAG, 1, 0, 1.0 }, { 1, TRC_LOGMAG, 1, 0, 1.0 },
{ 1, TRC_SMITH, 0, 1, 1.0 }, { 1, TRC_SMITH, 0, 1, 1.0 },
@ -472,6 +474,7 @@ freq_mode_startstop(void)
if (frequency1 <= 0) { if (frequency1 <= 0) {
int center = frequency0; int center = frequency0;
int span = -frequency1; int span = -frequency1;
ensure_edit_config();
frequency0 = center - span/2; frequency0 = center - span/2;
frequency1 = center + span/2; frequency1 = center + span/2;
} }
@ -483,6 +486,7 @@ freq_mode_centerspan(void)
if (frequency1 > 0) { if (frequency1 > 0) {
int start = frequency0; int start = frequency0;
int stop = frequency1; int stop = frequency1;
ensure_edit_config();
frequency0 = (start + stop)/2; // center frequency0 = (start + stop)/2; // center
frequency1 = -(stop - start); // span frequency1 = -(stop - start); // span
} }
@ -493,34 +497,36 @@ freq_mode_centerspan(void)
#define STOP_MAX 300000000 #define STOP_MAX 300000000
void void
set_sweep_frequency(int type, int frequency) set_sweep_frequency(int type, float frequency)
{ {
int32_t freq = frequency;
switch (type) { switch (type) {
case ST_START: case ST_START:
ensure_edit_config();
freq_mode_startstop(); freq_mode_startstop();
if (frequency < START_MIN) if (frequency < START_MIN)
frequency = START_MIN; freq = START_MIN;
if (frequency0 != frequency) { if (frequency0 != freq) {
frequency0 = frequency; ensure_edit_config();
frequency0 = freq;
update_frequencies(); update_frequencies();
} }
break; break;
case ST_STOP: case ST_STOP:
ensure_edit_config();
freq_mode_startstop(); freq_mode_startstop();
if (frequency > STOP_MAX) if (frequency > STOP_MAX)
frequency = STOP_MAX; freq = STOP_MAX;
if (frequency1 != frequency) { if (frequency1 != freq) {
frequency1 = frequency; ensure_edit_config();
frequency1 = freq;
update_frequencies(); update_frequencies();
} }
break; break;
case ST_CENTER: case ST_CENTER:
ensure_edit_config(); ensure_edit_config();
freq_mode_centerspan(); freq_mode_centerspan();
if (frequency0 != frequency) { if (frequency0 != freq) {
frequency0 = frequency; ensure_edit_config();
frequency0 = freq;
int center = frequency0; int center = frequency0;
int span = -frequency1; int span = -frequency1;
if (center-span/2 < START_MIN) { if (center-span/2 < START_MIN) {
@ -535,10 +541,10 @@ set_sweep_frequency(int type, int frequency)
} }
break; break;
case ST_SPAN: case ST_SPAN:
ensure_edit_config();
freq_mode_centerspan(); freq_mode_centerspan();
if (frequency1 != -frequency) { if (frequency1 != -freq) {
frequency1 = -frequency; ensure_edit_config();
frequency1 = -freq;
int center = frequency0; int center = frequency0;
int span = -frequency1; int span = -frequency1;
if (center-span/2 < START_MIN) { if (center-span/2 < START_MIN) {
@ -553,9 +559,9 @@ set_sweep_frequency(int type, int frequency)
} }
break; break;
case ST_CW: case ST_CW:
ensure_edit_config();
freq_mode_centerspan(); freq_mode_centerspan();
if (frequency0 != frequency || frequency1 != 0) { if (frequency0 != freq || frequency1 != 0) {
ensure_edit_config();
frequency0 = frequency; frequency0 = frequency;
frequency1 = 0; frequency1 = 0;
update_frequencies(); update_frequencies();
@ -938,7 +944,7 @@ static void cmd_recall(BaseSequentialStream *chp, int argc, char *argv[])
const char *trc_type_name[] = { const char *trc_type_name[] = {
"LOGMAG", "PHASE", "SMITH", "ADMIT", "POLAR", "LINEAR", "SWR" "LOGMAG", "PHASE", "DELAY", "SMITH", "POLAR", "LINEAR", "SWR"
}; };
const char *trc_channel_name[] = { const char *trc_channel_name[] = {
"CH0", "CH1" "CH0", "CH1"
@ -946,7 +952,7 @@ const char *trc_channel_name[] = {
void set_trace_type(int t, int type) void set_trace_type(int t, int type)
{ {
int polar = type == TRC_SMITH || type == TRC_ADMIT || type == TRC_POLAR; int polar = type == TRC_SMITH || type == TRC_POLAR;
int enabled = type != TRC_OFF; int enabled = type != TRC_OFF;
int force = FALSE; int force = FALSE;
@ -1064,8 +1070,8 @@ static void cmd_trace(BaseSequentialStream *chp, int argc, char *argv[])
set_trace_type(t, TRC_POLAR); set_trace_type(t, TRC_POLAR);
} else if (strcmp(argv[1], "smith") == 0) { } else if (strcmp(argv[1], "smith") == 0) {
set_trace_type(t, TRC_SMITH); set_trace_type(t, TRC_SMITH);
} else if (strcmp(argv[1], "admit") == 0) { } else if (strcmp(argv[1], "delay") == 0) {
set_trace_type(t, TRC_ADMIT); set_trace_type(t, TRC_DELAY);
} else if (strcmp(argv[1], "linear") == 0) { } else if (strcmp(argv[1], "linear") == 0) {
set_trace_type(t, TRC_LINEAR); set_trace_type(t, TRC_LINEAR);
} else if (strcmp(argv[1], "swr") == 0) { } else if (strcmp(argv[1], "swr") == 0) {

View file

@ -55,7 +55,7 @@ enum {
ST_START, ST_STOP, ST_CENTER, ST_SPAN, ST_CW ST_START, ST_STOP, ST_CENTER, ST_SPAN, ST_CW
}; };
void set_sweep_frequency(int type, int frequency); void set_sweep_frequency(int type, float frequency);
float my_atof(const char *p); float my_atof(const char *p);
@ -141,7 +141,7 @@ extern const uint32_t numfont20x24[][24];
#define TRACES_MAX 4 #define TRACES_MAX 4
enum { enum {
TRC_LOGMAG, TRC_PHASE, TRC_SMITH, TRC_ADMIT, TRC_POLAR, TRC_LINEAR, TRC_SWR, TRC_OFF TRC_LOGMAG, TRC_PHASE, TRC_DELAY, TRC_SMITH, TRC_POLAR, TRC_LINEAR, TRC_SWR, TRC_OFF
}; };
extern const char *trc_type_name[]; extern const char *trc_type_name[];

16
plot.c
View file

@ -490,7 +490,7 @@ trace_into_index(int x, int t, int i, float coeff[2])
v = 9 - swr(coeff); v = 9 - swr(coeff);
break; break;
case TRC_SMITH: case TRC_SMITH:
case TRC_ADMIT: //case TRC_ADMIT:
case TRC_POLAR: case TRC_POLAR:
cartesian_scale(coeff[0], coeff[1], &x, &y, trace[t].scale); cartesian_scale(coeff[0], coeff[1], &x, &y, trace[t].scale);
return INDEX(x, y, i); return INDEX(x, y, i);
@ -605,7 +605,7 @@ trace_get_value_string(int t, char *buf, int len, float coeff[2], uint32_t frequ
case TRC_SMITH: case TRC_SMITH:
gamma2imp(buf, len, coeff, frequency); gamma2imp(buf, len, coeff, frequency);
break; break;
case TRC_ADMIT: //case TRC_ADMIT:
case TRC_POLAR: case TRC_POLAR:
chsnprintf(buf, len, "%.2f %.2fj", coeff[0], coeff[1]); chsnprintf(buf, len, "%.2f %.2fj", coeff[0], coeff[1]);
break; break;
@ -626,7 +626,7 @@ trace_get_info(int t, char *buf, int len)
trace[t].channel, type, (int)(trace[t].scale*90)); trace[t].channel, type, (int)(trace[t].scale*90));
break; break;
case TRC_SMITH: case TRC_SMITH:
case TRC_ADMIT: //case TRC_ADMIT:
case TRC_POLAR: case TRC_POLAR:
chsnprintf(buf, len, "CH%d %s %.1fFS", chsnprintf(buf, len, "CH%d %s %.1fFS",
trace[t].channel, type, trace[t].scale); trace[t].channel, type, trace[t].scale);
@ -901,11 +901,11 @@ search_nearest_index(int x, int y, int t)
int min_d = 1000; int min_d = 1000;
int i; int i;
for (i = 0; i < 101; i++) { for (i = 0; i < 101; i++) {
int dx = x - CELL_X(index[i]) - OFFSETX; int16_t dx = x - CELL_X(index[i]) - OFFSETX;
int dy = y - CELL_Y(index[i]) - OFFSETY; int16_t dy = y - CELL_Y(index[i]) - OFFSETY;
if (dx < 0) dx = -dx; if (dx < 0) dx = -dx;
if (dy < 0) dy = -dy; if (dy < 0) dy = -dy;
if (dx > 20 && dy > 20) if (dx > 20 || dy > 20)
continue; continue;
int d = dx*dx + dy*dy; int d = dx*dx + dy*dy;
if (d < min_d) { if (d < min_d) {
@ -1007,8 +1007,8 @@ draw_cell(int m, int n)
else { else {
if (trace[t].type == TRC_SMITH) if (trace[t].type == TRC_SMITH)
grid_mode |= GRID_SMITH; grid_mode |= GRID_SMITH;
else if (trace[t].type == TRC_ADMIT) //else if (trace[t].type == TRC_ADMIT)
grid_mode |= GRID_ADMIT; // grid_mode |= GRID_ADMIT;
else else
grid_mode |= GRID_POLAR; grid_mode |= GRID_POLAR;
} }

52
ui.c
View file

@ -248,6 +248,7 @@ int touch_check(void)
if (stat) { if (stat) {
last_touch_x = touch_measure_x(); last_touch_x = touch_measure_x();
last_touch_y = touch_measure_y(); last_touch_y = touch_measure_y();
touch_prepare_sense();
} }
if (stat != last_touch_status) { if (stat != last_touch_status) {
@ -400,6 +401,7 @@ menu_save_cb(int item)
if (item < 0 || item >= 5) if (item < 0 || item >= 5)
return; return;
if (caldata_save(item) == 0) { if (caldata_save(item) == 0) {
menu_move_back();
ui_mode_normal(); ui_mode_normal();
draw_cal_status(); draw_cal_status();
} }
@ -417,14 +419,40 @@ menu_trace_cb(int item)
static void static void
menu_format_cb(int item) menu_format_cb(int item)
{ {
set_trace_type(uistat.current_trace, item); switch (item) {
case 0:
set_trace_type(uistat.current_trace, TRC_LOGMAG);
break;
case 1:
set_trace_type(uistat.current_trace, TRC_PHASE);
break;
case 2:
set_trace_type(uistat.current_trace, TRC_DELAY);
break;
case 3:
set_trace_type(uistat.current_trace, TRC_SMITH);
break;
case 4:
set_trace_type(uistat.current_trace, TRC_SWR);
break;
}
ui_mode_normal(); ui_mode_normal();
} }
static void static void
menu_format2_cb(int item) menu_format2_cb(int item)
{ {
menu_format_cb(item + 5); switch (item) {
case 0:
set_trace_type(uistat.current_trace, TRC_POLAR);
break;
case 1:
set_trace_type(uistat.current_trace, TRC_LINEAR);
break;
}
ui_mode_normal();
} }
static void static void
@ -590,13 +618,14 @@ const menuitem_t menu_trace[] = {
{ MT_CALLBACK, "1", menu_trace_cb }, { MT_CALLBACK, "1", menu_trace_cb },
{ MT_CALLBACK, "2", menu_trace_cb }, { MT_CALLBACK, "2", menu_trace_cb },
{ MT_CALLBACK, "3", menu_trace_cb }, { MT_CALLBACK, "3", menu_trace_cb },
{ MT_CALLBACK, "\2SINGLE\0TRACE", menu_single_trace_cb },
{ MT_CANCEL, "BACK", NULL }, { MT_CANCEL, "BACK", NULL },
{ MT_NONE, NULL, NULL } // sentinel { MT_NONE, NULL, NULL } // sentinel
}; };
const menuitem_t menu_format2[] = { const menuitem_t menu_format2[] = {
{ MT_CALLBACK, "POLAR", menu_format2_cb },
{ MT_CALLBACK, "LINEAR", menu_format2_cb }, { MT_CALLBACK, "LINEAR", menu_format2_cb },
{ MT_CALLBACK, "SWR", menu_format2_cb },
{ MT_CANCEL, "BACK", NULL }, { MT_CANCEL, "BACK", NULL },
{ MT_NONE, NULL, NULL } // sentinel { MT_NONE, NULL, NULL } // sentinel
}; };
@ -604,9 +633,9 @@ const menuitem_t menu_format2[] = {
const menuitem_t menu_format[] = { const menuitem_t menu_format[] = {
{ MT_CALLBACK, "LOGMAG", menu_format_cb }, { MT_CALLBACK, "LOGMAG", menu_format_cb },
{ MT_CALLBACK, "PHASE", menu_format_cb }, { MT_CALLBACK, "PHASE", menu_format_cb },
{ MT_CALLBACK, "DELAY", menu_format_cb },
{ MT_CALLBACK, "SMITH", menu_format_cb }, { MT_CALLBACK, "SMITH", menu_format_cb },
{ MT_CALLBACK, "ADMIT", menu_format_cb }, { MT_CALLBACK, "SWR", menu_format_cb },
{ MT_CALLBACK, "POLAR", menu_format_cb },
{ MT_SUBMENU, "MORE", menu_format2 }, { MT_SUBMENU, "MORE", menu_format2 },
//{ MT_CALLBACK, "LINEAR", menu_format_cb }, //{ MT_CALLBACK, "LINEAR", menu_format_cb },
//{ MT_CALLBACK, "SWR", menu_format_cb }, //{ MT_CALLBACK, "SWR", menu_format_cb },
@ -615,14 +644,13 @@ const menuitem_t menu_format[] = {
}; };
const menuitem_t menu_channel[] = { const menuitem_t menu_channel[] = {
{ MT_CALLBACK, "CH0", menu_channel_cb }, { MT_CALLBACK, "\2CH0\0REFLECT", menu_channel_cb },
{ MT_CALLBACK, "CH1", menu_channel_cb }, { MT_CALLBACK, "\2CH1\0THROUGH", menu_channel_cb },
{ MT_CANCEL, "BACK", NULL }, { MT_CANCEL, "BACK", NULL },
{ MT_NONE, NULL, NULL } // sentinel { MT_NONE, NULL, NULL } // sentinel
}; };
const menuitem_t menu_display[] = { const menuitem_t menu_display[] = {
{ MT_CALLBACK, "\2SINGLE\0TRACE", menu_single_trace_cb },
{ MT_SUBMENU, "TRACE", menu_trace }, { MT_SUBMENU, "TRACE", menu_trace },
{ MT_SUBMENU, "FORMAT", menu_format }, { MT_SUBMENU, "FORMAT", menu_format },
{ MT_CALLBACK, "SCALE", menu_scale_cb }, { MT_CALLBACK, "SCALE", menu_scale_cb },
@ -1196,9 +1224,11 @@ touch_pickup_marker(void)
marker_position(m, t, &x, &y); marker_position(m, t, &x, &y);
if (sq_distance(x - touch_x, y - touch_y) < 400) { if (sq_distance(x - touch_x, y - touch_y) < 400) {
active_marker = m; if (active_marker != m) {
redraw_marker(active_marker, TRUE); active_marker = m;
redraw_marker(active_marker, TRUE);
}
// drag marker until release
drag_marker(t, m); drag_marker(t, m);
return TRUE; return TRUE;
} }