Added menuoption Show Long PS

This commit is contained in:
Sjef Verhoeven PE5PVB
2024-08-03 15:32:16 +02:00
parent ba9c125f70
commit 0d3a4e033f
7 changed files with 68 additions and 56 deletions
+4
View File
@@ -108,6 +108,7 @@ bool seek;
bool seekinit; bool seekinit;
bool setupmode; bool setupmode;
bool showclock; bool showclock;
bool showlongps;
bool usesquelch; bool usesquelch;
bool softmuteam; bool softmuteam;
bool softmutefm; bool softmutefm;
@@ -524,6 +525,7 @@ void setup() {
autosquelch = EEPROM.readByte(EE_BYTE_AUTOSQUELCH); autosquelch = EEPROM.readByte(EE_BYTE_AUTOSQUELCH);
longbandpress = EEPROM.readByte(EE_BYTE_LONGBANDPRESS); longbandpress = EEPROM.readByte(EE_BYTE_LONGBANDPRESS);
showclock = EEPROM.readByte(EE_BYTE_SHOWCLOCK); showclock = EEPROM.readByte(EE_BYTE_SHOWCLOCK);
showlongps = EEPROM.readByte(EE_BYTE_SHOWLONGPS);
if (spispeed == SPI_SPEED_DEFAULT) { if (spispeed == SPI_SPEED_DEFAULT) {
tft.setSPISpeed(SPI_FREQUENCY / 1000000); tft.setSPISpeed(SPI_FREQUENCY / 1000000);
@@ -4321,6 +4323,7 @@ void DefaultSettings(byte userhardwaremodel) {
EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, 0); EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, 0);
EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, 0); EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, 0);
EEPROM.writeByte(EE_BYTE_SHOWCLOCK, 1); EEPROM.writeByte(EE_BYTE_SHOWCLOCK, 1);
EEPROM.writeByte(EE_BYTE_SHOWLONGPS, 1);
for (int i = 0; i < EE_PRESETS_CNT; i++) { for (int i = 0; i < EE_PRESETS_CNT; i++) {
EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM); EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM);
@@ -4550,6 +4553,7 @@ void endMenu() {
EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, autosquelch); EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, autosquelch);
EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, longbandpress); EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, longbandpress);
EEPROM.writeByte(EE_BYTE_SHOWCLOCK, showclock); EEPROM.writeByte(EE_BYTE_SHOWCLOCK, showclock);
EEPROM.writeByte(EE_BYTE_SHOWLONGPS, showlongps);
EEPROM.commit(); EEPROM.commit();
if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false; if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false;
Serial.end(); Serial.end();
+6 -5
View File
@@ -209,9 +209,9 @@
#define EE_CHECKBYTE_VALUE 10 // 0 ~ 255,add new entry, change for new value #define EE_CHECKBYTE_VALUE 10 // 0 ~ 255,add new entry, change for new value
#define EE_PRESETS_FREQUENCY 0 // Default value when memory channel should be skipped! #define EE_PRESETS_FREQUENCY 0 // Default value when memory channel should be skipped!
#ifdef HAS_AIR_BAND #ifdef HAS_AIR_BAND
#define EE_TOTAL_CNT 2222 // Total occupied eeprom bytes #define EE_TOTAL_CNT 2223 // Total occupied eeprom bytes
#else #else
#define EE_TOTAL_CNT 2217 // Total occupied eeprom bytes #define EE_TOTAL_CNT 2218 // Total occupied eeprom bytes
#endif #endif
#define EE_PRESETS_BAND_START 0 // 99 * 1 byte #define EE_PRESETS_BAND_START 0 // 99 * 1 byte
@@ -312,10 +312,11 @@
#define EE_BYTE_SCANMUTE 2213 #define EE_BYTE_SCANMUTE 2213
#define EE_BYTE_AUTOSQUELCH 2214 #define EE_BYTE_AUTOSQUELCH 2214
#define EE_BYTE_LONGBANDPRESS 2215 #define EE_BYTE_LONGBANDPRESS 2215
#define EE_BYTE_SHOWCLOCK 2216 #define EE_BYTE_SHOWCLOCK 2216
#define EE_BYTE_SHOWLONGPS 2217
#ifdef HAS_AIR_BAND #ifdef HAS_AIR_BAND
#define EE_BYTE_AIRSTEPSIZE 2117 #define EE_BYTE_AIRSTEPSIZE 2118
#define EE_UINT16_FREQUENCY_AIR 2218 #define EE_UINT16_FREQUENCY_AIR 2219
#endif #endif
// End of EEPROM index defines // End of EEPROM index defines
+16 -29
View File
@@ -1246,11 +1246,11 @@ void ShowOneLine(byte position, byte item, bool selected) {
case DISPLAYSETTINGS: case DISPLAYSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][78]), 6, 2); FullLineSprite.drawString(removeNewline(myLanguage[language][262]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString(Skin[CurrentSkin], 298, 2); FullLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break; break;
case RDSSETTINGS: case RDSSETTINGS:
@@ -1401,11 +1401,10 @@ void ShowOneLine(byte position, byte item, bool selected) {
case RDSSETTINGS: case RDSSETTINGS:
FullLineSprite.setTextDatum(TL_DATUM); FullLineSprite.setTextDatum(TL_DATUM);
FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(removeNewline(myLanguage[language][262]), 6, 2); FullLineSprite.drawString(removeNewline(myLanguage[language][263]), 6, 2);
FullLineSprite.setTextDatum(TR_DATUM); FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
FullLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 298, 2); FullLineSprite.drawString((showlongps ? myLanguage[language][42] : myLanguage[language][30]), 298, 2);
break; break;
case FMSETTINGS: case FMSETTINGS:
@@ -2093,15 +2092,9 @@ void MenuUp() {
break; break;
case ITEM8: case ITEM8:
CurrentSkin ++; showclock = !showclock;
if (CurrentSkin > sizeof(Skin) / sizeof(Skin[0]) - 1) CurrentSkin = 0;
BuildMenu();
tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor);
tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor);
OneBigLineSprite.fillSprite(BackgroundColor);
Infoboxprint(myLanguage[language][78]); OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.drawString(Skin[CurrentSkin], 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
@@ -2214,9 +2207,9 @@ void MenuUp() {
break; break;
case ITEM10: case ITEM10:
showclock = !showclock; showlongps = !showlongps;
OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.drawString((showlongps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
} }
@@ -2959,15 +2952,9 @@ void MenuDown() {
break; break;
case ITEM8: case ITEM8:
CurrentSkin --; showclock = !showclock;
if (CurrentSkin > sizeof(Skin) / sizeof(Skin[0]) - 1) CurrentSkin = sizeof(Skin) / sizeof(Skin[0]) - 1;
BuildMenu();
OneBigLineSprite.fillSprite(BackgroundColor);
tft.drawRoundRect(10, 30, 300, 170, 5, ActiveColor);
tft.fillRoundRect(12, 32, 296, 166, 5, BackgroundColor);
Infoboxprint(myLanguage[language][78]); OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.drawString(Skin[CurrentSkin], 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
@@ -3081,9 +3068,9 @@ void MenuDown() {
break; break;
case ITEM10: case ITEM10:
showclock = !showclock; showlongps = !showlongps;
OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.drawString((showlongps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
} }
@@ -3852,9 +3839,9 @@ void DoMenu() {
break; break;
case ITEM8: case ITEM8:
Infoboxprint(myLanguage[language][78]); Infoboxprint(myLanguage[language][262]);
OneBigLineSprite.drawString(Skin[CurrentSkin], 135, 0); OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
@@ -3957,9 +3944,9 @@ void DoMenu() {
break; break;
case ITEM10: case ITEM10:
Infoboxprint(myLanguage[language][262]); Infoboxprint(myLanguage[language][263]);
OneBigLineSprite.drawString((showclock ? myLanguage[language][42] : myLanguage[language][30]), 135, 0); OneBigLineSprite.drawString((showlongps ? myLanguage[language][42] : myLanguage[language][30]), 135, 0);
OneBigLineSprite.pushSprite(24, 118); OneBigLineSprite.pushSprite(24, 118);
break; break;
} }
+1
View File
@@ -60,6 +60,7 @@ extern bool scandxmode;
extern bool scanmem; extern bool scanmem;
extern bool scanmute; extern bool scanmute;
extern bool showclock; extern bool showclock;
extern bool showlongps;
extern bool softmuteam; extern bool softmuteam;
extern bool softmutefm; extern bool softmutefm;
extern bool Stereostatusold; extern bool Stereostatusold;
+37 -19
View File
@@ -5,7 +5,7 @@
// [number of languages][number of texts] // [number of languages][number of texts]
static const char* const myLanguage[18][263] PROGMEM = { static const char* const myLanguage[18][264] PROGMEM = {
{ "English", // English { "English", // English
"Rotary direction changed", // 1 "Rotary direction changed", // 1
"Please release button", // 2 "Please release button", // 2
@@ -268,7 +268,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarm!!!", // 259 "Alarm!!!", // 259
"Initial", // 260 "Initial", // 260
"Always", // 261 "Always", // 261
"Show clock" // 262 "Show clock", // 262
"Show long PS" // 263
}, },
{ "Nederlands", // Dutch { "Nederlands", // Dutch
@@ -533,7 +534,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarm ! ALARM !", // 259 "Alarm ! ALARM !", // 259
"Initieel", // 260 "Initieel", // 260
"Altijd", //261 "Altijd", //261
"Toon klok" // 262 "Toon klok", // 262
"Toon long PS" // 263
}, },
{ "Polski", // Polish { "Polski", // Polish
@@ -798,7 +800,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarm", // 259 "Alarm", // 259
"Początkowy", // 260 "Początkowy", // 260
"Zawsze", // 261 "Zawsze", // 261
"Pokaż zegar" // 262 "Pokaż zegar", // 262
"Show long PS" // 263
}, },
{ "Hrvatski", // Croatian { "Hrvatski", // Croatian
@@ -1063,7 +1066,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarm !", // 259 "Alarm !", // 259
"Početno", // 260 "Početno", // 260
"Uvijek", //261 "Uvijek", //261
"Prikaži sat" // 262 "Prikaži sat", // 262
"Show long PS" // 263
}, },
{ "Ελληνικά", // Greek { "Ελληνικά", // Greek
@@ -1328,7 +1332,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Συναγερμός!!!", // 259 "Συναγερμός!!!", // 259
"Αρχικό", // 260 "Αρχικό", // 260
"Πάντα", //261 "Πάντα", //261
"Εμφάνιση ρολογιού" // 262 "Εμφάνιση ρολογιού", // 262
"Show long PS" // 263
}, },
{ "Română", // Romanian { "Română", // Romanian
@@ -1593,7 +1598,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarmă !", // 259 "Alarmă !", // 259
"Inițial", // 260 "Inițial", // 260
"Mereu", //261 "Mereu", //261
"Arată ceasul" // 262 "Arată ceasul", // 262
"Show long PS" // 263
}, },
{ "Deutsch", // German { "Deutsch", // German
@@ -1858,7 +1864,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarm! Alarm!", // 259 "Alarm! Alarm!", // 259
"Anfänglich", // 260 "Anfänglich", // 260
"Immer", // 261 "Immer", // 261
"Uhr anzeigen" // 262 "Uhr anzeigen", // 262
"Show long PS" // 263
}, },
{ "Český", // Czech { "Český", // Czech
@@ -2123,7 +2130,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarm Alarm !", // 259 "Alarm Alarm !", // 259
"Počáteční", // 260 "Počáteční", // 260
"Vždy", //261 "Vždy", //261
"Zobrazit hodiny" // 262 "Zobrazit hodiny", // 262
"Show long PS" // 263
}, },
{ "Magyar", // Hungarian { "Magyar", // Hungarian
@@ -2388,7 +2396,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Riasztás!!!", // 259 "Riasztás!!!", // 259
"Kezdeti", // 260 "Kezdeti", // 260
"Mindig", //261 "Mindig", //261
"Óra mutatása" // 262 "Óra mutatása", // 262
"Show long PS" // 263
}, },
{ "Français", // French { "Français", // French
@@ -2653,7 +2662,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alerte !", // 259 "Alerte !", // 259
"Initial", // 260 "Initial", // 260
"Toujours", // 261 "Toujours", // 261
"Afficher l'horloge" // 262 "Afficher l'horloge", // 262
"Show long PS" // 263
}, },
{ "Български", // Bulgarian { "Български", // Bulgarian
@@ -2918,7 +2928,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Тревога!", // 259 "Тревога!", // 259
"Начален", // 260 "Начален", // 260
"Винаги", // 261 "Винаги", // 261
"Покажи часовника" // 262 "Покажи часовника", // 262
"Show long PS" // 263
}, },
{ "Русский", // Russian { "Русский", // Russian
@@ -3183,7 +3194,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Тревога!", // 259 "Тревога!", // 259
"Начальный", // 260 "Начальный", // 260
"Всегда", // 261 "Всегда", // 261
"Показать часы" // 262 "Показать часы", // 262
"Show long PS" // 263
}, },
{ "Українська", // Ukranian { "Українська", // Ukranian
@@ -3448,7 +3460,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarm!!!", // 259 "Alarm!!!", // 259
"Початковий", // 260 "Початковий", // 260
"Завжди", // 261 "Завжди", // 261
"Показати годинник" // 262 "Показати годинник", // 262
"Show long PS" // 263
}, },
{ "Italiano", // Italian { "Italiano", // Italian
@@ -3713,7 +3726,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"!!Allarme!!", // 259 "!!Allarme!!", // 259
"Iniziale", // 260 "Iniziale", // 260
"Sempre", // 261 "Sempre", // 261
"Mostra l'orologio" // 262 "Mostra l'orologio", // 262
"Show long PS" // 263
}, },
{ "Simplified Chinese", // Simplified Chinese { "Simplified Chinese", // Simplified Chinese
@@ -3978,7 +3992,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarm!!!", // 259 "Alarm!!!", // 259
"初始", // 260 "初始", // 260
"始终", // 261 "始终", // 261
"显示时钟" // 262 "显示时钟", // 262
"Show long PS" // 263
}, },
{ "Norsk", // Norwegian { "Norsk", // Norwegian
@@ -4243,7 +4258,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarm!", // 259 "Alarm!", // 259
"Innledende", // 260 "Innledende", // 260
"Alltid", // 261 "Alltid", // 261
"Vis klokka" // 262 "Vis klokka", // 262
"Show long PS" // 263
}, },
{ "Español", // Spanish { "Español", // Spanish
@@ -4508,7 +4524,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"¡ Alarma !", // 259 "¡ Alarma !", // 259
"Inicial", // 260 "Inicial", // 260
"Siempre", // 261 "Siempre", // 261
"Mostrar reloj" // 262 "Mostrar reloj", // 262
"Show long PS" // 263
}, },
{ "Português", // Portuguese { "Português", // Portuguese
@@ -4773,7 +4790,8 @@ static const char* const myLanguage[18][263] PROGMEM = {
"Alarme Alarme !", // 259 "Alarme Alarme !", // 259
"Inicial", // 260 "Inicial", // 260
"Sempre", // 261 "Sempre", // 261
"Mostrar relógio" // 262 "Mostrar relógio", // 262
"Show long PS" // 263
} }
}; };
#endif #endif
+2 -2
View File
@@ -668,11 +668,11 @@ void showPTY() {
} }
void showPS() { void showPS() {
if (radio.rds.stationName != PSold || radio.rds.hasLongPS) { if (radio.rds.stationName != PSold || (radio.rds.hasLongPS && showlongps)) {
if (afscreen) { if (afscreen) {
if (!screenmute) tftReplace(0, PSold, radio.rds.stationName, 160, 201, BWAutoColor, BWAutoColorSmooth, BackgroundColor, 16); if (!screenmute) tftReplace(0, PSold, radio.rds.stationName, 160, 201, BWAutoColor, BWAutoColorSmooth, BackgroundColor, 16);
} else { } else {
if (radio.rds.hasLongPS) { if (radio.rds.hasLongPS && showlongps) {
String stationNameLongString = String(radio.rds.stationNameLong) + " "; String stationNameLongString = String(radio.rds.stationNameLong) + " ";
if (stationNameLongString != stationNameLongOld) { if (stationNameLongString != stationNameLongOld) {
PSLongWidth = PSSprite.textWidth(stationNameLongString); PSLongWidth = PSSprite.textWidth(stationNameLongString);
+1
View File
@@ -35,6 +35,7 @@ extern bool rtcset;
extern bool screenmute; extern bool screenmute;
extern bool setupmode; extern bool setupmode;
extern bool showclock; extern bool showclock;
extern bool showlongps;
extern bool TAold; extern bool TAold;
extern bool TPold; extern bool TPold;
extern bool wifi; extern bool wifi;