Renamed some stuff for clarity

This commit is contained in:
Mikael Degerfält 2019-06-23 13:29:03 +02:00
parent f2e2b7d33f
commit be0d08d8d6
3 changed files with 44 additions and 48 deletions

View file

@ -55,10 +55,6 @@ unsigned long cursorBlinkTime = 0; // the last time the cursor was togg
static byte state = DISPLAYOFF_IDL; static byte state = DISPLAYOFF_IDL;
static byte stateFirstRun = 1; static byte stateFirstRun = 1;
static byte subParallel = 0;
static byte subRotator = 0;
static byte subPriority = 0;
// The external function of subSquelch has been broken, // The external function of subSquelch has been broken,
// need to come up with a smart way to make it work again. // need to come up with a smart way to make it work again.
// The status led was update when the Squelch menu was open. // The status led was update when the Squelch menu was open.
@ -223,7 +219,7 @@ static bool drawSubMenu(const MenuPage &page, int color) {
// If ECustom flag is set, we assume that the getSubTextFunc // If ECustom flag is set, we assume that the getSubTextFunc
// rendered by it self. // rendered by it self.
if( !(sub->flags & MenuEntryFlags::ECustom)) { if( !(sub->flags & EMenuEntryCustom)) {
plotSubOption(buffer, color); plotSubOption(buffer, color);
if(labelPtr != nullptr) { if(labelPtr != nullptr) {
// TODO: handle this better, we should center text + label // TODO: handle this better, we should center text + label
@ -442,7 +438,7 @@ const MenuEntrySub octaveMenu = {
}; };
const MenuEntrySub midiMenu = { const MenuEntrySub midiMenu = {
MenuType::ESub, "MIDI CH", "MIDI CHNL", &MIDIchannel, 1, 16, MenuEntryFlags::ECustom | MenuEntryFlags::EEnterHandler, MenuType::ESub, "MIDI CH", "MIDI CHNL", &MIDIchannel, 1, 16, EMenuEntryCustom | EMenuEntryEnterHandler,
[](SubMenuRef __unused, char* __unused out, const char** __unused unit) { [](SubMenuRef __unused, char* __unused out, const char** __unused unit) {
plotMIDI(WHITE); plotMIDI(WHITE);
}, },
@ -476,6 +472,7 @@ const MenuEntry* mainMenuEntries[] = {
const MenuPage mainMenuPage = { const MenuPage mainMenuPage = {
nullptr, nullptr,
EMenuPageRoot,
CursorIdx::EMain, CursorIdx::EMain,
DISPLAYOFF_IDL, DISPLAYOFF_IDL,
ARR_LEN(mainMenuEntries), mainMenuEntries ARR_LEN(mainMenuEntries), mainMenuEntries
@ -508,35 +505,27 @@ static void parallelSave(SubMenuRef __unused) {
const MenuEntrySub rotatorParaMenu = { const MenuEntrySub rotatorParaMenu = {
MenuType::ESub, "PARALLEL", "SEMITONES", &parallel, 0, 48, MenuEntryFlags::ENone, MenuType::ESub, "PARALLEL", "SEMITONES", &parallel, 0, 48, MenuEntryFlags::ENone,
parallelOptionGet, parallelOptionGet, parallelSave, nullptr
parallelSave,
nullptr
}; };
const MenuEntrySub rotator1Menu = { const MenuEntrySub rotator1Menu = {
MenuType::ESub, "ROTATE 1", "SEMITONES", &rotations[0], 0, 48, MenuEntryFlags::ENone, MenuType::ESub, "ROTATE 1", "SEMITONES", &rotations[0], 0, 48, MenuEntryFlags::ENone,
rotatorOptionGet, rotatorOptionGet, rotatorSave, nullptr
rotatorSave,
nullptr
}; };
const MenuEntrySub rotator2Menu = { const MenuEntrySub rotator2Menu = {
MenuType::ESub, "ROTATE 2", "SEMITONES", &rotations[1], 0, 48, MenuEntryFlags::ENone, MenuType::ESub, "ROTATE 2", "SEMITONES", &rotations[1], 0, 48, MenuEntryFlags::ENone,
rotatorOptionGet, rotatorOptionGet, rotatorSave, nullptr
rotatorSave,
nullptr
}; };
const MenuEntrySub rotator3Menu = { const MenuEntrySub rotator3Menu = {
MenuType::ESub, "ROTATE 3", "SEMITONES", &rotations[2], 0, 48, MenuEntryFlags::ENone, MenuType::ESub, "ROTATE 3", "SEMITONES", &rotations[2], 0, 48, MenuEntryFlags::ENone,
rotatorOptionGet, rotatorOptionGet, rotatorSave, nullptr
rotatorSave,
nullptr
}; };
const MenuEntrySub rotator4Menu = { const MenuEntrySub rotator4Menu = {
MenuType::ESub, "ROTATE 4", "SEMITONES", &rotations[3], 0, 48, MenuEntryFlags::ENone, MenuType::ESub, "ROTATE 4", "SEMITONES", &rotations[3], 0, 48, MenuEntryFlags::ENone,
rotatorOptionGet, rotatorOptionGet, rotatorSave, nullptr
rotatorSave,
nullptr
}; };
static void rotatorPrioOptionGet(SubMenuRef __unused, char* out, const char** __unused) { static void rotatorPrioOptionGet(SubMenuRef __unused, char* out, const char** __unused) {
@ -549,13 +538,10 @@ static void rotatorPrioSave(SubMenuRef __unused) {
} }
const MenuEntrySub rotatorPrioMenu = { const MenuEntrySub rotatorPrioMenu = {
MenuType::ESub, "PRIORITY", "MONO PRIO", &priority, 0,1, MenuEntryFlags::EWrap, MenuType::ESub, "PRIORITY", "MONO PRIO", &priority, 0,1, MenuEntryFlags::EMenuEntryWrap,
rotatorPrioOptionGet, rotatorPrioOptionGet, rotatorPrioSave, nullptr,
rotatorPrioSave,
nullptr,
}; };
const MenuEntry* rotatorMenuEntries[] = { const MenuEntry* rotatorMenuEntries[] = {
(MenuEntry*)&rotatorParaMenu, (MenuEntry*)&rotatorParaMenu,
(MenuEntry*)&rotator1Menu, (MenuEntry*)&rotator1Menu,
@ -567,6 +553,7 @@ const MenuEntry* rotatorMenuEntries[] = {
const MenuPage rotatorMenuPage = { const MenuPage rotatorMenuPage = {
"ROTATOR SETUP", "ROTATOR SETUP",
EMenuPageRoot,
CursorIdx::ERotator, CursorIdx::ERotator,
DISPLAYOFF_IDL, DISPLAYOFF_IDL,
ARR_LEN(rotatorMenuEntries), rotatorMenuEntries ARR_LEN(rotatorMenuEntries), rotatorMenuEntries
@ -575,7 +562,7 @@ const MenuPage rotatorMenuPage = {
//*********************************************************** //***********************************************************
// Breath menu // Breath menu
const MenuEntrySub breathCCMenu = { const MenuEntrySub breathCCMenu = {
MenuType::ESub, "BREATH CC", "BREATH CC", &breathCC, 0, 10, MenuEntryFlags::EWrap, MenuType::ESub, "BREATH CC", "BREATH CC", &breathCC, 0, 10, MenuEntryFlags::EMenuEntryWrap,
[](SubMenuRef __unused, char* out, const char** __unused unit) { [](SubMenuRef __unused, char* out, const char** __unused unit) {
const char* breathCCMenuLabels[] = { "OFF", "MW", "BR", "VL", "EX", "MW+", const char* breathCCMenuLabels[] = { "OFF", "MW", "BR", "VL", "EX", "MW+",
"BR+", "VL+", "EX+", "CF", "20" }; "BR+", "VL+", "EX+", "CF", "20" };
@ -591,7 +578,7 @@ const MenuEntrySub breathCCMenu = {
}; };
const MenuEntrySub breathATMenu = { const MenuEntrySub breathATMenu = {
MenuType::ESub, "BREATH AT", "BREATH AT", &breathAT, 0, 1, MenuEntryFlags::EWrap, MenuType::ESub, "BREATH AT", "BREATH AT", &breathAT, 0, 1, MenuEntryFlags::EMenuEntryWrap,
[](SubMenuRef __unused, char* out, const char ** __unused unit) { [](SubMenuRef __unused, char* out, const char ** __unused unit) {
strncpy(out, breathAT?"ON":"OFF", 4); strncpy(out, breathAT?"ON":"OFF", 4);
}, [](const MenuEntrySub & __unused sub) { }, [](const MenuEntrySub & __unused sub) {
@ -604,7 +591,7 @@ const MenuEntrySub breathATMenu = {
}; };
const MenuEntrySub velocityMenu = { const MenuEntrySub velocityMenu = {
MenuType::ESub, "VELOCITY", "VELOCITY", &velocity, 0, 127, MenuEntryFlags::EWrap, MenuType::ESub, "VELOCITY", "VELOCITY", &velocity, 0, 127, MenuEntryFlags::EMenuEntryWrap,
[](SubMenuRef __unused, char* out, const char** __unused unit) { [](SubMenuRef __unused, char* out, const char** __unused unit) {
if(velocity) numToString(velocity, out); if(velocity) numToString(velocity, out);
else strncpy(out, "DYN", 4); else strncpy(out, "DYN", 4);
@ -614,7 +601,7 @@ const MenuEntrySub velocityMenu = {
}; };
const MenuEntrySub curveMenu = { const MenuEntrySub curveMenu = {
MenuType::ESub, "CURVE", "CURVE", &curve, 0, 12, MenuEntryFlags::EWrap, MenuType::ESub, "CURVE", "CURVE", &curve, 0, 12, MenuEntryFlags::EMenuEntryWrap,
[](SubMenuRef __unused, char* out, const char** __unused unit) { [](SubMenuRef __unused, char* out, const char** __unused unit) {
const char* curveMenuLabels[] = {"-4", "-3", "-2", "-1", "LIN", "+1", "+2", const char* curveMenuLabels[] = {"-4", "-3", "-2", "-1", "LIN", "+1", "+2",
"+3", "+4", "S1", "S2", "Z1", "Z2" }; "+3", "+4", "S1", "S2", "Z1", "Z2" };
@ -625,7 +612,7 @@ const MenuEntrySub curveMenu = {
}; };
const MenuEntrySub velSmpDlMenu = { const MenuEntrySub velSmpDlMenu = {
MenuType::ESub, "VEL DELAY", "VEL DELAY", &velSmpDl, 0, 30, MenuEntryFlags::EWrap, MenuType::ESub, "VEL DELAY", "VEL DELAY", &velSmpDl, 0, 30, MenuEntryFlags::EMenuEntryWrap,
[](SubMenuRef __unused, char *out, const char** label) { [](SubMenuRef __unused, char *out, const char** label) {
if (velSmpDl) { if (velSmpDl) {
numToString(velSmpDl, out); numToString(velSmpDl, out);
@ -637,7 +624,7 @@ const MenuEntrySub velSmpDlMenu = {
}; };
const MenuEntrySub velBiasMenu = { const MenuEntrySub velBiasMenu = {
MenuType::ESub, "VEL BIAS", "VEL BIAS", &velBias, 0, 9, MenuEntryFlags::EWrap, MenuType::ESub, "VEL BIAS", "VEL BIAS", &velBias, 0, 9, MenuEntryFlags::EMenuEntryWrap,
[](SubMenuRef __unused, char* out, const char** __unused unit) { [](SubMenuRef __unused, char* out, const char** __unused unit) {
if (velBias) numToString(velBias, out); if (velBias) numToString(velBias, out);
else strncpy(out, "OFF", 4); else strncpy(out, "OFF", 4);
@ -657,6 +644,7 @@ const MenuEntry* breathMenuEntries[] = {
const MenuPage breathMenuPage = { const MenuPage breathMenuPage = {
"SETUP BREATH", "SETUP BREATH",
0,
CursorIdx::EBreath, CursorIdx::EBreath,
MAIN_MENU, MAIN_MENU,
ARR_LEN(breathMenuEntries), breathMenuEntries ARR_LEN(breathMenuEntries), breathMenuEntries
@ -665,7 +653,7 @@ const MenuPage breathMenuPage = {
//*********************************************************** //***********************************************************
// Control menu // Control menu
const MenuEntrySub portMenu = { const MenuEntrySub portMenu = {
MenuType::ESub, "PORT/GLD", "PORT/GLD", &portamento, 0, 2, MenuEntryFlags::EWrap, MenuType::ESub, "PORT/GLD", "PORT/GLD", &portamento, 0, 2, MenuEntryFlags::EMenuEntryWrap,
[](SubMenuRef __unused,char* out, const char ** __unused unit) { [](SubMenuRef __unused,char* out, const char ** __unused unit) {
const char* labs[] = { "OFF", "ON", "SW" }; const char* labs[] = { "OFF", "ON", "SW" };
strncpy(out, labs[portamento], 4); strncpy(out, labs[portamento], 4);
@ -688,7 +676,7 @@ const MenuEntrySub pitchBendMenu = {
}; };
const MenuEntrySub extraMenu = { const MenuEntrySub extraMenu = {
MenuType::ESub, "EXTRA CTR", "EXTRA CTR", &extraCT, 0,4, MenuEntryFlags::EWrap, MenuType::ESub, "EXTRA CTR", "EXTRA CTR", &extraCT, 0,4, MenuEntryFlags::EMenuEntryWrap,
[](SubMenuRef __unused,char* out, const char** __unused unit) { [](SubMenuRef __unused,char* out, const char** __unused unit) {
const char* extraMenuLabels[] = { "OFF", "MW", "FP", "CF", "SP" }; const char* extraMenuLabels[] = { "OFF", "MW", "FP", "CF", "SP" };
strncpy(out, extraMenuLabels[extraCT], 12); strncpy(out, extraMenuLabels[extraCT], 12);
@ -735,6 +723,7 @@ const MenuEntry* controlMenuEntries[] = {
const MenuPage controlMenuPage = { const MenuPage controlMenuPage = {
"SETUP CTRLS", "SETUP CTRLS",
0,
CursorIdx::EControl, CursorIdx::EControl,
MAIN_MENU, MAIN_MENU,
ARR_LEN(controlMenuEntries), controlMenuEntries ARR_LEN(controlMenuEntries), controlMenuEntries
@ -790,7 +779,7 @@ const MenuEntrySub vibSquelchMenu = {
}; };
const MenuEntrySub vibDirMenu = { const MenuEntrySub vibDirMenu = {
MenuType::ESub, "DIRECTION", "DIRECTION", &vibDirection , 0, 1, MenuEntryFlags::EWrap, MenuType::ESub, "DIRECTION", "DIRECTION", &vibDirection , 0, 1, MenuEntryFlags::EMenuEntryWrap,
[](SubMenuRef __unused, char* out, const char** __unused unit) { [](SubMenuRef __unused, char* out, const char** __unused unit) {
if (DNWD == vibDirection) if (DNWD == vibDirection)
strncpy(out, "NRM", 4); strncpy(out, "NRM", 4);
@ -811,6 +800,7 @@ const MenuEntry* vibratorMenuEntries[] = {
const MenuPage vibratoMenuPage = { const MenuPage vibratoMenuPage = {
"VIBRATO", "VIBRATO",
0,
CursorIdx::EVibrato, CursorIdx::EVibrato,
SETUP_CT_MENU, SETUP_CT_MENU,
ARR_LEN(vibratorMenuEntries), vibratorMenuEntries ARR_LEN(vibratorMenuEntries), vibratorMenuEntries
@ -863,7 +853,7 @@ static bool updateSubMenu(const MenuPage &page, uint32_t timeNow) {
case BTN_DOWN: case BTN_DOWN:
if(currentVal > sub->min) { if(currentVal > sub->min) {
currentVal -= 1; currentVal -= 1;
} else if(sub->flags & MenuEntryFlags::EWrap) { } else if(sub->flags & MenuEntryFlags::EMenuEntryWrap) {
currentVal = sub->max; currentVal = sub->max;
} }
break; break;
@ -871,13 +861,13 @@ static bool updateSubMenu(const MenuPage &page, uint32_t timeNow) {
case BTN_UP: case BTN_UP:
if(currentVal < sub->max) { if(currentVal < sub->max) {
currentVal += 1; currentVal += 1;
} else if(sub->flags & MenuEntryFlags::EWrap) { } else if(sub->flags & MenuEntryFlags::EMenuEntryWrap) {
currentVal = sub->min; currentVal = sub->min;
} }
break; break;
case BTN_ENTER: case BTN_ENTER:
if(sub->flags & MenuEntryFlags::EEnterHandler) { if(sub->flags & EMenuEntryEnterHandler) {
bool result = sub->onEnterFunc(); bool result = sub->onEnterFunc();
if(result) { if(result) {
activeSub[page.cursor] = 0; activeSub[page.cursor] = 0;
@ -915,7 +905,6 @@ static bool updateMenuPage( const MenuPage &page, uint32_t timeNow ) {
bool redraw = false; bool redraw = false;
if (buttonPressedAndNotUsed) { if (buttonPressedAndNotUsed) {
int lastEntry = page.numEntries-1; int lastEntry = page.numEntries-1;
buttonPressedAndNotUsed = 0; buttonPressedAndNotUsed = 0;
@ -1053,7 +1042,6 @@ void menu() {
} }
} }
// save the reading. Next time through the loop, it'll be the lastButtonState: // save the reading. Next time through the loop, it'll be the lastButtonState:
lastDeumButtons = deumButtons; lastDeumButtons = deumButtons;
@ -1062,10 +1050,6 @@ void menu() {
state = DISPLAYOFF_IDL; state = DISPLAYOFF_IDL;
stateFirstRun = 1; stateFirstRun = 1;
subParallel = 0;
subRotator = 0;
subPriority = 0;
subVibSquelch = 0; subVibSquelch = 0;
memset(activeSub, 0, sizeof(activeSub)); memset(activeSub, 0, sizeof(activeSub));
} }

View file

@ -45,6 +45,6 @@ unsigned short readSetting(byte address);
void writeSetting(byte address, unsigned short value); void writeSetting(byte address, unsigned short value);
int updateAdjustMenu(uint32_t timeNow, uint8_t buttons, bool firstRun, bool updateSensor); int updateAdjustMenu(uint32_t timeNow, uint8_t buttons, bool firstRun, bool updateSensor);
bool adjustPageUpdate(uint16_t buttonChanges, uint32_t timeNow);
#endif #endif

View file

@ -10,11 +10,17 @@ enum MenuType {
enum MenuEntryFlags { enum MenuEntryFlags {
ENone = 0, ENone = 0,
EWrap = (1<<0), EMenuEntryWrap = (1u<<0),
ECustom = (1<<1), EMenuEntryCustom = (1u<<1),
EEnterHandler = (1<<2), EMenuEntryEnterHandler = (1u<<2),
}; };
enum MenuPageFlags {
EMenuPageCustom = (1u<<0),
EMenuPageRoot = (1u<<1),
};
struct MenuEntry { struct MenuEntry {
enum MenuType type; enum MenuType type;
const char* title; const char* title;
@ -44,12 +50,18 @@ struct MenuEntryStateCh {
struct MenuPage { struct MenuPage {
const char* title; const char* title;
uint16_t flags;
byte cursor; byte cursor;
byte parentPage; byte parentPage;
byte numEntries; byte numEntries;
const MenuEntry** entries; const MenuEntry** entries;
}; };
struct MenuPageCustom {
const char* title;
uint16_t flags;
bool (*menuUpdateFunc)(void);
};
//*********************************************************** //***********************************************************