Add hamband and gridlines setting

pull/8/head
erikkaashoek 5 years ago
parent 8f259d91c3
commit dae01ca925

@ -35,7 +35,7 @@
#define __SELFTEST__
#define __CALIBRATE__
#define __FAST_SWEEP__ // Pre-fill SI4432 RSSI buffer to get fastest sweep in zero span mode
//#define __HAM_BAND__
#define __HAM_BAND__
//#define __ULTRA__ // Add harmonics mode on low input.
//#define __ULTRA_SA__ // Adds ADF4351 control for extra high 1st IF stage
#define __SPUR__ // Does spur reduction by shifting IF
@ -452,6 +452,8 @@ typedef struct config {
float correction_value[CORRECTION_POINTS];
uint32_t deviceid;
uint16_t ham_color;
uint16_t gridlines;
uint16_t hambands;
// uint8_t _reserved[22];
uint32_t checksum;
} config_t;
@ -945,11 +947,13 @@ extern uint16_t actual_rbw_x10;
int get_waterfall(void);
void toggle_tracking(void);
void toggle_hambands(void);
void reset_calibration(void);
void set_reflevel(float);
void set_offset(float);
void set_unit(int);
void set_switches(int);
void set_gridlines(int);
void set_trigger_level(float);
void set_trigger(int);
void update_rbw(void);

@ -127,18 +127,18 @@ void update_grid(void)
fspan = setting.actual_sweep_time_us; // Time in uS
fstart = 0;
}
#define GRIDLINE_MINIMUM 7
if (config.gridlines < 3)
config.gridlines = 6;
while (gdigit > 100) {
grid = 5 * gdigit;
if (fspan / grid >= GRIDLINE_MINIMUM)
if (fspan / grid >= config.gridlines)
break;
grid = 2 * gdigit;
if (fspan / grid >= GRIDLINE_MINIMUM)
if (fspan / grid >= config.gridlines)
break;
grid = gdigit;
if (fspan / grid >= GRIDLINE_MINIMUM)
if (fspan / grid >= config.gridlines)
break;
gdigit /= 10;
}
@ -432,6 +432,8 @@ const ham_bands_t ham_bands[] =
int ham_band(int x) // Search which index in the frequency tabled matches with frequency f using actual_rbw
{
if (!config.hambands)
return false;
uint32_t f = frequencies[x];
int L = 0;
int R = (sizeof ham_bands)/sizeof(uint32_t) - 1;

@ -242,6 +242,16 @@ void set_noise(int d)
dirty = true;
}
void set_gridlines(int d)
{
if (d < 3 || d > 20)
return;
config.gridlines = d;
config_save();
dirty = true;
update_grid();
}
void set_measurement(int m)
{
setting.measurement = m;
@ -312,6 +322,12 @@ void toggle_mute(void)
dirty = true;
}
void toggle_hambands(void)
{
config.hambands = !config.hambands;
dirty = true;
}
void toggle_below_IF(void)
{
if (S_IS_AUTO(setting.below_IF ))

@ -406,7 +406,7 @@ static const keypads_t keypads_time[] = {
enum {
KM_START, KM_STOP, KM_CENTER, KM_SPAN, KM_CW, KM_REFLEVEL, KM_SCALE, KM_ATTENUATION,
KM_ACTUALPOWER, KM_IF, KM_SAMPLETIME, KM_DRIVE, KM_LOWOUTLEVEL, KM_DECAY, KM_NOISE,
KM_10MHZ, KM_REPEAT, KM_OFFSET, KM_TRIGGER, KM_LEVELSWEEP, KM_SWEEP_TIME, KM_OFFSET_DELAY, KM_FAST_SPEEDUP,
KM_10MHZ, KM_REPEAT, KM_OFFSET, KM_TRIGGER, KM_LEVELSWEEP, KM_SWEEP_TIME, KM_OFFSET_DELAY, KM_FAST_SPEEDUP, KM_GRIDLINES,
KM_NONE // always at enum end
};
@ -428,7 +428,7 @@ static const struct {
{keypads_positive , "DRIVE"}, // drive
{keypads_plusmin , "LEVEL"}, // KM_LOWOUTLEVEL
{keypads_positive , "SCANS"}, // KM_DECAY
{keypads_positive , "LEVEL"}, // KM_NOISE
{keypads_positive , "NOISE\nLEVEL"}, // KM_NOISE
{keypads_freq , "FREQ"}, // KM_10MHz
{keypads_positive , "SAMPLE\nREPEAT"}, // KM_REPEA
{keypads_plusmin , "OFFSET"}, // KM_OFFSET
@ -437,6 +437,7 @@ static const struct {
{keypads_time , "SWEEP\nSECONDS"}, // KM_SWEEP_TIME
{keypads_positive , "OFFSET\nDELAY"}, // KM_OFFSET_DELAY
{keypads_positive , "FAST\nSPEEDUP"}, // KM_FAST_SPEEDUP
{keypads_positive , "MINIMUM\nGRIDLINES"}, // KM_GRIDLINES
};
// ===[MENU CALLBACKS]=========================================================
@ -1174,6 +1175,19 @@ static UI_FUNCTION_ADV_CALLBACK(menu_settings_bpf_acb){
draw_menu();
}
#ifdef __HAM_BAND__
static UI_FUNCTION_ADV_CALLBACK(menu_settings_ham_bands){
(void)item;
(void)data;
if(b){
b->icon = config.hambands ? BUTTON_ICON_CHECK : BUTTON_ICON_NOCHECK;
return;
}
toggle_hambands();
draw_menu();
}
#endif
static UI_FUNCTION_ADV_CALLBACK(menu_settings_below_if_acb){
(void)item;
(void)data;
@ -1574,6 +1588,21 @@ static const menuitem_t menu_sweep_speed[] =
{ MT_NONE, 0, NULL, NULL } // sentinel
};
static const menuitem_t menu_settings3[] =
{
{ MT_KEYPAD, KM_10MHZ, "CORRECT\nFREQUENCY", "Enter actual l0MHz frequency"},
{ MT_KEYPAD, KM_GRIDLINES, "MINIMUM\nGRIDLINES", "Enter minimum horizontal grid divisions"},
#ifdef __HAM_BAND__
{ MT_ADV_CALLBACK, 0, "HAM\nBANDS", menu_settings_ham_bands},
#endif
#ifdef __ULTRA__
{ MT_SUBMENU,0, "HARMONIC", menu_harmonic},
#endif
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
{ MT_NONE, 0, NULL, NULL } // sentinel
};
static const menuitem_t menu_settings2[] =
{
{ MT_ADV_CALLBACK, 0, "AGC", menu_settings_agc_acb},
@ -1582,10 +1611,10 @@ static const menuitem_t menu_settings2[] =
{ MT_ADV_CALLBACK | MT_LOW, 0, "BELOW IF", menu_settings_below_if_acb},
{ MT_KEYPAD, KM_DECAY, "HOLD\nSWEEPS", "1..1000 sweeps"},
{ MT_KEYPAD, KM_NOISE, "NOISE\nLEVEL", "2..20 dB"},
{ MT_KEYPAD, KM_10MHZ, "CORRECT\nFREQUENCY", "Enter actual l0MHz frequency"},
#ifdef __ULTRA__
{ MT_SUBMENU,0, "HARMONIC", menu_harmonic},
#endif
{ MT_SUBMENU, 0, S_RARROW" MORE", menu_settings3},
{ MT_CANCEL, 0, S_LARROW" BACK", NULL },
{ MT_NONE, 0, NULL, NULL } // sentinel
};
@ -1991,6 +2020,10 @@ set_numeric_value(void)
completed = true;
break;
case KM_GRIDLINES:
set_gridlines(uistat.value);
break;
}
}

Loading…
Cancel
Save

Powered by TurnKey Linux.