Band, preset name and scanraw serial output

pull/94/head
erikkaashoek 2 years ago
parent a1c359aa1d
commit bfd6f82b57

@ -1186,7 +1186,9 @@ void spi_init(void);
#ifdef __BANDS__ #ifdef __BANDS__
#define BANDS_MAX 8 #define BANDS_MAX 8
#define BAND_NAME_SIZE 9
typedef struct { typedef struct {
char name[BAND_NAME_SIZE];
bool enabled; bool enabled;
freq_t start; freq_t start;
freq_t end; freq_t end;
@ -1336,6 +1338,8 @@ typedef struct setting
bool increased_R; bool increased_R;
bool mixer_output; bool mixer_output;
uint32_t interval; uint32_t interval;
#define PRESET_NAME_LENGTH 10
char preset_name[PRESET_NAME_LENGTH];
#endif #endif
int64_t test_argument; // used for tests int64_t test_argument; // used for tests
uint32_t checksum; // must be last and at 4 byte boundary uint32_t checksum; // must be last and at 4 byte boundary

@ -1918,10 +1918,14 @@ draw_frequencies(void)
int b = getBand(idx); int b = getBand(idx);
while (b == getBand(++next_idx)); while (b == getBand(++next_idx));
// plot_printf(buf1, sizeof(buf1), "%.3QHz-%.3QHz %5.1QHz/", setting.bands[b].start + (setting.frequency_offset - FREQUENCY_SHIFT), setting.bands[b].end + (setting.frequency_offset - FREQUENCY_SHIFT), grid_span); // plot_printf(buf1, sizeof(buf1), "%.3QHz-%.3QHz %5.1QHz/", setting.bands[b].start + (setting.frequency_offset - FREQUENCY_SHIFT), setting.bands[b].end + (setting.frequency_offset - FREQUENCY_SHIFT), grid_span);
if (next_idx - idx < sweep_points/4-20) if (setting.bands[b].name[0])
plot_printf(buf1, sizeof(buf1), "%.3QHz", (setting.bands[b].start+setting.bands[b].end)/2 + (setting.frequency_offset - FREQUENCY_SHIFT), grid_span); plot_printf(buf1, sizeof(buf1), "%s", setting.bands[b].name);
else else {
plot_printf(buf1, sizeof(buf1), "%.3QHz %5.1QHz/", setting.bands[b].start + (setting.frequency_offset - FREQUENCY_SHIFT), grid_span); if (next_idx - idx < sweep_points/4-20)
plot_printf(buf1, sizeof(buf1), "%.3QHz", (setting.bands[b].start+setting.bands[b].end)/2 + (setting.frequency_offset - FREQUENCY_SHIFT), grid_span);
else
plot_printf(buf1, sizeof(buf1), "%.3QHz %5.1QHz/", setting.bands[b].start + (setting.frequency_offset - FREQUENCY_SHIFT), grid_span);
}
ili9341_drawstring(buf1, FREQUENCIES_XPOS1+idx, FREQUENCIES_YPOS); ili9341_drawstring(buf1, FREQUENCIES_XPOS1+idx, FREQUENCIES_YPOS);
idx = next_idx; idx = next_idx;
} while (idx < sweep_points - 10); } while (idx < sweep_points - 10);

@ -1277,7 +1277,7 @@ VNA_SHELL_FUNCTION(cmd_scanraw)
buf[idx++] = '{'; buf[idx++] = '{';
for (uint32_t i = 0; i < points; i++) { for (uint32_t i = 0; i < points; i++) {
int val = perform(false, i, start +(freq_t)(f_step * i), false) + float_TO_PURE_RSSI(config.ext_zero_level); int val = perform(false, i, start +(freq_t)(f_step * i), false) + float_TO_PURE_RSSI(config.ext_zero_level);
if (operation_requested || SDU1.config->usbp->state != USB_ACTIVE) // break on operation in perform if (operation_requested || ((uint32_t)shell_stream == (uint32_t)&SDU1 && SDU1.config->usbp->state != USB_ACTIVE)) // break on operation in perform
break; break;
buf[idx++] = 'x'; buf[idx++] = 'x';
buf[idx++] = (uint8_t)(val & 0xFF); buf[idx++] = (uint8_t)(val & 0xFF);

@ -8037,7 +8037,7 @@ void calibrate(void)
#ifdef TINYSA4 #ifdef TINYSA4
|| (calibration_stage == CS_LNA && peakLevel < -40) || (calibration_stage == CS_LNA && peakLevel < -40)
|| (calibration_stage == CS_ULTRA && peakLevel < -40) || (calibration_stage == CS_ULTRA && peakLevel < -40)
|| (calibration_stage == CS_DIRECT_LNA && peakLevel < direct_level - 20) || (calibration_stage == CS_DIRECT_LNA && peakLevel < direct_level - 50)
#endif #endif
) { ) {
#ifdef TINYSA4 #ifdef TINYSA4

68
ui.c

@ -1376,7 +1376,7 @@ enum {
KM_LIMIT_FREQ, KM_LIMIT_LEVEL, KM_LIMIT_FREQ, KM_LIMIT_LEVEL,
#endif #endif
#ifdef __BANDS__ #ifdef __BANDS__
KM_BAND_START, KM_BAND_END, KM_BAND_CENTER, KM_BAND_SPAN, KM_BAND_LEVEL, KM_BAND_START, KM_BAND_END, KM_BAND_CENTER, KM_BAND_SPAN, KM_BAND_LEVEL,KM_BAND_NAME,
#endif #endif
KM_MARKER_TIME, KM_MARKER_TIME,
// #35 // #35
@ -1393,6 +1393,7 @@ enum {
KM_RTC_DATE, KM_RTC_DATE,
KM_RTC_TIME, KM_RTC_TIME,
KM_INTERVAL, KM_INTERVAL,
KM_PRESET_NAME,
#endif #endif
#endif #endif
KM_CODE, KM_CODE,
@ -1468,6 +1469,7 @@ static const struct {
[KM_BAND_CENTER] = {keypads_freq , "CENTER\nFREQ"}, // KM_BAND_CENTER [KM_BAND_CENTER] = {keypads_freq , "CENTER\nFREQ"}, // KM_BAND_CENTER
[KM_BAND_SPAN] = {keypads_freq , "SPAN\nFREQ"}, // KM_BAND_SPAN [KM_BAND_SPAN] = {keypads_freq , "SPAN\nFREQ"}, // KM_BAND_SPAN
[KM_BAND_LEVEL] = {keypads_plusmin_unit , "LEVEL"}, // KM_BAND_LEVEL [KM_BAND_LEVEL] = {keypads_plusmin_unit , "LEVEL"}, // KM_BAND_LEVEL
[KM_BAND_NAME] = {keypads_text , "NAME"}, // KM_BAND_NAME
#endif #endif
[KM_MARKER_TIME] = {keypads_time , "MARKER\nTIME"}, // KM_MARKER_TIME [KM_MARKER_TIME] = {keypads_time , "MARKER\nTIME"}, // KM_MARKER_TIME
[KM_VAR] = {keypads_freq , "JOG\nSTEP"}, // jog step [KM_VAR] = {keypads_freq , "JOG\nSTEP"}, // jog step
@ -1484,6 +1486,7 @@ static const struct {
[KM_RTC_TIME] = {keypads_positive , "SET TIME\n HHMMSS"}, // Time [KM_RTC_TIME] = {keypads_positive , "SET TIME\n HHMMSS"}, // Time
[KM_INTERVAL] = {keypads_positive , "SET INTERVAL\n HHMMSS"}, // Interval [KM_INTERVAL] = {keypads_positive , "SET INTERVAL\n HHMMSS"}, // Interval
#endif #endif
[KM_PRESET_NAME] = {keypads_text , "NAME"}, // KM_PRESET_NAME
#endif #endif
[KM_CODE] = {keypads_positive , "CODE"}, // KM_CODE [KM_CODE] = {keypads_positive , "CODE"}, // KM_CODE
#ifdef __USE_SD_CARD__ #ifdef __USE_SD_CARD__
@ -2120,9 +2123,14 @@ static UI_FUNCTION_ADV_CALLBACK(menu_load_preset_acb)
(void)item; (void)item;
if(b){ if(b){
setting_t *p = caldata_pointer(data); setting_t *p = caldata_pointer(data);
if (p) if (p) {
plot_printf(b->text, sizeof(b->text), "%.6FHz\n%.6FHz", (float)p->frequency0, (float)p->frequency1); #ifdef TINYSA4
else if (p->preset_name[0])
plot_printf(b->text, sizeof(b->text), "LOAD\n\b%s", p->preset_name);
else
#endif
plot_printf(b->text, sizeof(b->text), "%.6FHz\n%.6FHz", (float)p->frequency0, (float)p->frequency1);
} else
plot_printf(b->text, sizeof(b->text), "EMPTY %d", (int)data); plot_printf(b->text, sizeof(b->text), "EMPTY %d", (int)data);
return; return;
} }
@ -2139,9 +2147,14 @@ static UI_FUNCTION_ADV_CALLBACK(menu_store_preset_acb)
if(b){ if(b){
#if 1 #if 1
setting_t *p = caldata_pointer(data); setting_t *p = caldata_pointer(data);
if (p) if (p) {
plot_printf(b->text, sizeof(b->text), "%.6FHz\n%.6FHz", (float)p->frequency0, (float)p->frequency1); #ifdef TINYSA4
else if (p->preset_name[0])
plot_printf(b->text, sizeof(b->text), "STORE\n\b%s", p->preset_name);
else
#endif
plot_printf(b->text, sizeof(b->text), "%.6FHz\n%.6FHz", (float)p->frequency0, (float)p->frequency1);
} else
plot_printf(b->text, sizeof(b->text), "STORE %d", (int)data); plot_printf(b->text, sizeof(b->text), "STORE %d", (int)data);
#else #else
b->param_1.u = data; b->param_1.u = data;
@ -2155,6 +2168,12 @@ static UI_FUNCTION_ADV_CALLBACK(menu_store_preset_acb)
if (data == 101) clear_backup(); if (data == 101) clear_backup();
data = 0; data = 0;
} }
#ifdef TINYSA4
else {
kp_help_text = "Preset name";
ui_mode_keypad(KM_PRESET_NAME);
}
#endif
caldata_save(data); caldata_save(data);
menu_move_back(true); menu_move_back(true);
} }
@ -2826,6 +2845,7 @@ static UI_FUNCTION_ADV_CALLBACK(menu_measure_acb)
setting.bands[i].start = fundamental*(i+1) - half_span; setting.bands[i].start = fundamental*(i+1) - half_span;
setting.bands[i].end = fundamental*(i+1) + half_span; setting.bands[i].end = fundamental*(i+1) + half_span;
setting.bands[i].enabled = true; setting.bands[i].enabled = true;
setting.bands[i].name[0] = 0;
} }
setting.multi_band = true; setting.multi_band = true;
setting.multi_trace = false; setting.multi_trace = false;
@ -3440,7 +3460,10 @@ static UI_FUNCTION_ADV_CALLBACK(menu_band_select_acb)
for (int i=0;i<BANDS_MAX;i++) {if (setting.bands[i].enabled) count++; } for (int i=0;i<BANDS_MAX;i++) {if (setting.bands[i].enabled) count++; }
if (count == 0) setting.bands[0].enabled = true; if (count == 0) setting.bands[0].enabled = true;
b->icon = (setting.bands[data].enabled?BUTTON_ICON_CHECK:BUTTON_ICON_NOCHECK) ; b->icon = (setting.bands[data].enabled?BUTTON_ICON_CHECK:BUTTON_ICON_NOCHECK) ;
plot_printf(b->text, sizeof(b->text), "%.6FHz\n%.6FHz", (float)setting.bands[data].start, (float)setting.bands[data].end); if (setting.bands[data].name[0])
plot_printf(b->text, sizeof(b->text), "%s", setting.bands[data].name);
else
plot_printf(b->text, sizeof(b->text), "%.6FHz\n%.6FHz", (float)setting.bands[data].start, (float)setting.bands[data].end);
reset_band(); reset_band();
return; return;
} }
@ -3641,6 +3664,7 @@ static UI_FUNCTION_CALLBACK(menu_BAND_disable_cb)
if (active_band<BANDS_MAX){ if (active_band<BANDS_MAX){
setting.bands[active_band].enabled = false; setting.bands[active_band].enabled = false;
setting.bands[active_band].name[0] = 0;
dirty = true; dirty = true;
update_frequencies(); update_frequencies();
update_grid(); update_grid();
@ -4506,10 +4530,11 @@ static const menuitem_t menu_limit_select[] = {
static const menuitem_t menu_band_modify[] = static const menuitem_t menu_band_modify[] =
{ {
{ MT_KEYPAD, KM_BAND_START, "START\n\b%s", "Start"}, { MT_KEYPAD, KM_BAND_START, "START\n\b%s", "Start"},
{ MT_KEYPAD, KM_BAND_END, "STOP\n\b%s", "Stop"}, { MT_KEYPAD, KM_BAND_END, "STOP\n\b%s", "Stop"},
{ MT_KEYPAD, KM_BAND_CENTER, "CENTER\n\b%s", "Center"}, { MT_KEYPAD, KM_BAND_CENTER, "CENTER\n\b%s", "Center"},
{ MT_KEYPAD, KM_BAND_SPAN, "SPAN\n\b%s", "Span"}, { MT_KEYPAD, KM_BAND_SPAN, "SPAN\n\b%s", "Span"},
{ MT_KEYPAD, KM_BAND_LEVEL, "LEVEL\n\b%s", "Level"}, { MT_KEYPAD, KM_BAND_LEVEL, "LEVEL\n\b%s", "Level"},
{ MT_KEYPAD, KM_BAND_NAME, "NAME\n\b%s", "Name"},
{ MT_CALLBACK,0, "DISABLE", menu_BAND_disable_cb}, { MT_CALLBACK,0, "DISABLE", menu_BAND_disable_cb},
{ MT_NONE, 0, NULL, menu_back} // next-> menu_back { MT_NONE, 0, NULL, menu_back} // next-> menu_back
}; };
@ -5475,6 +5500,12 @@ static void fetch_numeric_target(uint8_t mode)
uistat.value = value(setting.bands[active_band].level); uistat.value = value(setting.bands[active_band].level);
plot_printf(uistat.text, sizeof uistat.text, "%.1f", uistat.value); plot_printf(uistat.text, sizeof uistat.text, "%.1f", uistat.value);
break; break;
case KM_BAND_NAME:
plot_printf(uistat.text, sizeof uistat.text, "%s", setting.bands[active_band].name);
break;
case KM_PRESET_NAME:
plot_printf(uistat.text, sizeof uistat.text, "%s", setting.preset_name);
break;
#endif #endif
case KM_NOISE: case KM_NOISE:
uistat.value = setting.noise; uistat.value = setting.noise;
@ -5766,6 +5797,11 @@ set_numeric_value(void)
update_frequencies(); update_frequencies();
dirty = true; dirty = true;
update_grid(); update_grid();
// BANDs_update();
break;
case KM_BAND_NAME:
plot_printf(setting.bands[active_band].name, sizeof setting.bands[active_band].name, "%s", kp_buf);
dirty = true;
// BANDs_update(); // BANDs_update();
break; break;
#endif #endif
@ -5836,6 +5872,9 @@ set_numeric_value(void)
case KM_DEPTH: case KM_DEPTH:
set_depth((int)uistat.value); set_depth((int)uistat.value);
break; break;
case KM_PRESET_NAME:
plot_printf(setting.preset_name, sizeof setting.preset_name, "%s", kp_buf);
break;
#endif #endif
case KM_VAR: case KM_VAR:
setting.frequency_var = uistat.freq_value; setting.frequency_var = uistat.freq_value;
@ -7521,7 +7560,10 @@ static int
full_keypad_click(int c, int kp_index) full_keypad_click(int c, int kp_index)
{ {
if (c == S_ENTER[0]) { // Enter if (c == S_ENTER[0]) { // Enter
return kp_index == 0 ? KP_CANCEL : KP_DONE; if (kp_index == 0)
return KP_CANCEL;
set_numeric_value(); // Also for text values
return KP_DONE;
} }
if (c == S_LARROW[0]) { // Backspace if (c == S_LARROW[0]) { // Backspace
if (kp_index == 0) if (kp_index == 0)

Loading…
Cancel
Save

Powered by TurnKey Linux.