From 9ebdf8b213dd6c4996796ec35b294ccc86016c2e Mon Sep 17 00:00:00 2001 From: Reed Nightingale Date: Sat, 4 Jan 2020 00:53:00 -0800 Subject: [PATCH 1/2] Render setup menus better --- setup.cpp | 108 ++++++++++++++++++++++++++++++++++++--------------- ubitx.h | 7 ---- ubitx_ui.cpp | 24 ------------ 3 files changed, 77 insertions(+), 62 deletions(-) diff --git a/setup.cpp b/setup.cpp index c37f433..90ea02a 100644 --- a/setup.cpp +++ b/setup.cpp @@ -25,6 +25,67 @@ void setupExit(){ extern int32_t calibration; extern uint32_t si5351bx_vcoa; +static const unsigned int COLOR_TEXT = DISPLAY_WHITE; +static const unsigned int COLOR_BACKGROUND = DISPLAY_BLACK; +static const unsigned int COLOR_TITLE_BACKGROUND = DISPLAY_NAVY; +static const unsigned int COLOR_SETTING_BACKGROUND = DISPLAY_NAVY; +static const unsigned int COLOR_ACTIVE_BORDER = DISPLAY_WHITE; +static const unsigned int COLOR_INACTIVE_BORDER = COLOR_BACKGROUND; + +static const unsigned int LAYOUT_OUTER_BORDER_X = 10; +static const unsigned int LAYOUT_OUTER_BORDER_Y = 10; +static const unsigned int LAYOUT_OUTER_BORDER_WIDTH = 300; +static const unsigned int LAYOUT_OUTER_BORDER_HEIGHT = 220; + +static const unsigned int LAYOUT_INNER_BORDER_X = 12; +static const unsigned int LAYOUT_INNER_BORDER_Y = 12; +static const unsigned int LAYOUT_INNER_BORDER_WIDTH = 296; +static const unsigned int LAYOUT_INNER_BORDER_HEIGHT = 216; + +static const unsigned int LAYOUT_TITLE_X = LAYOUT_INNER_BORDER_X; +static const unsigned int LAYOUT_TITLE_Y = LAYOUT_INNER_BORDER_Y; +static const unsigned int LAYOUT_TITLE_WIDTH = LAYOUT_INNER_BORDER_WIDTH; +static const unsigned int LAYOUT_TITLE_HEIGHT = 35; + +static const unsigned int LAYOUT_ITEM_X = 30; +static const unsigned int LAYOUT_ITEM_Y = LAYOUT_TITLE_Y + LAYOUT_TITLE_HEIGHT + 5; +static const unsigned int LAYOUT_ITEM_WIDTH = 260; +static const unsigned int LAYOUT_ITEM_HEIGHT = 30; +static const unsigned int LAYOUT_ITEM_PITCH_Y = LAYOUT_ITEM_HEIGHT + 1; + +static const unsigned int LAYOUT_SETTING_VALUE_X = LAYOUT_ITEM_X; +static const unsigned int LAYOUT_SETTING_VALUE_Y = LAYOUT_ITEM_Y + 3*LAYOUT_ITEM_PITCH_Y; +static const unsigned int LAYOUT_SETTING_VALUE_WIDTH = LAYOUT_ITEM_WIDTH; +static const unsigned int LAYOUT_SETTING_VALUE_HEIGHT = LAYOUT_ITEM_HEIGHT; + +static const unsigned int LAYOUT_INSTRUCTION_TEXT_X = 20; +static const unsigned int LAYOUT_INSTRUCTION_TEXT_Y = LAYOUT_ITEM_Y + 5*LAYOUT_ITEM_PITCH_Y; +static const unsigned int LAYOUT_INSTRUCTION_TEXT_WIDTH = LAYOUT_ITEM_WIDTH; +static const unsigned int LAYOUT_INSTRUCTION_TEXT_HEIGHT = LAYOUT_ITEM_HEIGHT; + +void displayDialog(char *title, char *instructions){ + displayClear(COLOR_BACKGROUND); + displayRect(LAYOUT_OUTER_BORDER_X,LAYOUT_OUTER_BORDER_Y,LAYOUT_OUTER_BORDER_WIDTH,LAYOUT_OUTER_BORDER_HEIGHT, COLOR_ACTIVE_BORDER); + displayRect(LAYOUT_INNER_BORDER_X,LAYOUT_INNER_BORDER_Y,LAYOUT_INNER_BORDER_WIDTH,LAYOUT_INNER_BORDER_HEIGHT, COLOR_ACTIVE_BORDER); + displayText(title, LAYOUT_TITLE_X, LAYOUT_TITLE_Y, LAYOUT_TITLE_WIDTH, LAYOUT_TITLE_HEIGHT, COLOR_TEXT, COLOR_TITLE_BACKGROUND, COLOR_ACTIVE_BORDER); + displayText(instructions, LAYOUT_INSTRUCTION_TEXT_X, LAYOUT_INSTRUCTION_TEXT_Y, LAYOUT_INSTRUCTION_TEXT_WIDTH, LAYOUT_INSTRUCTION_TEXT_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); +} + +void printCarrierFreq(unsigned long freq){ + + memset(c, 0, sizeof(c)); + memset(b, 0, sizeof(b)); + + ultoa(freq, b, DEC); + + strncat(c, b, 2); + strcat(c, "."); + strncat(c, &b[2], 3); + strcat(c, "."); + strncat(c, &b[5], 1); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_TITLE_BACKGROUND, COLOR_BACKGROUND); +} + void setupFreq(){ int knob = 0; int32_t prev_calibration; @@ -35,13 +96,15 @@ void setupFreq(){ frequency = (frequency/1000l)* 1000l; setFrequency(frequency); - displayRawText("You should have a", 20, 50, DISPLAY_CYAN, DISPLAY_NAVY); - displayRawText("signal exactly at ", 20, 75, DISPLAY_CYAN, DISPLAY_NAVY); + displayText("You should have a", LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); + displayText("signal exactly at ", LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y + 1*LAYOUT_ITEM_PITCH_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); ltoa(frequency/1000l, c, 10); strcat(c, " KHz"); - displayRawText(c, 20, 100, DISPLAY_CYAN, DISPLAY_NAVY); - - displayRawText("Rotate to zerobeat", 20, 180, DISPLAY_CYAN, DISPLAY_NAVY); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y + 2*LAYOUT_ITEM_PITCH_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); + displayText("Rotate to zerobeat", LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y + 4*LAYOUT_ITEM_PITCH_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); + + ltoa(calibration, b, 10); + displayText(b, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_TITLE_BACKGROUND, COLOR_BACKGROUND); //keep clear of any previous button press while (btnDown()) active_delay(100); @@ -72,7 +135,7 @@ void setupFreq(){ //displayRawText("Rotate to zerobeat", 20, 120, DISPLAY_CYAN, DISPLAY_NAVY); ltoa(calibration, b, 10); - displayText(b, 100, 140, 100, 26, DISPLAY_CYAN, DISPLAY_NAVY, DISPLAY_WHITE); + displayText(b, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_TITLE_BACKGROUND, COLOR_BACKGROUND); } EEPROM.put(MASTER_CAL, calibration); @@ -131,7 +194,7 @@ void setupCwDelay(){ itoa(10 * (int)cwDelayTime, b, 10); strcat(b, " msec"); - displayText(b, 100, 100, 120, 26, DISPLAY_CYAN, DISPLAY_BLACK, DISPLAY_BLACK); + displayText(b, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); while (!btnDown()){ knob = enc_read(); @@ -145,7 +208,7 @@ void setupCwDelay(){ itoa(10 * (int)cwDelayTime, b, 10); strcat(b, " msec"); - displayText(b, 100, 100, 120, 26, DISPLAY_CYAN, DISPLAY_BLACK, DISPLAY_BLACK); + displayText(b, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); } @@ -164,11 +227,11 @@ void setupKeyer(){ displayDialog("Set CW Keyer", "Press tune to Save"); if (!Iambic_Key) - displayText("< Hand Key >", 100, 100, 120, 26, DISPLAY_CYAN, DISPLAY_BLACK, DISPLAY_BLACK); + displayText("< Hand Key >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); else if (keyerControl & IAMBICB) - displayText("< Iambic A >", 100, 100, 120, 26, DISPLAY_CYAN, DISPLAY_BLACK, DISPLAY_BLACK); + displayText("< Iambic A >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); else - displayText("< Iambic B >", 100, 100, 120, 26, DISPLAY_CYAN, DISPLAY_BLACK, DISPLAY_BLACK); + displayText("< Iambic B >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); if (!Iambic_Key) tmp_key = 0; //hand key @@ -192,11 +255,11 @@ void setupKeyer(){ tmp_key = 0; if (tmp_key == 0) - displayText("< Hand Key >", 100, 100, 120, 26, DISPLAY_CYAN, DISPLAY_BLACK, DISPLAY_BLACK); + displayText("< Hand Key >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); else if (tmp_key == 1) - displayText("< Iambic A >", 100, 100, 120, 26, DISPLAY_CYAN, DISPLAY_BLACK, DISPLAY_BLACK); + displayText("< Iambic A >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); else if (tmp_key == 2) - displayText("< Iambic B >", 100, 100, 120, 26, DISPLAY_CYAN, DISPLAY_BLACK, DISPLAY_BLACK); + displayText("< Iambic B >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); } active_delay(500); @@ -216,23 +279,6 @@ void setupKeyer(){ menuOn = 0; } -static const unsigned int COLOR_TEXT = DISPLAY_WHITE; -static const unsigned int COLOR_BACKGROUND = DISPLAY_BLACK; -static const unsigned int COLOR_TITLE_BACKGROUND = DISPLAY_NAVY; -static const unsigned int COLOR_ACTIVE_BORDER = DISPLAY_WHITE; -static const unsigned int COLOR_INACTIVE_BORDER = DISPLAY_DARKGREY; - -static const unsigned int LAYOUT_TITLE_X = 10; -static const unsigned int LAYOUT_TITLE_Y = 10; -static const unsigned int LAYOUT_TITLE_WIDTH = 300; -static const unsigned int LAYOUT_TITLE_HEIGHT = 35; - -static const unsigned int LAYOUT_ITEM_X = 30; -static const unsigned int LAYOUT_ITEM_Y = LAYOUT_TITLE_Y + LAYOUT_TITLE_HEIGHT + 5; -static const unsigned int LAYOUT_ITEM_WIDTH = 260; -static const unsigned int LAYOUT_ITEM_HEIGHT = 30; -static const unsigned int LAYOUT_ITEM_PITCH_Y = 31; - const char MI_SET_FREQ [] PROGMEM = "Set Freq..."; const char MI_SET_BFO [] PROGMEM = "Set BFO..."; const char MI_CW_DELAY [] PROGMEM = "CW Delay..."; diff --git a/ubitx.h b/ubitx.h index 10fdc63..15bf3a5 100644 --- a/ubitx.h +++ b/ubitx.h @@ -196,13 +196,6 @@ void doSetup2(); //main setup function, displays the setup menu, calls various d void setupBFO(); void setupFreq(); - - -//displays a nice dialog box with a title and instructions as footnotes -void displayDialog(char *title, char *instructions); -void printCarrierFreq(unsigned long freq); //used to display the frequency in the command area (ex: fast tuning) - - //main functions to check if any button is pressed and other user interface events void doCommands(); //does the commands with encoder to jump from button to button void checkTouch(); //does the commands with a touch on the buttons diff --git a/ubitx_ui.cpp b/ubitx_ui.cpp index 07e4b4d..ac8c817 100644 --- a/ubitx_ui.cpp +++ b/ubitx_ui.cpp @@ -218,30 +218,6 @@ int getValueByKnob(int minimum, int maximum, int step_size, int initial, char* return knob_value; } -void printCarrierFreq(unsigned long freq){ - - memset(c, 0, sizeof(c)); - memset(b, 0, sizeof(b)); - - ultoa(freq, b, DEC); - - strncat(c, b, 2); - strcat(c, "."); - strncat(c, &b[2], 3); - strcat(c, "."); - strncat(c, &b[5], 1); - displayText(c, 110, 100, 100, 30, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); -} - -void displayDialog(char *title, char *instructions){ - displayClear(COLOR_BACKGROUND); - displayRect(10,10,300,220, COLOR_TEXT); - displayHline(20,45,280,COLOR_TEXT); - displayRect(12,12,296,216, COLOR_TEXT); - displayRawText(title, 20, 20, COLOR_TEXT, COLOR_BACKGROUND); - displayRawText(instructions, 20, 200, COLOR_TEXT, COLOR_BACKGROUND); -} - void displayVFO(int vfo){ int x, y; int displayColor, displayBackground, displayBorder; From 29aa76edf5dd79c907f1e77b464fc58858a430a2 Mon Sep 17 00:00:00 2001 From: Reed Nightingale Date: Sat, 4 Jan 2020 01:10:10 -0800 Subject: [PATCH 2/2] Make strings progmem, saving ~200 bytes of RAM --- setup.cpp | 81 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/setup.cpp b/setup.cpp index 90ea02a..f6d74d9 100644 --- a/setup.cpp +++ b/setup.cpp @@ -63,12 +63,14 @@ static const unsigned int LAYOUT_INSTRUCTION_TEXT_Y = LAYOUT_ITEM_Y + 5*LAYOUT_I static const unsigned int LAYOUT_INSTRUCTION_TEXT_WIDTH = LAYOUT_ITEM_WIDTH; static const unsigned int LAYOUT_INSTRUCTION_TEXT_HEIGHT = LAYOUT_ITEM_HEIGHT; -void displayDialog(char *title, char *instructions){ +void displayDialog(const __FlashStringHelper* title, const __FlashStringHelper* instructions){ + strcpy_P(b,(const char*)title); + strcpy_P(c,(const char*)instructions); displayClear(COLOR_BACKGROUND); displayRect(LAYOUT_OUTER_BORDER_X,LAYOUT_OUTER_BORDER_Y,LAYOUT_OUTER_BORDER_WIDTH,LAYOUT_OUTER_BORDER_HEIGHT, COLOR_ACTIVE_BORDER); displayRect(LAYOUT_INNER_BORDER_X,LAYOUT_INNER_BORDER_Y,LAYOUT_INNER_BORDER_WIDTH,LAYOUT_INNER_BORDER_HEIGHT, COLOR_ACTIVE_BORDER); - displayText(title, LAYOUT_TITLE_X, LAYOUT_TITLE_Y, LAYOUT_TITLE_WIDTH, LAYOUT_TITLE_HEIGHT, COLOR_TEXT, COLOR_TITLE_BACKGROUND, COLOR_ACTIVE_BORDER); - displayText(instructions, LAYOUT_INSTRUCTION_TEXT_X, LAYOUT_INSTRUCTION_TEXT_Y, LAYOUT_INSTRUCTION_TEXT_WIDTH, LAYOUT_INSTRUCTION_TEXT_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); + displayText(b, LAYOUT_TITLE_X, LAYOUT_TITLE_Y, LAYOUT_TITLE_WIDTH, LAYOUT_TITLE_HEIGHT, COLOR_TEXT, COLOR_TITLE_BACKGROUND, COLOR_ACTIVE_BORDER); + displayText(c, LAYOUT_INSTRUCTION_TEXT_X, LAYOUT_INSTRUCTION_TEXT_Y, LAYOUT_INSTRUCTION_TEXT_WIDTH, LAYOUT_INSTRUCTION_TEXT_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); } void printCarrierFreq(unsigned long freq){ @@ -79,9 +81,9 @@ void printCarrierFreq(unsigned long freq){ ultoa(freq, b, DEC); strncat(c, b, 2); - strcat(c, "."); + strcat_P(c,(const char*)F(".")); strncat(c, &b[2], 3); - strcat(c, "."); + strcat(c,(const char*)F(".")); strncat(c, &b[5], 1); displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_TITLE_BACKGROUND, COLOR_BACKGROUND); } @@ -90,18 +92,21 @@ void setupFreq(){ int knob = 0; int32_t prev_calibration; - displayDialog("Set Frequency", "Push TUNE to Save"); + displayDialog(F("Set Frequency"),F("Push TUNE to Save")); //round off the the nearest khz frequency = (frequency/1000l)* 1000l; setFrequency(frequency); - displayText("You should have a", LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); - displayText("signal exactly at ", LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y + 1*LAYOUT_ITEM_PITCH_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); + strcpy_P(c,(const char*)F("You should have a")); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); + strcpy_P(c,(const char*)F("signal exactly at")); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y + 1*LAYOUT_ITEM_PITCH_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); ltoa(frequency/1000l, c, 10); - strcat(c, " KHz"); + strcat_P(c,(const char*)F(" KHz")); displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y + 2*LAYOUT_ITEM_PITCH_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); - displayText("Rotate to zerobeat", LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y + 4*LAYOUT_ITEM_PITCH_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); + strcpy_P(c,(const char*)F("Rotate to zerobeat")); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_ITEM_Y + 4*LAYOUT_ITEM_PITCH_Y, LAYOUT_ITEM_WIDTH, LAYOUT_ITEM_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); ltoa(calibration, b, 10); displayText(b, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_TITLE_BACKGROUND, COLOR_BACKGROUND); @@ -113,11 +118,6 @@ void setupFreq(){ prev_calibration = calibration; calibration = 0; -// ltoa(calibration/8750, c, 10); -// strcpy(b, c); -// strcat(b, "Hz"); -// printLine2(b); - while (!btnDown()) { knob = enc_read(); @@ -131,8 +131,6 @@ void setupFreq(){ si5351bx_setfreq(0, usbCarrier); //set back the cardrier oscillator anyway, cw tx switches it off si5351_set_calibration(calibration); setFrequency(frequency); - - //displayRawText("Rotate to zerobeat", 20, 120, DISPLAY_CYAN, DISPLAY_NAVY); ltoa(calibration, b, 10); displayText(b, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_TITLE_BACKGROUND, COLOR_BACKGROUND); @@ -155,7 +153,7 @@ void setupBFO(){ prevCarrier = usbCarrier; - displayDialog("Set BFO", "Press TUNE to Save"); + displayDialog(F("Set BFO"),F("Press TUNE to Save")); usbCarrier = 11053000l; si5351bx_setfreq(0, usbCarrier); @@ -187,13 +185,13 @@ void setupCwDelay(){ int knob = 0; int prev_cw_delay; - displayDialog("Set CW T/R Delay", "Press tune to Save"); + displayDialog(F("Set CW T/R Delay"),F("Press tune to Save")); active_delay(500); prev_cw_delay = cwDelayTime; itoa(10 * (int)cwDelayTime, b, 10); - strcat(b, " msec"); + strcat_P(b,(const char*)F(" msec")); displayText(b, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); while (!btnDown()){ @@ -207,16 +205,13 @@ void setupCwDelay(){ continue; //don't update the frequency or the display itoa(10 * (int)cwDelayTime, b, 10); - strcat(b, " msec"); + strcat_P(b,(const char*)F(" msec")); displayText(b, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); } EEPROM.put(CW_DELAYTIME, cwDelayTime); - -// cwDelayTime = getValueByKnob(10, 1000, 50, cwDelayTime, "CW Delay>", " msec"); - active_delay(500); menuOn = 0; } @@ -224,14 +219,20 @@ void setupCwDelay(){ void setupKeyer(){ int tmp_key, knob; - displayDialog("Set CW Keyer", "Press tune to Save"); + displayDialog(F("Set CW Keyer"),F("Press tune to Save")); - if (!Iambic_Key) - displayText("< Hand Key >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); - else if (keyerControl & IAMBICB) - displayText("< Iambic A >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); - else - displayText("< Iambic B >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); + if (!Iambic_Key){ + strcpy_P(c,(const char*)F("< Hand Key >")); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); + } + else if (keyerControl & IAMBICB){ + strcpy_P(c,(const char*)F("< Iambic A >")); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); + } + else{ + strcpy_P(c,(const char*)F("< Iambic B >")); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); + } if (!Iambic_Key) tmp_key = 0; //hand key @@ -254,12 +255,18 @@ void setupKeyer(){ if (tmp_key > 2) tmp_key = 0; - if (tmp_key == 0) - displayText("< Hand Key >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); - else if (tmp_key == 1) - displayText("< Iambic A >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); - else if (tmp_key == 2) - displayText("< Iambic B >", LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); + if (tmp_key == 0){ + strcpy_P(c,(const char*)F("< Hand Key >")); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); + } + else if (tmp_key == 1){ + strcpy_P(c,(const char*)F("< Iambic A >")); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); + } + else if (tmp_key == 2){ + strcpy_P(c,(const char*)F("< Iambic B >")); + displayText(c, LAYOUT_SETTING_VALUE_X, LAYOUT_SETTING_VALUE_Y, LAYOUT_SETTING_VALUE_WIDTH, LAYOUT_SETTING_VALUE_HEIGHT, COLOR_TEXT, COLOR_SETTING_BACKGROUND, COLOR_BACKGROUND); + } } active_delay(500);