Semi-functional audio config menu. Correctly links to the audio config

variables.  No update functions currently.  No indication that you're in
the "edit" mode for a given variable.
This commit is contained in:
Rob French 2020-06-12 14:51:48 -05:00
parent 0a8e91c4a7
commit 28cbb0363f
3 changed files with 29 additions and 21 deletions

View File

@ -188,23 +188,23 @@ class Config_parm : public Menu_item {
Update_func on_update;
};
class Parm_int : public Config_parm<int> {
class Parm_uint8 : public Config_parm<uint8_t> {
public:
Parm_int(const char* title, int parm, int min, int max, int step, Update_func f):
Config_parm(title, parm, min, max, step, f) {}
Parm_uint8(const char* title, uint8_t& parm, uint8_t min, uint8_t max, uint8_t step, Update_func f):
Config_parm<uint8_t>(title, parm, min, max, step, f) {}
virtual void get_text(Menu_string& outstr) const {
snprintf(outstr.data(), max_text_len+1, "%-*s %3d", max_text_len-4, title().data(), value());
snprintf(outstr.data(), max_text_len+1, "%-*.*s %3d", max_text_len-4, max_text_len-4, title().data(), value());
}
};
class Parm_float : public Config_parm<float> {
public:
Parm_float(const char* title, float parm, float min, float max, float step, Update_func f):
Config_parm(title, parm, min, max, step, f) {}
Parm_float(const char* title, float& parm, float min, float max, float step, Update_func f):
Config_parm<float>(title, parm, min, max, step, f) {}
virtual void get_text(Menu_string& outstr) const {
snprintf(outstr.data(), max_text_len+1, "%-*s %5.2f", max_text_len-6, title().data(), value());
snprintf(outstr.data(), max_text_len+1, "%-*.*s %5.2f", max_text_len-6, max_text_len-6, title().data(), value());
}
};
@ -357,6 +357,9 @@ public class CWMenu {
private:
};
*/
extern const Menu_item* audio_config_menu;
#endif
//======================================================================

View File

@ -9,9 +9,9 @@
void do_nothing_func() {}
Update_func do_nothing = Update_func::create<do_nothing_func>();
List_menu<7> audio_config_menu("Audio Config", {
new Parm_int ("RX ADC Lvl", rigConfig.audio.rxRigInLevel, 0, 15, 1, do_nothing),
new Parm_int ("RX DAC Lvl", rigConfig.audio.rxLineOutLevel, 13, 31, 1, do_nothing),
List_menu<7> audio_config_menu_("Audio Config", {
new Parm_uint8 ("RX ADC Lvl", rigConfig.audio.rxRigInLevel, 0, 15, 1, do_nothing),
new Parm_uint8 ("RX DAC Lvl", rigConfig.audio.rxLineOutLevel, 13, 31, 1, do_nothing),
new Parm_float ("RX Inp Lvl", rigConfig.audio.rxRigInVol, 0.0, 1.0, 0.1, do_nothing),
new Parm_float ("RX Inp Cal", rigConfig.audio.rxRigInCal, 0.0, 99.9, 0.1, do_nothing),
new Parm_float ("RX Spkr Cal", rigConfig.audio.rxSpkrOutCal, 0.0, 99.9, 0.1, do_nothing),
@ -19,6 +19,8 @@ List_menu<7> audio_config_menu("Audio Config", {
new Parm_float ("RX USB Cal", rigConfig.audio.rxUSBOutCal, 0.0, 99.9, 0.1, do_nothing),
});
const Menu_item* audio_config_menu = &audio_config_menu_;
/* commented out til I go back and fix SSBConfig class
List_menu<3> ssb_config_menu("SSB Config", {
Parm_float("Comp Thresh", rigConfig.lsb.comp_threshold, 0.0, 1.0, 0.1, do_nothing),

View File

@ -190,30 +190,33 @@ void loop()
// cancel out any knob rotation that occurred during in conjunction with press/release
knob.write(0);
} else if (btn.rose() && menu_is_active) {
menu_updated = true;
} else if (btn.rose()) {
menu_updated = true;
if (btnMillis > 1000) {
// long press - exit
menu_item = menu_item->exit();
USBDEBUG("button released - long (exit)");
} else if (btnMillis > 500) {
// medium press - altSelect
menu_item = menu_item->altSelect();
if (menu_is_active) {
menu_item = menu_item->altSelect();
} else {
menu_item = audio_config_menu;
menu_is_active = true;
}
USBDEBUG("button released - medium (altSelect)");
} else {
// short press - select
menu_item = menu_item->select();
if (menu_is_active) {
menu_item = menu_item->select();
} else {
menu_item = &main_menu;
menu_is_active = true;
}
USBDEBUG("button released - short (select)");
}
// cancel out any knob rotation that occurred during in conjunction with press/release
knob.write(0);
} else if (btn.rose() && !menu_is_active) {
menu_is_active = true;
menu_updated = true;
// cancel out any knob rotation that occurred during in conjunction with press/release
knob.write(0);
USBDEBUG("button released - main menu activated");
} else if (knobPos > 3 && menu_is_active) {
// left