From 8239761a267745d98069331c1ee942ea548b2ace Mon Sep 17 00:00:00 2001 From: Reed Nightingale Date: Mon, 10 Feb 2020 01:17:47 -0800 Subject: [PATCH] Move button declarations together, declaring rather than defining required functions --- menu_main_buttons.cpp | 482 ++++++++++++++++++++++-------------------- 1 file changed, 253 insertions(+), 229 deletions(-) diff --git a/menu_main_buttons.cpp b/menu_main_buttons.cpp index b22aceb..12669ba 100644 --- a/menu_main_buttons.cpp +++ b/menu_main_buttons.cpp @@ -45,6 +45,259 @@ static const unsigned int LAYOUT_TX_Y = LAYOUT_MODE_TEXT_Y; static const unsigned int LAYOUT_TX_WIDTH = 40; static const unsigned int LAYOUT_TX_HEIGHT = 36; +void toVfoA(char* text_out, const uint16_t max_text_size); +ButtonStatus_e bsVfoA(); +void osVfoA(); +constexpr Button bVfoA PROGMEM = { + LAYOUT_VFO_LABEL_X + 0*LAYOUT_VFO_LABEL_PITCH_X, + LAYOUT_VFO_LABEL_Y, + LAYOUT_VFO_LABEL_WIDTH, + LAYOUT_VFO_LABEL_HEIGHT, + nullptr, + toVfoA, + bsVfoA, + osVfoA, + 'A' +}; + +void toVfoB(char* text_out, const uint16_t max_text_size); +ButtonStatus_e bsVfoB(); +void osVfoB(); +constexpr Button bVfoB PROGMEM = { + LAYOUT_VFO_LABEL_X + 1*LAYOUT_VFO_LABEL_PITCH_X, + LAYOUT_VFO_LABEL_Y, + LAYOUT_VFO_LABEL_WIDTH, + LAYOUT_VFO_LABEL_HEIGHT, + nullptr, + toVfoB, + bsVfoB, + osVfoB, + 'B' +}; + +constexpr char txtRit [] PROGMEM = "RIT"; +ButtonStatus_e bsRit(); +void osRit(); +constexpr Button bRit PROGMEM = { + LAYOUT_BUTTON_X + 0*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txtRit, + nullptr, + bsRit, + osRit, + 'R' +}; + +constexpr char txtUsb [] PROGMEM = "USB"; +ButtonStatus_e bsUsb(); +void osUsb(); +constexpr Button bUsb PROGMEM = { + LAYOUT_BUTTON_X + 1*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txtUsb, + nullptr, + bsUsb, + osUsb, + 'U' +}; + +constexpr char txtLsb [] PROGMEM = "LSB"; +ButtonStatus_e bsLsb(); +void osLsb(); +constexpr Button bLsb PROGMEM = { + LAYOUT_BUTTON_X + 2*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txtLsb, + nullptr, + bsLsb, + osLsb, + 'L' +}; + +constexpr char txtCw [] PROGMEM = "CW"; +ButtonStatus_e bsCw(); +void osCw(); +constexpr Button bCw PROGMEM = { + LAYOUT_BUTTON_X + 3*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txtCw, + nullptr, + bsCw, + osCw, + 'C' +}; + +constexpr char txtSpl [] PROGMEM = "SPL"; +ButtonStatus_e bsSpl(); +void osSpl(); +constexpr Button bSpl PROGMEM = { + LAYOUT_BUTTON_X + 4*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txtSpl, + nullptr, + bsSpl, + osSpl, + 'S' +}; + +constexpr char txt80 [] PROGMEM = "80"; +ButtonStatus_e bs80(); +void os80(); +constexpr Button b80 PROGMEM = { + LAYOUT_BUTTON_X + 0*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txt80, + nullptr, + bs80, + os80, + '8' +}; + +constexpr char txt40 [] PROGMEM = "40"; +ButtonStatus_e bs40(); +void os40(); +constexpr Button b40 PROGMEM = { + LAYOUT_BUTTON_X + 1*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txt40, + nullptr, + bs40, + os40, + '4' +}; + +constexpr char txt30 [] PROGMEM = "30"; +ButtonStatus_e bs30(); +void os30(); +constexpr Button b30 PROGMEM = { + LAYOUT_BUTTON_X + 2*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txt30, + nullptr, + bs30, + os30, + '3' +}; + +constexpr char txt20 [] PROGMEM = "20"; +ButtonStatus_e bs20(); +void os20(); +constexpr Button b20 PROGMEM = { + LAYOUT_BUTTON_X + 3*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txt20, + nullptr, + bs20, + os20, + '2' +}; + +constexpr char txt17 [] PROGMEM = "17"; +ButtonStatus_e bs17(); +void os17(); +constexpr Button b17 PROGMEM = { + LAYOUT_BUTTON_X + 4*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txt17, + nullptr, + bs17, + os17, + '7' +}; + +constexpr char txt15 [] PROGMEM = "15"; +ButtonStatus_e bs15(); +void os15(); +constexpr Button b15 PROGMEM = { + LAYOUT_BUTTON_X + 0*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 2*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txt15, + nullptr, + bs15, + os15, + '5' +}; + +constexpr char txt10 [] PROGMEM = "10"; +ButtonStatus_e bs10(); +void os10(); +constexpr Button b10 PROGMEM = { + LAYOUT_BUTTON_X + 1*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 2*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txt10, + nullptr, + bs10, + os10, + '1' +}; + +constexpr char txtMenu [] PROGMEM = "\x7F";//gear icon +ButtonStatus_e bsIgnore(); +void osMenu(); +constexpr Button bMenu = { + LAYOUT_BUTTON_X + 3*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 2*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txtMenu, + nullptr, + bsIgnore, + osMenu, + 'M' +}; + +constexpr char txtNumpad [] PROGMEM = "FRQ"; +ButtonStatus_e bsIgnore(); +void osNumpad(); +constexpr Button bNumpad = { + LAYOUT_BUTTON_X + 4*LAYOUT_BUTTON_PITCH_X, + LAYOUT_BUTTON_Y + 2*LAYOUT_BUTTON_PITCH_Y, + LAYOUT_BUTTON_WIDTH, + LAYOUT_BUTTON_HEIGHT, + txtNumpad, + nullptr, + bsIgnore, + osNumpad, + 'F' +}; + +static constexpr const Button *const buttons[] PROGMEM = { + &bVfoA, &bVfoB, + + &bRit, &bUsb, &bLsb, &bCw, &bSpl, + &b80, &b40, &b30, &b20, &b17, + &b15, &b10, &bMenu, &bNumpad + +}; + +const Button* const* mainMenuButtons = buttons; +const uint8_t MAIN_MENU_NUM_BUTTONS = sizeof(buttons) / sizeof(buttons[0]); + + void toVfo(char* text_out, const uint16_t max_text_size, const Vfo_e vfo) { if(max_text_size < 2){ @@ -108,17 +361,6 @@ ButtonStatus_e bsVfoA(){ void osVfoA(){ osVfo(Vfo_e::VFO_A); } -constexpr Button bVfoA PROGMEM = { - LAYOUT_VFO_LABEL_X + 0*LAYOUT_VFO_LABEL_PITCH_X, - LAYOUT_VFO_LABEL_Y, - LAYOUT_VFO_LABEL_WIDTH, - LAYOUT_VFO_LABEL_HEIGHT, - nullptr, - toVfoA, - bsVfoA, - osVfoA, - 'A' -}; void toVfoB(char* text_out, const uint16_t max_text_size){ toVfo(text_out,max_text_size,Vfo_e::VFO_B); @@ -129,19 +371,6 @@ ButtonStatus_e bsVfoB(){ void osVfoB(){ osVfo(Vfo_e::VFO_B); } -constexpr Button bVfoB PROGMEM = { - LAYOUT_VFO_LABEL_X + 1*LAYOUT_VFO_LABEL_PITCH_X, - LAYOUT_VFO_LABEL_Y, - LAYOUT_VFO_LABEL_WIDTH, - LAYOUT_VFO_LABEL_HEIGHT, - nullptr, - toVfoB, - bsVfoB, - osVfoB, - 'B' -}; - -constexpr char txtRit [] PROGMEM = "RIT"; ButtonStatus_e bsRit(){ return globalSettings.ritOn ? ButtonStatus_e::Active : ButtonStatus_e::Inactive; @@ -179,17 +408,6 @@ void osRit(){ memcpy_P(&button,&bRit,sizeof(button)); drawButton(&button); } -constexpr Button bRit PROGMEM = { - LAYOUT_BUTTON_X + 0*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txtRit, - nullptr, - bsRit, - osRit, - 'R' -}; void osSidebandMode(VfoMode_e mode){ SetActiveVfoMode(mode); @@ -201,8 +419,6 @@ void osSidebandMode(VfoMode_e mode){ drawButton(&button); } -constexpr char txtUsb [] PROGMEM = "USB"; - ButtonStatus_e bsUsb(){ return (VfoMode_e::VFO_MODE_USB == GetActiveVfoMode()) ? ButtonStatus_e::Active : ButtonStatus_e::Inactive; } @@ -211,20 +427,6 @@ void osUsb(){ osSidebandMode(VfoMode_e::VFO_MODE_USB); } -constexpr Button bUsb PROGMEM = { - LAYOUT_BUTTON_X + 1*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txtUsb, - nullptr, - bsUsb, - osUsb, - 'U' -}; - -constexpr char txtLsb [] PROGMEM = "LSB"; - ButtonStatus_e bsLsb(){ return (VfoMode_e::VFO_MODE_LSB == GetActiveVfoMode()) ? ButtonStatus_e::Active : ButtonStatus_e::Inactive; } @@ -233,20 +435,6 @@ void osLsb(){ osSidebandMode(VfoMode_e::VFO_MODE_LSB); } -constexpr Button bLsb PROGMEM = { - LAYOUT_BUTTON_X + 2*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txtLsb, - nullptr, - bsLsb, - osLsb, - 'L' -}; - -constexpr char txtCw [] PROGMEM = "CW"; - ButtonStatus_e bsCw(){ return (TuningMode_e::TUNE_CW == globalSettings.tuningMode) ? ButtonStatus_e::Active : ButtonStatus_e::Inactive; } @@ -264,20 +452,6 @@ void osCw(){ drawButton(&button); } -constexpr Button bCw PROGMEM = { - LAYOUT_BUTTON_X + 3*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txtCw, - nullptr, - bsCw, - osCw, - 'C' -}; - -constexpr char txtSpl [] PROGMEM = "SPL"; - ButtonStatus_e bsSpl(){ return globalSettings.splitOn ? ButtonStatus_e::Active : ButtonStatus_e::Inactive; } @@ -294,18 +468,6 @@ void osSpl(){ drawButton(&button); } -constexpr Button bSpl PROGMEM = { - LAYOUT_BUTTON_X + 4*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 0*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txtSpl, - nullptr, - bsSpl, - osSpl, - 'S' -}; - ButtonStatus_e bsBand(const uint8_t band){ return isFreqInBand(GetActiveVfoFreq(),band) ? ButtonStatus_e::Active : ButtonStatus_e::Inactive; } @@ -314,8 +476,6 @@ void osBand(const uint8_t band){ SetActiveVfoFreq(getFreqInBand(GetActiveVfoFreq(),band)); } -constexpr char txt80 [] PROGMEM = "80"; - ButtonStatus_e bs80(){ return bsBand(80); } @@ -324,20 +484,6 @@ void os80(){ osBand(80); } -constexpr Button b80 PROGMEM = { - LAYOUT_BUTTON_X + 0*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txt80, - nullptr, - bs80, - os80, - '8' -}; - -constexpr char txt40 [] PROGMEM = "40"; - ButtonStatus_e bs40(){ return bsBand(40); } @@ -346,20 +492,6 @@ void os40(){ osBand(40); } -constexpr Button b40 PROGMEM = { - LAYOUT_BUTTON_X + 1*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txt40, - nullptr, - bs40, - os40, - '4' -}; - -constexpr char txt30 [] PROGMEM = "30"; - ButtonStatus_e bs30(){ return bsBand(30); } @@ -368,20 +500,6 @@ void os30(){ osBand(30); } -constexpr Button b30 PROGMEM = { - LAYOUT_BUTTON_X + 2*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txt30, - nullptr, - bs30, - os30, - '3' -}; - -constexpr char txt20 [] PROGMEM = "20"; - ButtonStatus_e bs20(){ return bsBand(20); } @@ -390,20 +508,6 @@ void os20(){ osBand(20); } -constexpr Button b20 PROGMEM = { - LAYOUT_BUTTON_X + 3*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txt20, - nullptr, - bs20, - os20, - '2' -}; - -constexpr char txt17 [] PROGMEM = "17"; - ButtonStatus_e bs17(){ return bsBand(17); } @@ -412,20 +516,6 @@ void os17(){ osBand(17); } -constexpr Button b17 PROGMEM = { - LAYOUT_BUTTON_X + 4*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 1*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txt17, - nullptr, - bs17, - os17, - '7' -}; - -constexpr char txt15 [] PROGMEM = "15"; - ButtonStatus_e bs15(){ return bsBand(15); } @@ -434,20 +524,6 @@ void os15(){ osBand(15); } -constexpr Button b15 PROGMEM = { - LAYOUT_BUTTON_X + 0*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 2*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txt15, - nullptr, - bs15, - os15, - '5' -}; - -constexpr char txt10 [] PROGMEM = "10"; - ButtonStatus_e bs10(){ return bsBand(10); } @@ -456,70 +532,18 @@ void os10(){ osBand(10); } -constexpr Button b10 PROGMEM = { - LAYOUT_BUTTON_X + 1*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 2*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txt10, - nullptr, - bs10, - os10, - '1' -}; - ButtonStatus_e bsIgnore(){ return ButtonStatus_e::Stateless; } -constexpr char txtMenu [] PROGMEM = "\x7F";//gear icon - void osMenu(){ //TODO //rootSettingsMenu->initMenu(); //mainmenu.active_submenu = rootSettingsMenu; } -constexpr Button bMenu = { - LAYOUT_BUTTON_X + 3*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 2*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txtMenu, - nullptr, - bsIgnore, - osMenu, - 'M' -}; - -constexpr char txtNumpad [] PROGMEM = "FRQ"; - void osNumpad(){ //TODO //numpadMenu->initMenu(); //mainMenu.active_submenu = numpadMenu; } - -constexpr Button bNumpad = { - LAYOUT_BUTTON_X + 4*LAYOUT_BUTTON_PITCH_X, - LAYOUT_BUTTON_Y + 2*LAYOUT_BUTTON_PITCH_Y, - LAYOUT_BUTTON_WIDTH, - LAYOUT_BUTTON_HEIGHT, - txtNumpad, - nullptr, - bsIgnore, - osNumpad, - 'F' -}; - -static constexpr const Button *const buttons[] PROGMEM = { - &bVfoA, &bVfoB, - - &bRit, &bUsb, &bLsb, &bCw, &bSpl, - &b80, &b40, &b30, &b20, &b17, - &b15, &b10, &bMenu, &bNumpad - -}; - -const Button* const* mainMenuButtons = buttons; -const uint8_t MAIN_MENU_NUM_BUTTONS = sizeof(buttons) / sizeof(buttons[0]);