|
|
|
@ -28,7 +28,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
uistat_t uistat = {
|
|
|
|
uistat_t uistat = {
|
|
|
|
digit: 6,
|
|
|
|
digit: 6,
|
|
|
|
current_trace: 0
|
|
|
|
current_trace: 0,
|
|
|
|
|
|
|
|
lever_mode: LM_MARKER
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -766,6 +767,7 @@ menu_stimulus_cb(int item)
|
|
|
|
case 2: /* CENTER */
|
|
|
|
case 2: /* CENTER */
|
|
|
|
case 3: /* SPAN */
|
|
|
|
case 3: /* SPAN */
|
|
|
|
case 4: /* CW */
|
|
|
|
case 4: /* CW */
|
|
|
|
|
|
|
|
uistat.lever_mode = item == 3 ? LM_SPAN : LM_CENTER;
|
|
|
|
status = btn_wait_release();
|
|
|
|
status = btn_wait_release();
|
|
|
|
if (status & EVT_BUTTON_DOWN_LONG) {
|
|
|
|
if (status & EVT_BUTTON_DOWN_LONG) {
|
|
|
|
ui_mode_numeric(item);
|
|
|
|
ui_mode_numeric(item);
|
|
|
|
@ -814,22 +816,22 @@ menu_marker_op_cb(int item)
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case 3: /* MARKERS->SPAN */
|
|
|
|
case 3: /* MARKERS->SPAN */
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (previous_marker == active_marker)
|
|
|
|
if (previous_marker == -1 || active_marker == previous_marker) {
|
|
|
|
return;
|
|
|
|
int32_t center = get_sweep_frequency(ST_CENTER);
|
|
|
|
int32_t freq2 = get_marker_frequency(previous_marker);
|
|
|
|
int32_t span = center - freq;
|
|
|
|
if (freq2 < 0)
|
|
|
|
if (span < 0) span = -span;
|
|
|
|
return;
|
|
|
|
set_sweep_frequency(ST_SPAN, span * 2);
|
|
|
|
if (freq > freq2) {
|
|
|
|
} else {
|
|
|
|
freq2 = freq;
|
|
|
|
int32_t freq2 = get_marker_frequency(previous_marker);
|
|
|
|
freq = get_marker_frequency(previous_marker);
|
|
|
|
if (freq2 < 0)
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
if (freq > freq2) {
|
|
|
|
|
|
|
|
freq2 = freq;
|
|
|
|
|
|
|
|
freq = get_marker_frequency(previous_marker);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
set_sweep_frequency(ST_START, freq);
|
|
|
|
|
|
|
|
set_sweep_frequency(ST_STOP, freq2);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
set_sweep_frequency(ST_START, freq);
|
|
|
|
|
|
|
|
set_sweep_frequency(ST_STOP, freq2);
|
|
|
|
|
|
|
|
#if 0
|
|
|
|
|
|
|
|
int32_t span = (freq - freq2) * 2;
|
|
|
|
|
|
|
|
if (span < 0) span = -span;
|
|
|
|
|
|
|
|
set_sweep_frequency(ST_SPAN, span);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@ -867,6 +869,7 @@ menu_marker_search_cb(int item)
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
redraw_marker(active_marker, TRUE);
|
|
|
|
redraw_marker(active_marker, TRUE);
|
|
|
|
|
|
|
|
uistat.lever_mode = LM_SEARCH;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
void
|
|
|
|
@ -911,6 +914,7 @@ menu_marker_sel_cb(int item)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
redraw_marker(active_marker, TRUE);
|
|
|
|
redraw_marker(active_marker, TRUE);
|
|
|
|
draw_menu();
|
|
|
|
draw_menu();
|
|
|
|
|
|
|
|
uistat.lever_mode = LM_MARKER;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const menuitem_t menu_calop[] = {
|
|
|
|
const menuitem_t menu_calop[] = {
|
|
|
|
@ -1665,6 +1669,92 @@ ui_mode_normal(void)
|
|
|
|
ui_mode = UI_NORMAL;
|
|
|
|
ui_mode = UI_NORMAL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
|
|
|
lever_move_marker(int status)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
do {
|
|
|
|
|
|
|
|
if (active_marker >= 0 && markers[active_marker].enabled) {
|
|
|
|
|
|
|
|
if ((status & EVT_DOWN) && markers[active_marker].index > 0) {
|
|
|
|
|
|
|
|
markers[active_marker].index--;
|
|
|
|
|
|
|
|
markers[active_marker].frequency = frequencies[markers[active_marker].index];
|
|
|
|
|
|
|
|
redraw_marker(active_marker, FALSE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((status & EVT_UP) && markers[active_marker].index < 100) {
|
|
|
|
|
|
|
|
markers[active_marker].index++;
|
|
|
|
|
|
|
|
markers[active_marker].frequency = frequencies[markers[active_marker].index];
|
|
|
|
|
|
|
|
redraw_marker(active_marker, FALSE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
status = btn_wait_release();
|
|
|
|
|
|
|
|
} while (status != 0);
|
|
|
|
|
|
|
|
if (active_marker >= 0)
|
|
|
|
|
|
|
|
redraw_marker(active_marker, TRUE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
|
|
|
lever_search_marker(int status)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if (active_marker >= 0) {
|
|
|
|
|
|
|
|
if (status & EVT_DOWN) {
|
|
|
|
|
|
|
|
int i = marker_search_left(markers[active_marker].index);
|
|
|
|
|
|
|
|
if (i != -1)
|
|
|
|
|
|
|
|
markers[active_marker].index = i;
|
|
|
|
|
|
|
|
} else if (status & EVT_UP) {
|
|
|
|
|
|
|
|
int i = marker_search_right(markers[active_marker].index);
|
|
|
|
|
|
|
|
if (i != -1)
|
|
|
|
|
|
|
|
markers[active_marker].index = i;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
redraw_marker(active_marker, TRUE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// ex. 10942 -> 10000
|
|
|
|
|
|
|
|
// 6791 -> 5000
|
|
|
|
|
|
|
|
// 341 -> 200
|
|
|
|
|
|
|
|
static uint32_t
|
|
|
|
|
|
|
|
step_round(uint32_t v)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
// decade step
|
|
|
|
|
|
|
|
uint32_t x = 1;
|
|
|
|
|
|
|
|
for (x = 1; x*10 < v; x *= 10)
|
|
|
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 1-2-5 step
|
|
|
|
|
|
|
|
if (x * 2 > v)
|
|
|
|
|
|
|
|
return x;
|
|
|
|
|
|
|
|
else if (x * 5 > v)
|
|
|
|
|
|
|
|
return x * 2;
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
return x * 5;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
|
|
|
lever_zoom_span(int status)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint32_t span = get_sweep_frequency(ST_SPAN);
|
|
|
|
|
|
|
|
if (status & EVT_UP) {
|
|
|
|
|
|
|
|
span = step_round(span - 1);
|
|
|
|
|
|
|
|
set_sweep_frequency(ST_SPAN, span);
|
|
|
|
|
|
|
|
} else if (status & EVT_DOWN) {
|
|
|
|
|
|
|
|
span = step_round(span + 1);
|
|
|
|
|
|
|
|
span = step_round(span * 3);
|
|
|
|
|
|
|
|
set_sweep_frequency(ST_SPAN, span);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
|
|
|
lever_move_center(int status)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
uint32_t center = get_sweep_frequency(ST_CENTER);
|
|
|
|
|
|
|
|
uint32_t span = get_sweep_frequency(ST_SPAN);
|
|
|
|
|
|
|
|
span = step_round(span / 3);
|
|
|
|
|
|
|
|
if (status & EVT_UP) {
|
|
|
|
|
|
|
|
set_sweep_frequency(ST_CENTER, center + span);
|
|
|
|
|
|
|
|
} else if (status & EVT_DOWN) {
|
|
|
|
|
|
|
|
set_sweep_frequency(ST_CENTER, center - span);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
static void
|
|
|
|
ui_process_normal(void)
|
|
|
|
ui_process_normal(void)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
@ -1673,23 +1763,12 @@ ui_process_normal(void)
|
|
|
|
if (status & EVT_BUTTON_SINGLE_CLICK) {
|
|
|
|
if (status & EVT_BUTTON_SINGLE_CLICK) {
|
|
|
|
ui_mode_menu();
|
|
|
|
ui_mode_menu();
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
do {
|
|
|
|
switch (uistat.lever_mode) {
|
|
|
|
if (active_marker >= 0 && markers[active_marker].enabled) {
|
|
|
|
case LM_MARKER: lever_move_marker(status); break;
|
|
|
|
if ((status & EVT_DOWN) && markers[active_marker].index > 0) {
|
|
|
|
case LM_SEARCH: lever_search_marker(status); break;
|
|
|
|
markers[active_marker].index--;
|
|
|
|
case LM_CENTER: lever_move_center(status); break;
|
|
|
|
markers[active_marker].frequency = frequencies[markers[active_marker].index];
|
|
|
|
case LM_SPAN: lever_zoom_span(status); break;
|
|
|
|
redraw_marker(active_marker, FALSE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((status & EVT_UP) && markers[active_marker].index < 100) {
|
|
|
|
|
|
|
|
markers[active_marker].index++;
|
|
|
|
|
|
|
|
markers[active_marker].frequency = frequencies[markers[active_marker].index];
|
|
|
|
|
|
|
|
redraw_marker(active_marker, FALSE);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
status = btn_wait_release();
|
|
|
|
|
|
|
|
} while (status != 0);
|
|
|
|
|
|
|
|
if (active_marker >= 0)
|
|
|
|
|
|
|
|
redraw_marker(active_marker, TRUE);
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|