diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 2d1d5ab..df899e4 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -491,7 +491,14 @@ void setup() { scancancel = EEPROM.readByte(EE_BYTE_SCANCANCEL); scanmute = EEPROM.readByte(EE_BYTE_SCANMUTE); - if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10); + if (spispeed == SPI_SPEED_DEFAULT) { + tft.setSPISpeed(SPI_FREQUENCY / 1000000); + } else if (spispeed == 7) { + setAutoSpeedSPI(); + } else { + tft.setSPISpeed(spispeed * 10); + } + LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN; LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX; MWLowEdgeSet = mwstepsize == false ? FREQ_MW_LOW_EDGE_MIN_9K : FREQ_MW_LOW_EDGE_MIN_10K; @@ -2658,6 +2665,7 @@ void ShowFreq(int mode) { attachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A), read_encoder, CHANGE); attachInterrupt(digitalPinToInterrupt(ROTARY_PIN_B), read_encoder, CHANGE); + setAutoSpeedSPI(); rdsreset = true; licold = 254; ECCold = 253; @@ -4060,3 +4068,50 @@ void startFMDXScan() { scantimer = millis(); scandxmode = true; } + +void setAutoSpeedSPI() { + switch (frequency / 10) { + case 875 ... 877: tft.setSPISpeed(28); break; + case 878 ... 881: tft.setSPISpeed(24); break; + case 882 ... 892: tft.setSPISpeed(42); break; + case 893 ... 899: tft.setSPISpeed(31); break; + case 900 ... 904: tft.setSPISpeed(12); break; + case 905 ... 906: tft.setSPISpeed(16); break; + case 907 ... 910: tft.setSPISpeed(11); break; + case 911 ... 916: tft.setSPISpeed(15); break; + case 917 ... 921: tft.setSPISpeed(24); break; + case 922 ... 928: tft.setSPISpeed(13); break; + case 929: tft.setSPISpeed(11); break; + case 930 ... 932: tft.setSPISpeed(13); break; + case 933 ... 939: tft.setSPISpeed(18); break; + case 940 ... 941: tft.setSPISpeed(12); break; + case 942: tft.setSPISpeed(17); break; + case 943 ... 949: tft.setSPISpeed(15); break; + case 950: tft.setSPISpeed(19); break; + case 951: tft.setSPISpeed(15); break; + case 952 ... 960: tft.setSPISpeed(22); break; + case 961 ... 965: tft.setSPISpeed(15); break; + case 966 ... 973: tft.setSPISpeed(22); break; + case 974 ... 979: tft.setSPISpeed(17); break; + case 980 ... 982: tft.setSPISpeed(20); break; + case 983 ... 987: tft.setSPISpeed(18); break; + case 988 ... 993: tft.setSPISpeed(11); break; + case 994 ... 996: tft.setSPISpeed(18); break; + case 997 ... 1005: tft.setSPISpeed(11); break; + case 1006: tft.setSPISpeed(13); break; + case 1007 ... 1011: tft.setSPISpeed(11); break; + case 1012 ... 1016: tft.setSPISpeed(18); break; + case 1017 ... 1026: tft.setSPISpeed(13); break; + case 1027 ... 1035: tft.setSPISpeed(23); break; + case 1036 ... 1038: tft.setSPISpeed(15); break; + case 1039 ... 1042: tft.setSPISpeed(12); break; + case 1043 ... 1047: tft.setSPISpeed(23); break; + case 1048 ... 1050: tft.setSPISpeed(28); break; + case 1051 ... 1062: tft.setSPISpeed(15); break; + case 1063 ... 1068: tft.setSPISpeed(18); break; + case 1069 ... 1074: tft.setSPISpeed(14); break; + case 1075: tft.setSPISpeed(17); break; + case 1076 ... 1080: tft.setSPISpeed(15); break; + default: tft.setSPISpeed(30); break; + } +} diff --git a/src/gui.cpp b/src/gui.cpp index 547e7e1..52a82cb 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -1274,7 +1274,11 @@ void ShowOneLine(byte position, byte item, bool selected) { FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false); FullLineSprite.drawString("MHz", 298, 3); FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); - FullLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 258, 3); + if (spispeed == 7) { + FullLineSprite.drawString(myLanguage[language][86], 258, 3); + } else { + FullLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 258, 3); + } } break; @@ -1805,10 +1809,20 @@ void MenuUp() { OneBigLineSprite.drawString("MHz", 155, 0); OneBigLineSprite.setTextDatum(TR_DATUM); OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); - OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0); + if (spispeed == 7) { + OneBigLineSprite.drawString(myLanguage[language][86], 140, 0); + } else { + OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0); + } OneBigLineSprite.pushSprite(24, 118); - if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10); + if (spispeed == SPI_SPEED_DEFAULT) { + tft.setSPISpeed(SPI_FREQUENCY / 1000000); + } else if (spispeed == 7) { + setAutoSpeedSPI(); + } else { + tft.setSPISpeed(spispeed * 10); + } break; } break; @@ -2596,10 +2610,20 @@ void MenuDown() { OneBigLineSprite.drawString("MHz", 155, 0); OneBigLineSprite.setTextDatum(TR_DATUM); OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); - OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0); + if (spispeed == 7) { + OneBigLineSprite.drawString(myLanguage[language][86], 140, 0); + } else { + OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0); + } OneBigLineSprite.pushSprite(24, 118); - if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000); else tft.setSPISpeed(spispeed * 10); + if (spispeed == SPI_SPEED_DEFAULT) { + tft.setSPISpeed(SPI_FREQUENCY / 1000000); + } else if (spispeed == 7) { + setAutoSpeedSPI(); + } else { + tft.setSPISpeed(spispeed * 10); + } break; } @@ -3452,7 +3476,11 @@ void DoMenu() { OneBigLineSprite.drawString("MHz", 155, 0); OneBigLineSprite.setTextDatum(TR_DATUM); OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false); - OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0); + if (spispeed == 7) { + OneBigLineSprite.drawString(myLanguage[language][86], 140, 0); + } else { + OneBigLineSprite.drawString((spispeed == SPI_SPEED_DEFAULT ? String(myLanguage[language][204]) + " " + String(SPI_FREQUENCY / 1000000, DEC) : String(spispeed * 10, DEC)), 140, 0); + } OneBigLineSprite.pushSprite(24, 118); break; } diff --git a/src/gui.h b/src/gui.h index 4bfef40..1a9e7e8 100644 --- a/src/gui.h +++ b/src/gui.h @@ -229,4 +229,5 @@ extern void startFMDXScan(); extern void DoMemoryPosTune(); extern void UpdateFonts(bool mode); extern void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int color, int smoothcolor, uint8_t fontsize); +extern void setAutoSpeedSPI(); #endif \ No newline at end of file diff --git a/src/language.h b/src/language.h index a51c8e4..2e7667b 100644 --- a/src/language.h +++ b/src/language.h @@ -92,7 +92,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NONE", // 83 "Software version", // 84 "Frequency font", // 85 - "NOT POSSIBLE", // 86 + "Auto", // 86 "No AF available", // 87 "No EON available", // 88 "No RT+ available", // 89 @@ -317,7 +317,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "Geen", // 83 "Software versie", // 84 "Frequentie font", // 85 - "NIET MOGELIJK", // 86 + "Auto", // 86 "Geen AF data", // 87 "Geen EON data", // 88 "Geen RT+ data", // 89 @@ -542,7 +542,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "BRAK", // 83 "Wersja oprogramowania", // 84 "Czcionka częstotliwości", // 85 - "NIEMOŻLIWE", // 86 + "Auto", // 86 "AF niedostępny", // 87 "EON niedostępny", // 88 "RT+ niedostępny", // 89 @@ -767,7 +767,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NEMA", // 83 "Verzija softvera", // 84 "Font frekvencije", // 85 - "NIJE MOGUĆE", // 86 + "Auto", // 86 "AF nedostupan", // 87 "EON nedostupan", // 88 "RT+ nedostupan", // 89 @@ -992,7 +992,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "KAMIA", // 83 "Έκδοση λογισμικού", // 84 "Γραμματοσειρά\nσυχνότητας", // 85 - "ΜΗ ΔΥΝΑΤΟ", // 86 + "Auto", // 86 "Μη διαθέσιμο AF", // 87 "Μη διαθέσιμο EON", // 88 "Μη διαθέσιμο RT+", // 89 @@ -1217,7 +1217,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NICI UNUL", // 83 " versiune Software", // 84 "Font Frecventa", // 85 - "Nu se poate", // 86 + "Auto", // 86 "AF nu este disponibil", // 87 "EON nu este disponibil", // 88 "RT+ nu este disponibil", // 89 @@ -1442,7 +1442,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "KEINE", // 83 "Softwareversion", // 84 "Frequenz-Schriftart", // 85 *** - "NICHT MÖGLICH", // 86 + "Auto", // 86 "Keine AF verfügbar", // 87 "Kein EON verfügbar", // 88 "Kein RT+ verfügbar", // 89 @@ -1667,7 +1667,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation) "Software version", // 84 "Frequency font", // 85 *** - "ODPOJTE USB", // 86 + "Auto", // 86 "AF nedostupné", // 87 "EON nedostupný", // 88 "RT+ nedostupný", // 89 @@ -1892,7 +1892,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation) "Software version", // 84 "Frequency font", // 85 *** - "ODPOJTE USB", // 86 + "Auto", // 86 "AF nedostupné", // 87 "EON nedostupný", // 88 "RT+ nedostupný", // 89 @@ -2117,7 +2117,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "AUCUNE", // 83 "Version de logiciel", // 84 "Police de fréquence", // 85 *** - "IMPOSSIBLE", // 86 + "Auto", // 86 "AF indisponible", // 87 "EON indisponible", // 88 "RT+ indisponible", // 89 @@ -2342,7 +2342,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation) "Software version", // 84 "Frequency font", // 85 *** - "НЕ Е ВЪЗМОЖНО", // 86 + "Auto", // 86 "AF опцията не е налична", // 87 "EON опцията не е налична", // 88 "RT+ опцията не е налична", // 89 @@ -2567,7 +2567,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "Не использовать AM", // 83 "Версия прошивки -", // 84 "Шрифт индикации частоты", // 85 *** - "НЕВОЗМОЖНО", // 86 + "Auto", // 86 "Нет данных", // 87 "Нет данных", // 88 "Нет данных", // 89 @@ -2792,7 +2792,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation) "Версія ПО", // 84 "Frequency font", // 85 *** - "НЕ МОЖЛИВО", // 86 + "Auto", // 86 "Немає доступних AF", // 87 "Немає доступного EON", // 88 "Немає доступного RT+", // 89 @@ -3017,7 +3017,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NONE", // 83 represents: AM/FM bands unavailable(please delete this note after translation) "Software version", // 84 "Frequency font", // 85 *** - "IMPOSSIBILE", // 86 + "Auto", // 86 "AF non disponibile", // 87 "EON non disponibile", // 88 "RT + non disponibile", // 89 @@ -3242,7 +3242,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "不可用", // 83 "固件版本", // 84 "频率字体", // 85 *** - "不可用", // 86 + "Auto", // 86 "AF 不可用", // 87 "EON 不可用", // 88 "RT+ 不可用", // 89 @@ -3467,7 +3467,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "INGEN", // 83 "Programvareversjon", // 84 "Frekvens skrifttype", // 85 *** - "IKKE MULIG", // 86 + "Auto", // 86 "Ingen AF", // 87 "Ingen EON", // 88 "Ingen RT+", // 89 @@ -3692,7 +3692,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NINGUNA", // 83 "Versión del software", // 84 "Fundición de frecuencia", // 85 *** - "NO ES POSIBLE", // 86 + "Auto", // 86 "No AF disponible", // 87 "No EON disponible", // 88 "No RT+ disponible", // 89 @@ -3917,7 +3917,7 @@ static const char* const myLanguage[18][223] PROGMEM = { "NENHUM", // 83 "Versão do software", // 84 "Fonte de frequência", // 85 *** - "NÃO POSSÍVEL", // 86 + "Auto", // 86 "AF não disponível", // 87 "EON não disponível", // 88 "RT+ não disponível", // 89