Make more strings progmem. Probably should consolidate strings at some point so that we don't have lots of duplicate '.' and 'Hz' floating around

This commit is contained in:
Reed Nightingale 2020-01-04 02:41:06 -08:00
parent a2109de63f
commit 4674230f51

View File

@ -165,12 +165,12 @@ void formatFreq(long f, char *buff) {
if (f < 10000000l){ if (f < 10000000l){
buff[0] = ' '; buff[0] = ' ';
strncat(buff, b, 4); strncat(buff, b, 4);
strcat(buff, "."); strcat_P(buff,(const char*)F("."));
strncat(buff, &b[4], 2); strncat(buff, &b[4], 2);
} }
else { else {
strncat(buff, b, 5); strncat(buff, b, 5);
strcat(buff, "."); strcat_P(buff,(const char*)F("."));
strncat(buff, &b[5], 2); strncat(buff, &b[5], 2);
} }
} }
@ -181,7 +181,7 @@ inline void drawCommandbar(char* text){
/** A generic control to read variable values /** A generic control to read variable values
*/ */
int getValueByKnob(int minimum, int maximum, int step_size, int initial, char* prefix, char *postfix) int getValueByKnob(int minimum, int maximum, int step_size, int initial, const __FlashStringHelper* prefix, const __FlashStringHelper* postfix)
{ {
int knob = 0; int knob = 0;
int knob_value; int knob_value;
@ -192,10 +192,10 @@ int getValueByKnob(int minimum, int maximum, int step_size, int initial, char*
active_delay(200); active_delay(200);
knob_value = initial; knob_value = initial;
strcpy(b, prefix); strcpy_P(b,(const char*)prefix);
itoa(knob_value, c, 10); itoa(knob_value, c, 10);
strcat(b, c); strcat(b, c);
strcat(b, postfix); strcat_P(b, (const char*)postfix);
drawCommandbar(b); drawCommandbar(b);
while(!btnDown() && digitalRead(PTT) == HIGH){ while(!btnDown() && digitalRead(PTT) == HIGH){
@ -206,10 +206,10 @@ int getValueByKnob(int minimum, int maximum, int step_size, int initial, char*
if (knob_value < maximum && knob > 0) if (knob_value < maximum && knob > 0)
knob_value += step_size; knob_value += step_size;
strcpy(b, prefix); strcpy_P(b,(const char*)prefix);
itoa(knob_value, c, 10); itoa(knob_value, c, 10);
strcat(b, c); strcat(b, c);
strcat(b, postfix); strcat_P(b,(const char*)postfix);
drawCommandbar(b); drawCommandbar(b);
} }
checkCAT(); checkCAT();
@ -376,7 +376,8 @@ void fastTune(){
active_delay(50); active_delay(50);
active_delay(300); active_delay(300);
displayText("Fast tune", LAYOUT_MODE_TEXT_X, LAYOUT_MODE_TEXT_Y, LAYOUT_MODE_TEXT_WIDTH, LAYOUT_MODE_TEXT_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); strcpy_P(c,(const char*)F("Fast tune"));
displayText(c, LAYOUT_MODE_TEXT_X, LAYOUT_MODE_TEXT_Y, LAYOUT_MODE_TEXT_WIDTH, LAYOUT_MODE_TEXT_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND);
while(1){ while(1){
checkCAT(); checkCAT();
@ -498,7 +499,7 @@ void enterFreq(){
}//if button hit test }//if button hit test
}// end of the button scanning loop }// end of the button scanning loop
strcpy(b, c); strcpy(b, c);
strcat(b, " KHz"); strcat_P(b,(const char*)F(" KHz"));
displayText(b, LAYOUT_MODE_TEXT_X, LAYOUT_MODE_TEXT_Y, LAYOUT_MODE_TEXT_WIDTH, LAYOUT_MODE_TEXT_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); displayText(b, LAYOUT_MODE_TEXT_X, LAYOUT_MODE_TEXT_Y, LAYOUT_MODE_TEXT_WIDTH, LAYOUT_MODE_TEXT_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND);
active_delay(300); active_delay(300);
while(readTouch()) while(readTouch())
@ -507,23 +508,26 @@ void enterFreq(){
} }
void drawCWStatus(){ void drawCWStatus(){
strcpy(b, " cw: "); strcpy_P(b,(const char*)F(" cw: "));
int wpm = 1200/globalSettings.cwDitDurationMs; int wpm = 1200/globalSettings.cwDitDurationMs;
itoa(wpm,c, 10); itoa(wpm,c, 10);
strcat(b, c); strcat(b, c);
strcat(b, "wpm, "); strcat_P(b,(const char*)F("wpm, "));
itoa(globalSettings.cwSideToneFreq, c, 10); itoa(globalSettings.cwSideToneFreq, c, 10);
strcat(b, c); strcat(b, c);
strcat(b, "hz"); strcat_P(b,(const char*)F("hz"));
displayText(b, LAYOUT_CW_TEXT_X, LAYOUT_CW_TEXT_Y, LAYOUT_CW_TEXT_WIDTH, LAYOUT_CW_TEXT_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND); displayText(b, LAYOUT_CW_TEXT_X, LAYOUT_CW_TEXT_Y, LAYOUT_CW_TEXT_WIDTH, LAYOUT_CW_TEXT_HEIGHT, COLOR_TEXT, COLOR_BACKGROUND, COLOR_BACKGROUND);
} }
void drawTx(){ void drawTx(){
if (globalSettings.txActive) if (globalSettings.txActive){
displayText("TX", LAYOUT_TX_X, LAYOUT_TX_Y, LAYOUT_TX_WIDTH, LAYOUT_TX_HEIGHT, COLOR_ACTIVE_TEXT, COLOR_ACTIVE_BACKGROUND, COLOR_BACKGROUND); strcpy_P(b,(const char*)F("TX"));
else displayText(b, LAYOUT_TX_X, LAYOUT_TX_Y, LAYOUT_TX_WIDTH, LAYOUT_TX_HEIGHT, COLOR_ACTIVE_TEXT, COLOR_ACTIVE_BACKGROUND, COLOR_BACKGROUND);
}
else{
displayFillrect(LAYOUT_TX_X, LAYOUT_TX_Y, LAYOUT_TX_WIDTH, LAYOUT_TX_HEIGHT, COLOR_BACKGROUND); displayFillrect(LAYOUT_TX_X, LAYOUT_TX_Y, LAYOUT_TX_WIDTH, LAYOUT_TX_HEIGHT, COLOR_BACKGROUND);
}
} }
void drawStatusbar(){ void drawStatusbar(){
drawCWStatus(); drawCWStatus();
@ -748,7 +752,7 @@ void setCwSpeed()
{ {
int wpm = 1200/globalSettings.cwDitDurationMs; int wpm = 1200/globalSettings.cwDitDurationMs;
wpm = getValueByKnob(1, 100, 1, wpm, "CW: ", " WPM"); wpm = getValueByKnob(1, 100, 1, wpm,F("CW: "),F(" WPM"));
globalSettings.cwDitDurationMs = 1200/wpm; globalSettings.cwDitDurationMs = 1200/wpm;
SaveSettingsToEeprom(); SaveSettingsToEeprom();
@ -764,9 +768,9 @@ void setCwTone(){
tone(CW_TONE, globalSettings.cwSideToneFreq); tone(CW_TONE, globalSettings.cwSideToneFreq);
itoa(globalSettings.cwSideToneFreq, c, 10); itoa(globalSettings.cwSideToneFreq, c, 10);
strcpy(b, "CW Tone: "); strcpy_P(b,(const char*)F("CW Tone: "));
strcat(b, c); strcat(b, c);
strcat(b, " Hz"); strcat_P(b,(const char*)F(" Hz"));
drawCommandbar(b); drawCommandbar(b);
//disable all clock 1 and clock 2 //disable all clock 1 and clock 2
@ -783,9 +787,9 @@ void setCwTone(){
tone(CW_TONE, globalSettings.cwSideToneFreq); tone(CW_TONE, globalSettings.cwSideToneFreq);
itoa(globalSettings.cwSideToneFreq, c, 10); itoa(globalSettings.cwSideToneFreq, c, 10);
strcpy(b, "CW Tone: "); strcpy_P(b,(const char*)F("CW Tone: "));
strcat(b, c); strcat(b, c);
strcat(b, " Hz"); strcat_P(b,(const char*)F(" Hz"));
drawCommandbar(b); drawCommandbar(b);
//printLine2(b); //printLine2(b);