diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 67fc0a1..82dabe6 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -76,7 +76,6 @@ bool memorystore; bool menu; bool menuopen; bool nobattery; -bool power = true; bool rdsflagreset; bool rdsreset; bool RDSSPYTCP; @@ -172,6 +171,7 @@ byte StereoLevel; byte subnetclient; byte TEF; byte theme; +byte tot; byte tunemode; byte unit; char buff[16]; @@ -333,6 +333,7 @@ unsigned long rtplusticker; unsigned long rtplustickerhold; unsigned long rtticker; unsigned long rttickerhold; +unsigned long tottimer; unsigned long tuningtimer; unsigned long udptimer; @@ -427,6 +428,7 @@ void setup() { BWsetAM = EEPROM.readByte(EE_BYTE_BWSET_AM); nowToggleSWMIBand = EEPROM.readByte(EE_BYTE_BANDAUTOSW); radio.rds.fastps = EEPROM.readByte(EE_BYTE_FASTPS); + tot = EEPROM.readByte(EE_BYTE_TOT); LWLowEdgeSet = FREQ_LW_LOW_EDGE_MIN; LWHighEdgeSet = FREQ_LW_HIGH_EDGE_MAX; @@ -698,20 +700,40 @@ void setup() { ScreensaverTimerInit(); ScreensaverTimerSet(screensaverOptions[screensaverset]); } + tottimer = millis(); } void loop() { + if (tot != 0) { + unsigned long totprobe = tot * 60000; + if (millis() >= tottimer + totprobe) deepSleep(); + } if (digitalRead(BANDBUTTON) == LOW ) BANDBUTTONPress(); - if (power || poweroptions == LCD_OFF) { - if (millis() >= tuningtimer + 200) { - rdsflagreset = false; - Communication(); + if (millis() >= tuningtimer + 200) { + rdsflagreset = false; + Communication(); + } + + if (!menu && !afscreen) { + if (af && dropout && millis() >= aftimer + 1000) { + aftimer = millis(); + frequency = radio.TestAF(); + if (freqold != frequency) { + ShowFreq(0); + if (radio.afmethodB) { + afmethodBold = true; + radio.clearRDS(fullsearchrds); + } + if (XDRGTKUSB || XDRGTKTCP) DataPrint("T" + String(frequency * 10)); + store = true; + } } - if (!menu && !afscreen) { - if (af && dropout && millis() >= aftimer + 1000) { + if (band == BAND_FM && af && radio.rds.correctPI != 0) { + if ((aftest && millis() >= aftimer + 3000) || ((USN > 250 || WAM > 250) && millis() >= aftimer + 1000)) { aftimer = millis(); + aftest = false; frequency = radio.TestAF(); if (freqold != frequency) { ShowFreq(0); @@ -724,10 +746,9 @@ void loop() { } } - if (band == BAND_FM && af && radio.rds.correctPI != 0) { - if ((aftest && millis() >= aftimer + 3000) || ((USN > 250 || WAM > 250) && millis() >= aftimer + 1000)) { - aftimer = millis(); - aftest = false; + if (band == BAND_FM && millis() >= aftimer + 10000) { + aftimer = millis(); + if (USN > 150 || WAM > 150) { frequency = radio.TestAF(); if (freqold != frequency) { ShowFreq(0); @@ -739,101 +760,72 @@ void loop() { store = true; } } - - if (band == BAND_FM && millis() >= aftimer + 10000) { - aftimer = millis(); - if (USN > 150 || WAM > 150) { - frequency = radio.TestAF(); - if (freqold != frequency) { - ShowFreq(0); - if (radio.afmethodB) { - afmethodBold = true; - radio.clearRDS(fullsearchrds); - } - if (XDRGTKUSB || XDRGTKTCP) DataPrint("T" + String(frequency * 10)); - store = true; - } - } - } } } + } - if (seek) Seek(direction); + if (seek) Seek(direction); - if ((SStatus / 10 > LowLevelSet) && !LowLevelInit && !menu && band < BAND_GAP) { - if (!screenmute && !advancedRDS && !afscreen) { - if (showmodulation) { - tftPrint(-1, "10", 27, 144, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "30", 57, 144, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "50", 87, 144, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "70", 117, 144, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "100", 164, 144, ActiveColor, ActiveColorSmooth, 16); - tftPrint(0, "M", 7, 128, ActiveColor, ActiveColorSmooth, 16); - for (byte segments = 0; segments < 94; segments++) { - if (segments > 54) { - if (((segments - 53) % 10) == 0) tft.fillRect(16 + (2 * segments), 141, 2, 2, BarSignificantColor); - } else { - if (((segments + 1) % 6) == 0) tft.fillRect(16 + (2 * segments), 141, 2, 2, BarInsignificantColor); - } - } - } - if (region == REGION_EU) tftPrint(-1, "PI:", 212, 193, ActiveColor, ActiveColorSmooth, 16); - if (region == REGION_US) tftPrint(-1, "ID:", 212, 193, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "PS:", 3, 193, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "RT:", 3, 221, ActiveColor, ActiveColorSmooth, 16); - tftPrint(-1, "PTY:", 3, 163, ActiveColor, ActiveColorSmooth, 16); - if (!showmodulation) tft.drawLine(20, 143, 204, 143, GreyoutColor); else tft.drawLine(20, 143, 204, 143, TFT_DARKGREY); - } - LowLevelInit = true; - } - - if ((SStatus / 10 <= LowLevelSet) && band < BAND_GAP) { - if (LowLevelInit && !menu) { - if (!screenmute && !afscreen && !advancedRDS) { - for (byte segments = 0; segments < 94; segments++) { - if (segments > 54) { - if (((segments - 53) % 10) == 0) tft.fillRect(16 + (2 * segments), 141, 2, 2, GreyoutColor); - } else { - if (((segments + 1) % 6) == 0) tft.fillRect(16 + (2 * segments), 141, 2, 2, GreyoutColor); - } - } - if (showmodulation) { - tftPrint(-1, "10", 27, 144, GreyoutColor, BackgroundColor, 16); - tftPrint(-1, "30", 57, 144, GreyoutColor, BackgroundColor, 16); - tftPrint(-1, "50", 87, 144, GreyoutColor, BackgroundColor, 16); - tftPrint(-1, "70", 117, 144, GreyoutColor, BackgroundColor, 16); - tftPrint(-1, "100", 164, 144, GreyoutColor, BackgroundColor, 16); - tftPrint(0, "M", 7, 128, GreyoutColor, BackgroundColor, 16); - tft.fillRect(16, 133, 188, 6, GreyoutColor); - } - if (region == REGION_EU) tftPrint(-1, "PI:", 212, 193, GreyoutColor, BackgroundColor, 16); - if (region == REGION_US) tftPrint(-1, "ID:", 212, 193, GreyoutColor, BackgroundColor, 16); - tftPrint(-1, "PS:", 3, 193, GreyoutColor, BackgroundColor, 16); - tftPrint(-1, "RT:", 3, 221, GreyoutColor, BackgroundColor, 16); - tftPrint(-1, "PTY:", 3, 163, GreyoutColor, BackgroundColor, 16); - tft.drawLine(20, 143, 204, 143, GreyoutColor); - tft.drawBitmap(122, 5, RDSLogo, 35, 22, GreyoutColor); - } - LowLevelInit = false; - } - - if (screenmute || radio.rds.correctPI != 0) readRds(); - if (millis() >= lowsignaltimer + 300) { - lowsignaltimer = millis(); - if (af || (!screenmute || (screenmute && (XDRGTKTCP || XDRGTKUSB)))) { - if (band < BAND_GAP) { - radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus, CN); + if ((SStatus / 10 > LowLevelSet) && !LowLevelInit && !menu && band < BAND_GAP) { + if (!screenmute && !advancedRDS && !afscreen) { + if (showmodulation) { + tftPrint(-1, "10", 27, 144, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "30", 57, 144, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "50", 87, 144, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "70", 117, 144, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "100", 164, 144, ActiveColor, ActiveColorSmooth, 16); + tftPrint(0, "M", 7, 128, ActiveColor, ActiveColorSmooth, 16); + for (byte segments = 0; segments < 94; segments++) { + if (segments > 54) { + if (((segments - 53) % 10) == 0) tft.fillRect(16 + (2 * segments), 141, 2, 2, BarSignificantColor); } else { - radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus, CN); + if (((segments + 1) % 6) == 0) tft.fillRect(16 + (2 * segments), 141, 2, 2, BarInsignificantColor); } } - if (!menu) { - doSquelch(); - GetData(); - } } + if (region == REGION_EU) tftPrint(-1, "PI:", 212, 193, ActiveColor, ActiveColorSmooth, 16); + if (region == REGION_US) tftPrint(-1, "ID:", 212, 193, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "PS:", 3, 193, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "RT:", 3, 221, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, "PTY:", 3, 163, ActiveColor, ActiveColorSmooth, 16); + if (!showmodulation) tft.drawLine(20, 143, 204, 143, GreyoutColor); else tft.drawLine(20, 143, 204, 143, TFT_DARKGREY); + } + LowLevelInit = true; + } - } else { + if ((SStatus / 10 <= LowLevelSet) && band < BAND_GAP) { + if (LowLevelInit && !menu) { + if (!screenmute && !afscreen && !advancedRDS) { + for (byte segments = 0; segments < 94; segments++) { + if (segments > 54) { + if (((segments - 53) % 10) == 0) tft.fillRect(16 + (2 * segments), 141, 2, 2, GreyoutColor); + } else { + if (((segments + 1) % 6) == 0) tft.fillRect(16 + (2 * segments), 141, 2, 2, GreyoutColor); + } + } + if (showmodulation) { + tftPrint(-1, "10", 27, 144, GreyoutColor, BackgroundColor, 16); + tftPrint(-1, "30", 57, 144, GreyoutColor, BackgroundColor, 16); + tftPrint(-1, "50", 87, 144, GreyoutColor, BackgroundColor, 16); + tftPrint(-1, "70", 117, 144, GreyoutColor, BackgroundColor, 16); + tftPrint(-1, "100", 164, 144, GreyoutColor, BackgroundColor, 16); + tftPrint(0, "M", 7, 128, GreyoutColor, BackgroundColor, 16); + tft.fillRect(16, 133, 188, 6, GreyoutColor); + } + if (region == REGION_EU) tftPrint(-1, "PI:", 212, 193, GreyoutColor, BackgroundColor, 16); + if (region == REGION_US) tftPrint(-1, "ID:", 212, 193, GreyoutColor, BackgroundColor, 16); + tftPrint(-1, "PS:", 3, 193, GreyoutColor, BackgroundColor, 16); + tftPrint(-1, "RT:", 3, 221, GreyoutColor, BackgroundColor, 16); + tftPrint(-1, "PTY:", 3, 163, GreyoutColor, BackgroundColor, 16); + tft.drawLine(20, 143, 204, 143, GreyoutColor); + tft.drawBitmap(122, 5, RDSLogo, 35, 22, GreyoutColor); + } + LowLevelInit = false; + } + + if (screenmute || radio.rds.correctPI != 0) readRds(); + if (millis() >= lowsignaltimer + 300) { + lowsignaltimer = millis(); if (af || (!screenmute || (screenmute && (XDRGTKTCP || XDRGTKUSB)))) { if (band < BAND_GAP) { radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus, CN); @@ -843,97 +835,106 @@ void loop() { } if (!menu) { doSquelch(); - if (millis() >= tuningtimer + 200) readRds(); GetData(); - if (!screenmute && !afscreen && !advancedRDS) ShowModLevel(); } } - if (menu && menuopen && menupage == FMSETTINGS && menuoption == ITEM4) { - if (band < BAND_GAP) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus, CN); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus, CN); - if (millis() >= lowsignaltimer + 500 || change2) { - lowsignaltimer = millis(); - change2 = false; - if (SStatus > SStatusold || SStatus < SStatusold) { - if (SStatusold / 10 != SStatus / 10) tftReplace(1, String(SStatusold / 10), String(SStatus / 10), 140, 149, PrimaryColor, PrimaryColorSmooth, 48); - tftReplace(1, "." + String(abs(SStatusold % 10)), "." + String(abs(SStatus % 10)), 160, 149, PrimaryColor, PrimaryColorSmooth, 28); - SStatusold = SStatus; - } - } - } - - if (rotary == -1) { - if (screensavertriggered) { - if (!touchrotating) { - rotary = 0; - WakeToSleep(REVERSE); - } + } else { + if (af || (!screenmute || (screenmute && (XDRGTKTCP || XDRGTKUSB)))) { + if (band < BAND_GAP) { + radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus, CN); } else { - KeyUp(); - if (screensaverset && !menu && !screensavertriggered) ScreensaverTimerRestart(); + radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus, CN); } } - if (rotary == 1) { - if (screensavertriggered) { - if (!touchrotating) { - rotary = 0; - WakeToSleep(REVERSE); - } - } else { - KeyDown(); - if (screensaverset && !menu && !screensavertriggered) ScreensaverTimerRestart(); - } + if (!menu) { + doSquelch(); + if (millis() >= tuningtimer + 200) readRds(); + GetData(); + if (!screenmute && !afscreen && !advancedRDS) ShowModLevel(); } + } - if (digitalRead(ROTARY_BUTTON) == LOW) if (!afscreen) ButtonPress(); - if (digitalRead(MODEBUTTON) == LOW && !screenmute) ModeButtonPress(); - if (digitalRead(BWBUTTON) == LOW && !screenmute) if (!afscreen) BWButtonPress(); - - if (store) change++; - - if (change > 200 && store) { - detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A)); - detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_B)); - EEPROM.writeUInt(EE_UINT16_FREQUENCY_FM, frequency); - EEPROM.writeUInt(EE_UINT16_FREQUENCY_OIRT, frequency_OIRT); - EEPROM.writeUInt(EE_UINT16_FREQUENCY_AM, frequency_AM); - EEPROM.writeByte(EE_BYTE_BAND, band); - EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, frequency_LW); - EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, frequency_MW); - EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, frequency_SW); - EEPROM.commit(); - store = false; - attachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A), read_encoder, CHANGE); - attachInterrupt(digitalPinToInterrupt(ROTARY_PIN_B), read_encoder, CHANGE); - } - - if (screensaverset) { - if (screensaver_IRQ) - { - screensaver_IRQ = OFF; - if (!screensavertriggered && !advancedRDS && !menu) { - WakeToSleep(true); - } + if (menu && menuopen && menupage == FMSETTINGS && menuoption == ITEM4) { + if (band < BAND_GAP) radio.getStatus(SStatus, USN, WAM, OStatus, BW, MStatus, CN); else radio.getStatusAM(SStatus, USN, WAM, OStatus, BW, MStatus, CN); + if (millis() >= lowsignaltimer + 500 || change2) { + lowsignaltimer = millis(); + change2 = false; + if (SStatus > SStatusold || SStatus < SStatusold) { + if (SStatusold / 10 != SStatus / 10) tftReplace(1, String(SStatusold / 10), String(SStatus / 10), 140, 149, PrimaryColor, PrimaryColorSmooth, 48); + tftReplace(1, "." + String(abs(SStatusold % 10)), "." + String(abs(SStatus % 10)), 160, 149, PrimaryColor, PrimaryColorSmooth, 28); + SStatusold = SStatus; } } } - if (!power) { - if (rotary == -1) { + if (rotary == -1) { + tottimer = millis(); + if (screensavertriggered) { if (!touchrotating) { rotary = 0; WakeToSleep(REVERSE); - } else { - KeyUp(); } + } else { + KeyUp(); + if (screensaverset && !menu && !screensavertriggered) ScreensaverTimerRestart(); } - - if (rotary == 1) { + } + if (rotary == 1) { + tottimer = millis(); + if (screensavertriggered) { if (!touchrotating) { rotary = 0; WakeToSleep(REVERSE); - } else { - KeyDown(); + } + } else { + KeyDown(); + if (screensaverset && !menu && !screensavertriggered) ScreensaverTimerRestart(); + } + } + + if (digitalRead(ROTARY_BUTTON) == LOW) { + tottimer = millis(); + if (screensavertriggered && !touchrotating) WakeToSleep(REVERSE); + if (!afscreen) ButtonPress(); + } + + if (digitalRead(MODEBUTTON) == LOW) { + tottimer = millis(); + if (screensavertriggered && !touchrotating) WakeToSleep(REVERSE); + if (!screenmute) ModeButtonPress(); + } + + if (digitalRead(BWBUTTON) == LOW) { + tottimer = millis(); + if (screensavertriggered && !touchrotating) WakeToSleep(REVERSE); + if (!screenmute && !afscreen) BWButtonPress(); + } + + if (store) change++; + + if (change > 200 && store) { + detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A)); + detachInterrupt(digitalPinToInterrupt(ROTARY_PIN_B)); + EEPROM.writeUInt(EE_UINT16_FREQUENCY_FM, frequency); + EEPROM.writeUInt(EE_UINT16_FREQUENCY_OIRT, frequency_OIRT); + EEPROM.writeUInt(EE_UINT16_FREQUENCY_AM, frequency_AM); + EEPROM.writeByte(EE_BYTE_BAND, band); + EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, frequency_LW); + EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, frequency_MW); + EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, frequency_SW); + EEPROM.commit(); + store = false; + attachInterrupt(digitalPinToInterrupt(ROTARY_PIN_A), read_encoder, CHANGE); + attachInterrupt(digitalPinToInterrupt(ROTARY_PIN_B), read_encoder, CHANGE); + } + + if (screensaverset) { + if (screensaver_IRQ) + { + screensaver_IRQ = OFF; + if (!screensavertriggered && !advancedRDS && !menu) { + WakeToSleep(true); } } } @@ -968,15 +969,7 @@ void WakeToSleep(bool yes) { if (yes) { screensavertriggered = true; switch (poweroptions) { - case DEEP_SLEEP: - power = false; - analogWrite(SMETERPIN, 0); - MuteScreen(1); - StoreFrequency(); - radio.power(1); - break; case LCD_OFF: - power = false; analogWrite(SMETERPIN, 0); MuteScreen(1); StoreFrequency(); @@ -996,11 +989,7 @@ void WakeToSleep(bool yes) { } } else { switch (poweroptions) { - case DEEP_SLEEP: - ESP.restart(); - break; case LCD_OFF: - power = true; pinMode (STANDBYLED, OUTPUT); digitalWrite(STANDBYLED, LOW); analogWrite(CONTRASTPIN, ContrastSet * 2 + 27); @@ -1227,53 +1216,50 @@ void ToggleBand(byte nowBand) { } void BANDBUTTONPress() { - if (!power) { - if (screensavertriggered) WakeToSleep(REVERSE); + if (screensavertriggered) WakeToSleep(REVERSE); + if (afscreen) { + BuildAdvancedRDS(); } else { - if (afscreen) { - BuildAdvancedRDS(); - } else { - unsigned long counterold = millis(); - unsigned long counter = millis(); - if (!menu && power) { - while (digitalRead(BANDBUTTON) == LOW && counter - counterold <= 1000) counter = millis(); + unsigned long counterold = millis(); + unsigned long counter = millis(); + if (!menu) { + while (digitalRead(BANDBUTTON) == LOW && counter - counterold <= 1000) counter = millis(); - if (counter - counterold < 1000) { - if (screensavertriggered) { - WakeToSleep(REVERSE); - return; - } + if (counter - counterold < 1000) { + if (screensavertriggered) { + WakeToSleep(REVERSE); + return; + } - if (advancedRDS) { - BuildDisplay(); - ScreensaverTimerReopen(); - } else { - if (tunemode != TUNE_MEM) { - ToggleBand(band); - StoreFrequency(); - SelectBand(); - if (XDRGTKUSB || XDRGTKTCP) { - if (band == BAND_FM) DataPrint("M0\nT" + String(frequency * 10)); else if (band == BAND_OIRT) DataPrint("M0\nT" + String(frequency_OIRT * 10)); else DataPrint("M1\nT" + String(frequency_AM)); - } - } - ScreensaverTimerRestart(); - } + if (advancedRDS) { + BuildDisplay(); + ScreensaverTimerReopen(); } else { - if (screensavertriggered) { - WakeToSleep(REVERSE); - return; + if (tunemode != TUNE_MEM) { + ToggleBand(band); + StoreFrequency(); + SelectBand(); + if (XDRGTKUSB || XDRGTKTCP) { + if (band == BAND_FM) DataPrint("M0\nT" + String(frequency * 10)); else if (band == BAND_OIRT) DataPrint("M0\nT" + String(frequency_OIRT * 10)); else DataPrint("M1\nT" + String(frequency_AM)); + } } + ScreensaverTimerRestart(); + } + } else { + if (screensavertriggered) { + WakeToSleep(REVERSE); + return; + } - if (band < BAND_GAP) { - if (advancedRDS && !seek) BuildAFScreen(); else BuildAdvancedRDS(); - } else { - WakeToSleep(true); - } + if (band < BAND_GAP) { + if (advancedRDS && !seek) BuildAFScreen(); else BuildAdvancedRDS(); + } else { + WakeToSleep(true); } } - while (digitalRead(BANDBUTTON) == LOW) delay(50); - delay(100); } + while (digitalRead(BANDBUTTON) == LOW) delay(50); + delay(100); } } @@ -1861,6 +1847,7 @@ void ModeButtonPress() { EEPROM.writeByte(EE_BYTE_STATIONLISTID, stationlistid); EEPROM.writeByte(EE_BYTE_FM_DEEMPHASIS, fmdeemphasis); EEPROM.writeByte(EE_BYTE_FASTPS, radio.rds.fastps); + EEPROM.writeByte(EE_BYTE_TOT, tot); EEPROM.commit(); Serial.end(); if (wifi) remoteip = IPAddress (WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], subnetclient); @@ -3339,6 +3326,7 @@ void DefaultSettings(byte userhardwaremodel) { EEPROM.writeByte(EE_BYTE_BWSET_AM, 2); EEPROM.writeByte(EE_BYTE_BANDAUTOSW, 0); EEPROM.writeByte(EE_BYTE_FASTPS, 1); + EEPROM.writeByte(EE_BYTE_TOT, 60); EEPROM.commit(); } @@ -3410,3 +3398,12 @@ void tftPrint(int8_t offset, const String & text, int16_t x, int16_t y, int colo tft.drawString(text, x, y, 1); } + +void deepSleep() { + analogWrite(SMETERPIN, 0); + MuteScreen(1); + StoreFrequency(); + radio.power(1); + esp_sleep_enable_ext0_wakeup(GPIO_NUM_34, LOW); + esp_deep_sleep_start(); +} diff --git a/src/constants.h b/src/constants.h index d0612df..b7b590d 100644 --- a/src/constants.h +++ b/src/constants.h @@ -106,7 +106,7 @@ // EEPROM index defines #define EE_PRESETS_CNT 99 -#define EE_CHECKBYTE_VALUE 35 // 0 ~ 255,add new entry, change for new value +#define EE_CHECKBYTE_VALUE 36 // 0 ~ 255,add new entry, change for new value #define EE_TOTAL_CNT 618 #define EE_UINT16_FREQUENCY_FM 0 @@ -181,8 +181,9 @@ #define EE_UINT16_FREQUENCY_OIRT 102 #define EE_STRING_XDRGTK_KEY 106 // 11 byte #define EE_BYTE_FASTPS 118 -#define EE_PRESETS_BAND_START 119 -#define EE_PRESETS_START 221 +#define EE_BYTE_TOT 119 +#define EE_PRESETS_BAND_START 120 +#define EE_PRESETS_START 220 #define EE_PRESETS_FREQUENCY 8750 // End of EEPROM index defines @@ -212,7 +213,7 @@ enum RADIO_TUNE_MODE { }; enum RADIO_POWER_MODE { - DEEP_SLEEP = 0, LCD_OFF, LCD_BRIGHTNESS_1_PERCENT, LCD_BRIGHTNESS_A_QUARTER, LCD_BRIGHTNESS_HALF, RADIO_POWER_MODE_CNT + LCD_OFF, LCD_BRIGHTNESS_1_PERCENT, LCD_BRIGHTNESS_A_QUARTER, LCD_BRIGHTNESS_HALF, RADIO_POWER_MODE_CNT }; enum RADIO_HARDWARE_MODEL { diff --git a/src/gui.cpp b/src/gui.cpp index 2f3eb0e..db75b4f 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -6,7 +6,7 @@ #include byte menuitem; -byte items[8] = {8, 2, 6, 9, 9, 10, 8, 5}; +byte items[8] = {8, 2, 6, 10, 9, 10, 8, 5}; void doTheme() { // Use this to put your own colors in: http://www.barth-dev.de/online/rgb565-color-picker/ switch (CurrentTheme) { @@ -422,6 +422,7 @@ void BuildMenu() { tftPrint(-1, myLanguage[language][74], 8, ITEM7 + 6, ActiveColor, ActiveColorSmooth, 16); tftPrint(-1, myLanguage[language][173], 8, ITEM8 + 6, ActiveColor, ActiveColorSmooth, 16); tftPrint(-1, myLanguage[language][98], 8, ITEM9 + 6, ActiveColor, ActiveColorSmooth, 16); + tftPrint(-1, myLanguage[language][75], 8, ITEM10 + 6, ActiveColor, ActiveColorSmooth, 16); tftPrint(1, myLanguage[language][0], 310, ITEM1 + 6, PrimaryColor, PrimaryColorSmooth, 16); tftPrint(1, "%", 310, ITEM2 + 6, ActiveColor, ActiveColorSmooth, 16); @@ -431,9 +432,9 @@ void BuildMenu() { tftPrint(1, CurrentThemeString, 310, ITEM5 + 6, PrimaryColor, PrimaryColorSmooth, 16); if (screensaverset) tftPrint(1, myLanguage[language][92], 310, ITEM6 + 6, ActiveColor, ActiveColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); if (screensaverset) tftPrint(1, String(screensaverOptions[screensaverset], DEC), 270, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM6 + 6, PrimaryColor, PrimaryColorSmooth, 16); + if (tot != 0) tftPrint(1, myLanguage[language][205], 310, ITEM10 + 6, PrimaryColor, PrimaryColorSmooth, 16); else tftPrint(1, myLanguage[language][30], 310, ITEM10 + 6, PrimaryColor, PrimaryColorSmooth, 16); switch (poweroptions) { - case DEEP_SLEEP: tftPrint(1, myLanguage[language][75], 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; case LCD_OFF: tftPrint(1, myLanguage[language][76], 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; case LCD_BRIGHTNESS_1_PERCENT: tftPrint(1, myLanguage[language][94], 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; case LCD_BRIGHTNESS_A_QUARTER: tftPrint(1, myLanguage[language][95], 310, ITEM7 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; @@ -447,6 +448,7 @@ void BuildMenu() { } tftPrint(1, unitString[unit], 310, ITEM9 + 6, PrimaryColor, PrimaryColorSmooth, 16); + if (tot != 0) tftPrint(1, String(tot), 270, ITEM10 + 6, PrimaryColor, PrimaryColorSmooth, 16); break; case RDSSETTINGS: @@ -981,7 +983,6 @@ void MenuUp() { case ITEM7: switch (poweroptionsold) { - case DEEP_SLEEP: tftPrint(0, myLanguage[language][75], 155, 118, BackgroundColor, BackgroundColor, 28); break; case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, BackgroundColor, BackgroundColor, 28); break; case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, BackgroundColor, BackgroundColor, 28); break; case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, BackgroundColor, BackgroundColor, 28); break; @@ -992,7 +993,6 @@ void MenuUp() { if (poweroptions > RADIO_POWER_MODE_CNT - 1) poweroptions = 0; switch (poweroptions) { - case DEEP_SLEEP: tftPrint(0, myLanguage[language][75], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; @@ -1025,6 +1025,18 @@ void MenuUp() { if (unit > 2) unit = 0; tftPrint(0, String(unitString[unit]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + + case ITEM10: + if (tot != 0) tftPrint(0, String(tot) + " " + myLanguage[language][205], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); + switch (tot) { + case 0: tot = 15; break; + case 15: tot = 30; break; + case 30: tot = 60; break; + case 60: tot = 90; break; + default: tot = 0; break; + } + if (tot != 0) tftPrint(0, String(tot) + " " + myLanguage[language][205], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + break; } break; @@ -1499,7 +1511,6 @@ void MenuDown() { case ITEM7: switch (poweroptionsold) { - case DEEP_SLEEP: tftPrint(0, myLanguage[language][75], 155, 118, BackgroundColor, BackgroundColor, 28); break; case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, BackgroundColor, BackgroundColor, 28); break; case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, BackgroundColor, BackgroundColor, 28); break; case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, BackgroundColor, BackgroundColor, 28); break; @@ -1510,7 +1521,6 @@ void MenuDown() { if (poweroptions > RADIO_POWER_MODE_CNT - 1) poweroptions = RADIO_POWER_MODE_CNT - 1; switch (poweroptions) { - case DEEP_SLEEP: tftPrint(0, myLanguage[language][75], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; @@ -1543,6 +1553,18 @@ void MenuDown() { if (unit > 2) unit = 2; tftPrint(0, String(unitString[unit]), 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + + case ITEM10: + if (tot != 0) tftPrint(0, String(tot) + " " + myLanguage[language][205], 155, 118, BackgroundColor, BackgroundColor, 28); else tftPrint(0, myLanguage[language][30], 155, 118, BackgroundColor, BackgroundColor, 28); + switch (tot) { + case 15: tot = 0; break; + case 30: tot = 15; break; + case 60: tot = 30; break; + case 90: tot = 60; break; + default: tot = 90; break; + } + if (tot != 0) tftPrint(0, String(tot) + " " + myLanguage[language][205], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + break; } break; @@ -2040,7 +2062,6 @@ void DoMenu() { case ITEM7: tftPrint(0, myLanguage[language][74], 155, 78, ActiveColor, ActiveColorSmooth, 28); switch (poweroptions) { - case DEEP_SLEEP: tftPrint(0, myLanguage[language][75], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case LCD_OFF: tftPrint(0, myLanguage[language][76], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case LCD_BRIGHTNESS_1_PERCENT: tftPrint(0, myLanguage[language][94], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case LCD_BRIGHTNESS_A_QUARTER: tftPrint(0, myLanguage[language][95], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; @@ -2063,6 +2084,11 @@ void DoMenu() { tftPrint(0, myLanguage[language][98], 155, 78, ActiveColor, ActiveColorSmooth, 28); tftPrint(0, unitString[unit], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; + + case ITEM10: + tftPrint(0, myLanguage[language][75], 155, 78, ActiveColor, ActiveColorSmooth, 28); + if (tot != 0) tftPrint(0, String(tot) + " " + myLanguage[language][205], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); else tftPrint(0, myLanguage[language][30], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); + break; } break; @@ -2076,7 +2102,6 @@ void DoMenu() { case 2: tftPrint(0, myLanguage[language][201], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; case 3: tftPrint(0, myLanguage[language][202], 155, 118, PrimaryColor, PrimaryColorSmooth, 28); break; } - break; case ITEM2: diff --git a/src/gui.h b/src/gui.h index fc1500d..5eba5cc 100644 --- a/src/gui.h +++ b/src/gui.h @@ -52,7 +52,6 @@ extern bool rdsreset; extern bool RDSstatus; extern bool RDSstatusold; extern bool rdsstereoold; -extern byte showrdserrors; extern bool showsquelch; extern bool softmuteam; extern bool softmutefm; @@ -99,6 +98,7 @@ extern byte screensaverOptions[5]; extern byte screensaverset; extern byte showmodulation; extern byte showSWMIBand; +extern byte showrdserrors; extern byte stationlistid; extern int8_t CNold; extern byte StereoLevel; @@ -106,6 +106,7 @@ extern byte StereoLevel; extern byte submenu; extern byte subnetclient; extern byte theme; +extern byte tot; extern byte touchrotating; extern byte unit; extern char programTypePrevious[18]; diff --git a/src/language.h b/src/language.h index 60bd78a..f9aa929 100644 --- a/src/language.h +++ b/src/language.h @@ -1,6 +1,6 @@ // [number of languages][number of texts] -static const char* const myLanguage[17][205] = { +static const char* const myLanguage[17][206] = { { "English", // English "Rotary direction changed", // 1 "Please release button", // 2 @@ -75,8 +75,8 @@ static const char* const myLanguage[17][205] = { "Main code:", // 71 "Contributors:", // 72 "Unknown", // 73 - "Power options", // 74 - "Deep sleep", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Screen off", // 76 "Theme", // 77 "Default", // 78 @@ -205,7 +205,8 @@ static const char* const myLanguage[17][205] = { "Large", // 201 "All", // 202 "Fast PS", // 203 - "Detected applications" // 204 + "Detected applications", // 204 + "Min." // 205 }, { "Nederlands", // Dutch @@ -282,8 +283,8 @@ static const char* const myLanguage[17][205] = { "Basis code:", // 71 "Bijgedragen:", // 72 "Onbekend", // 73 - "Bespaar opties", // 74 - "Volledig uit", // 75 + "Screensaver opties", // 74 + "Auto uitschakelen", // 75 "Scherm uit", // 76 "Thema", // 77 "Default", // 78 @@ -412,7 +413,8 @@ static const char* const myLanguage[17][205] = { "Middel", // 201 "Alles", // 202 "Snelle PS", // 203 - "Gedetecteerde applicaties" // 204 + "Gedetecteerde applicaties", // 204 + "Min." // 205 }, { "Polski", // Polish @@ -489,8 +491,8 @@ static const char* const myLanguage[17][205] = { "Glowny kod:", // 71 "Wspoltworcy:", // 72 "Nieznany", // 73 - "Opcje zasilania", // 74 - "Glebokie uspienie", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Wylacz ekran", // 76 "Motyw", // 77 "Domyslny", // 78 @@ -619,7 +621,8 @@ static const char* const myLanguage[17][205] = { "Duze", // 201 "Wszystkie", // 202 "Fast PS", // 203 - "Detected applications" // 204 + "Detected applications", // 204 + "Min." // 205 }, { "Hrvatski", // Croatian @@ -696,8 +699,8 @@ static const char* const myLanguage[17][205] = { "Glavni izvorni kod:", // 71 "Suradnici:", // 72 "Nepoznato", // 73 - "Power options", // 74 - "Deep sleep", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Zaslon isključiti", // 76 "Tema dizajna", // 77 "Zadano", // 78 @@ -826,7 +829,8 @@ static const char* const myLanguage[17][205] = { "Large", // 201 "All", // 202 "Fast PS", // 203 - "Detected applications" // 204 + "Detected applications", // 204 + "Min." // 205 }, { "Ελληνικά", // Greek @@ -903,8 +907,8 @@ static const char* const myLanguage[17][205] = { "Κύριος κώδικας:", // 71 "Συνεργάτες:", // 72 "Άγνωστο", // 73 - "Επιλογές ενέργειας", // 74 - "Βαθιά αναμονή", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Οθόνη σβηστή", // 76 "Θέμα", // 77 "Προεπιλογή", // 78 @@ -1033,7 +1037,8 @@ static const char* const myLanguage[17][205] = { "Μεγάλο", // 201 "Όλα", // 202 "Γρήγορο PS", // 203 - "Εντοπισμένες εφαρμογές" // 204 + "Εντοπισμένες εφαρμογές", // 204 + "Min." // 205 }, { "Romana", // Romanian @@ -1110,8 +1115,8 @@ static const char* const myLanguage[17][205] = { "Main code:", // 71 "Contributors:", // 72 "Unknown", // 73 - "Power options", // 74 - "Deep sleep", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Screen off", // 76 "Theme", // 77 "Default", // 78 @@ -1240,7 +1245,8 @@ static const char* const myLanguage[17][205] = { "Large", // 201 "All", // 202 "Fast PS", // 203 - "Detected applications" // 204 + "Detected applications", // 204 + "Min." // 205 }, { "Deutsch", // German @@ -1317,8 +1323,8 @@ static const char* const myLanguage[17][205] = { "Hauptcode:", // 71 "Mitwirkende:", // 72 "Unbekannt", // 73 - "Energieeinstellungen", // 74 - "Komplett aus", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Bildschirm aus", // 76 "Thema", // 77 "Standard", // 78 @@ -1447,7 +1453,8 @@ static const char* const myLanguage[17][205] = { "Groß", // 201 "Alles", // 202 "Schnelles PS", // 203 - "Erkenne Applikationen" // 204 + "Erkenne Applikationen", // 204 + "Min." // 205 }, { "Czech", // Czech @@ -1524,8 +1531,8 @@ static const char* const myLanguage[17][205] = { "Main code:", // 71 "Contributors:", // 72 "Unknown", // 73 - "Power options", // 74 - "Deep sleep", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Screen off", // 76 "Theme", // 77 "Default", // 78 @@ -1654,7 +1661,8 @@ static const char* const myLanguage[17][205] = { "Large", // 201 "All", // 202 "Fast PS", // 203 - "Detected applications" // 204 + "Detected applications", // 204 + "Min." // 205 }, { "Slovak", // Slovak @@ -1731,8 +1739,8 @@ static const char* const myLanguage[17][205] = { "Main code:", // 71 "Contributors:", // 72 "Unknown", // 73 - "Power options", // 74 - "Deep sleep", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Screen off", // 76 "Theme", // 77 "Default", // 78 @@ -1861,7 +1869,8 @@ static const char* const myLanguage[17][205] = { "Large", // 201 "All", // 202 "Fast PS", // 203 - "Detected applications" // 204 + "Detected applications", // 204 + "Min." // 205 }, { "Français", // French @@ -1938,8 +1947,8 @@ static const char* const myLanguage[17][205] = { "Code principal :", // 71 "Contributeurs :", // 72 "Inconnu", // 73 - "Options d'énergie", // 74 - "Veille profonde", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Affichage éteint", // 76 "Thème", // 77 "Défaut", // 78 @@ -2068,7 +2077,8 @@ static const char* const myLanguage[17][205] = { "Grosses", // 201 "Toutes", // 202 "PS rapide", // 203 - "Applications détectées" // 204 + "Applications détectées", // 204 + "Min." // 205 }, { "Български", // Bulgarian @@ -2145,8 +2155,8 @@ static const char* const myLanguage[17][205] = { "Главен код:", // 71 "Сътрудници:", // 72 "Неизвестно", // 73 - "Опции при заспиване", // 74 - "Режим дълбок сън", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Изключен дисплей", // 76 "Тема", // 77 "По подразбиране", // 78 @@ -2275,7 +2285,8 @@ static const char* const myLanguage[17][205] = { "Large", // 201 "All", // 202 "Fast PS", // 203 - "Detected applications" // 204 + "Detected applications", // 204 + "Min." // 205 }, { "Русский", // Russian @@ -2352,8 +2363,8 @@ static const char* const myLanguage[17][205] = { "Основной код:", // 71 "Соавторы:", // 72 "Неизвестно", // 73 - "Параметры питания", // 74 - "Глубокий сон", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Экран выключен", // 76 "Тема", // 77 "По умолчанию", // 78 @@ -2482,7 +2493,8 @@ static const char* const myLanguage[17][205] = { "Много", // 201 "Все", // 202 "Быстрый PS", // 203 - "Обнаруженные приложения" // 204 + "Обнаруженные приложения", // 204 + "Min." // 205 }, { "Українська", // Ukranian @@ -2559,8 +2571,8 @@ static const char* const myLanguage[17][205] = { "Основний код:", // 71 "Учасники:", // 72 "Невідомо", // 73 - "Опції живлення", // 74 - "Глибокий сон", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Екран вимкнено", // 76 "Тема", // 77 "За замовчуванням", // 78 @@ -2689,7 +2701,8 @@ static const char* const myLanguage[17][205] = { "Багато", // 201 "Усе", // 202 "Швидкий PS", // 203 - "Виявлені програми" // 204 + "Виявлені програми", // 204 + "Min." // 205 }, { "Italiano", // Italian @@ -2766,8 +2779,8 @@ static const char* const myLanguage[17][205] = { "Codice principale:", // 71 "Collaboratori: ", // 72 "Sconosciuto", // 73 - "Opzioni risparmio energia", // 74 - "Deep sleep", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Schermo spento", // 76 "Motivo display", // 77 "Predefinito", // 78 @@ -2896,7 +2909,8 @@ static const char* const myLanguage[17][205] = { "Large", // 201 "All", // 202 "Fast PS", // 203 - "Detected applications" // 204 + "Detected applications", // 204 + "Min." // 205 }, { "Simplified Chinese", // Simplified Chinese @@ -2973,8 +2987,8 @@ static const char* const myLanguage[17][205] = { "主程序:", // 71 "贡献者:", // 72 "未知", // 73 - "电源选项", // 74 - "深度睡眠", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "关闭屏幕", // 76 "主题&颜色", // 77 "默认", // 78 @@ -3103,7 +3117,8 @@ static const char* const myLanguage[17][205] = { "大量", // 201 "全部", // 202 "Fast PS", // 203 - "Detected applications" // 204 + "Detected applications", // 204 + "Min." // 205 }, { "Norsk", // Norwegian @@ -3180,8 +3195,8 @@ static const char* const myLanguage[17][205] = { "Hovedkode:", // 71 "Bidragsytere:", // 72 "Ukjent", // 73 - "Strømalternativer", // 74 - "Dyp søvn", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Skjerm av", // 76 "Tema", // 77 "Standard", // 78 @@ -3310,7 +3325,8 @@ static const char* const myLanguage[17][205] = { "Mye", // 201 "Alt", // 202 "Rask PS", // 203 - "Oppdaget applikasjoner" // 204 + "Oppdaget applikasjoner", // 204 + "Min." // 205 }, { "Español", // Spanish @@ -3387,8 +3403,8 @@ static const char* const myLanguage[17][205] = { "Código principal:", // 71 "Colaboradores:", // 72 "Desconocido", // 73 - "Opciones de energía", // 74 - "Suspensión profunda", // 75 + "Screensaver options", // 74 + "Time-out timer", // 75 "Apagar pantalla", // 76 "Tema", // 77 "Predeterminado", // 78 @@ -3517,368 +3533,7 @@ static const char* const myLanguage[17][205] = { "Grande", // 201 "Todo", // 202 "PS rápido", // 203 - "Aplicaciones detectadas" // 204 + "Aplicaciones detectadas", // 204 + "Min." // 205 } -}; - -static const char* const myCountries[] { - "Germany", // 0 - "Greece", // 1 - "Morocco", // 2 - "Moldova", // 3 - "Algeria", // 4 - "Cyprus", // 5 - "Czech R.", // 6 - "Ireland", // 7 - "Estonia", // 8 - "Andorra", // 9 - "San Marino", // 10 - "Poland", // 11 - "Turkey", // 12 - "Israel", // 13 - "Switzerl.", // 14 - "Vatican", // 15 - "Macedonia", // 16 - "Italy", // 17 - "Jordan", // 18 - "Slovakia", // 19 - "Belgium", // 20 - "Finland", // 21 - "Syria", // 22 - "Serbia", // 23 - "Ukraine", // 24 - "Russia", // 25 - "Luxemb.", // 26 - "Tunisia", // 27 - "Palestine", // 28 - "Bulgaria", // 29 - "Madeira", // 30 - "Netherl.", // 31 - "Portugal", // 32 - "Albania", // 33 - "Denmark", // 34 - "Liechtst.", // 35 - "Latvia", // 36 - "Slovenia", // 37 - "Austria", // 38 - "Gibraltar", // 39 - "Iceland", // 40 - "Lebanon", // 41 - "Hungary", // 42 - "Iraq", // 43 - "Monaco", // 44 - "Malta", // 45 - "U.K.", // 46 - "Lithuania", // 47 - "Croatia", // 48 - "Libya", // 49 - "Canaries", // 50 - "Romania", // 51 - "Spain", // 52 - "Sweden", // 53 - "Egypt", // 54 - "France", // 55 - "Norway", // 56 - "Belarus", // 57 - "Bosnia H.", // 58 - "Monteneg.", // 59 - "Armenia", // 60 - "Azerbaijan", // 61 - "Kosovo", // 62 - "Kyrgystan", // 63 - "Turkmenis.", // 64 - "Tajikistan", // 65 - "Uzbekistan", // 66 - "Malawi", // 67 - "Mali", // 68 - "Mauritania", // 69 - "Mauritius", // 70 - "Mongolia", // 71 - "Mozambiq.", // 72 - "Namibia", // 73 - "Niger", // 74 - "Nigeria", // 75 - "Oman", // 76 - "Qatar", // 77 - "Rwanda", // 78 - "Sao Tome", // 79 - "Saudi Ara.", // 80 - "Senegal", // 81 - "Seychel.", // 82 - "S. Leone", // 83 - "Somalia", // 84 - "S. Africa", // 85 - "S. Sudan", // 86 - "Sudan", // 87 - "Swaziland", // 88 - "Tanzania", // 89 - "Togo", // 90 - "Uganda", // 91 - "W. Sahara", // 92 - "Yemen", // 93 - "Zambia", // 94 - "Zimbabwe", // 95 - "Angola", // 96 - "Ascn. Isl.", // 97 - "Bahrein", // 98 - "Benin", // 99 - "Botswana", // 100 - "Burkina F.", // 101 - "Burundi", // 102 - "Cabinda", // 103 - "Cameroon", // 104 - "Cape Ver.", // 105 - "Centr. Af.", // 106 - "Chad", // 107 - "Comoros", // 108 - "D. Congo", // 109 - "Congo", // 110 - "Cote d'l.", // 111 - "Djibouti", // 112 - "E. Guinea", // 113 - "Eritrea", // 114 - "Ethiopia", // 115 - "Gabon", // 116 - "Gambia", // 117 - "Georgia", // 118 - "Ghana", // 119 - "Guinea", // 120 - "Guinea-B.", // 121 - "Kazakh.", // 122 - "Kenya", // 123 - "Kuwait", // 124 - "Lesotho", // 125 - "Liberia", // 126 - "Madagas.", // 127 - "U.Arab.E.", // 128 - "Anguilla", // 129 - "Antigua.", // 130 - "Argentina", // 131 - "Aruba", // 132 - "Barbados", // 133 - "Belize", // 134 - "Bermuda", // 135 - "Bolivia", // 136 - "Brazil", // 137 - "Canada", // 138 - "Cayman I.", // 139 - "Chile", // 140 - "Colombia", // 141 - "Costa R.", // 142 - "Cuba", // 143 - "Dominica", // 144 - "Domini. R", // 145 - "El Salvad.", // 146 - "Equador", // 147 - "Falkland", // 148 - "Greenland", // 149 - "Grenada", // 150 - "Guadeloupe", // 151 - "Guatemala", // 152 - "Guyana", // 153 - "Haiti", // 154 - "Honduras", // 155 - "Jamaica", // 156 - "Martinique", // 157 - "Mexico", // 158 - "Montserrat", // 159 - "Nether. A.", // 160 - "Nicaragua", // 161 - "Panama", // 162 - "Paraguay", // 163 - "Peru", // 164 - "Puerto R.", // 165 - "St. Kitts", // 166 - "St. Lucia", // 167 - "St. P.& M.", // 168 - "St.Vincent", // 169 - "Suriname", // 170 - "T & T", // 171 - "Turks & C.", // 172 - "U.S.A.", // 173 - "Uruguay", // 174 - "Venezuela", // 175 - "Virgin UK", // 176 - "Virgin USA", // 177 - "Afganist.", // 178 - "AU C.T.", // 179 - "AU N.S.W.", // 180 - "AU Vict.", // 181 - "AU Queen", // 182 - "AU S. Au.", // 183 - "AU W. Au.", // 184 - "AU Tasma.", // 185 - "AU N. T.", // 186 - "Bhutan", // 187 - "Brunei D.", // 188 - "Cambodia", // 189 - "China", // 190 - "Fiji", // 191 - "Hong Kong", // 192 - "India", // 193 - "Indonesia", // 194 - "Iran", // 195 - "Japan", // 196 - "Kiribati", // 197 - "N. Korea", // 198 - "S. Korea", // 199 - "Laos", // 200 - "Macao", // 201 - "Malaysia", // 202 - "Maldives", // 203 - "Marshall I", // 204 - "Micronesia", // 205 - "Myanmar", // 206 - "Nauru", // 207 - "Nepal", // 208 - "N.Zealand", // 209 - "Pakistan", // 210 - "Papua N.G", // 211 - "Philippin.", // 212 - "Samoa", // 213 - "Singapore", // 214 - "Solomon I.", // 215 - "Sri Lanka", // 216 - "Taiwan", // 217 - "Thailand", // 218 - "Tonga", // 219 - "Vanuatu", // 220 - "Vietnam", // 221 - "Bahamas", // 222 - "BM or BR", // 223 - "EC or BR", // 224 - "AN or BR", // 225 - "USA/VI/ PR", // 226 - "Bangladesh" // 227 -}; - -static const char* const myLanguages[] = { - "Unknown", // 0 - "Albanian", // 1 - "Breton", // 2 - "Catalan", // 3 - "Croatian", // 4 - "Welsh", // 5 - "Czech", // 6 - "Danish", // 7 - "German", // 8 - "English", // 9 - "Spanish", // 10 - "Esperanto", // 11 - "Estonian", // 12 - "Basque", // 13 - "Faroese", // 14 - "French", // 15 - "Frisian", // 16 - "Irish", // 17 - "Gaelic", // 18 - "Galician", // 19 - "Icelandic", // 20 - "Italian", // 21 - "Lappish", // 22 - "Latin", // 23 - "Latvian", // 24 - "Luxemb.", // 25 - "Lithua.", // 26 - "Hungar.", // 27 - "Maltese", // 28 - "Dutch", // 29 - "Norweg.", // 30 - "Occitan", // 31 - "Polish", // 32 - "Portug.", // 33 - "Romanian", // 34 - "Romansh", // 35 - "Serbian", // 36 - "Slovak", // 37 - "Slovene", // 38 - "Finnish", // 39 - "Swedish", // 40 - "Turkish", // 41 - "Flemish", // 42 - "Walloon", // 43 - "", // 44 - "", // 45 - "", // 46 - "", // 47 - "", // 48 - "", // 49 - "", // 50 - "", // 51 - "", // 52 - "", // 53 - "", // 54 - "", // 55 - "", // 56 - "", // 57 - "", // 58 - "", // 59 - "", // 60 - "", // 61 - "", // 62 - "", // 63 - "Backgr.", // 64 - "", // 65 - "", // 66 - "", // 67 - "", // 68 - "Zulu", // 69 - "Vietnam.", // 70 - "Uzbek", // 71 - "Urdu", // 72 - "Ukrain.", // 73 - "Thai", // 74 - "Telugu", // 75 - "Tatar", // 76 - "Tamil", // 77 - "Tadzhik", // 78 - "Swahili", // 79 - "SrananT.", // 80 - "Somali", // 81 - "Sinhalese", // 82 - "Shona", // 83 - "Serbo-C.", // 84 - "Ruthen.", // 85 - "Russian", // 86 - "Quechua", // 87 - "Pushtu", // 88 - "Punjabi", // 89 - "Persian", // 90 - "Papami.", // 91 - "Oriya", // 92 - "Nepali", // 93 - "Ndebele", // 94 - "Marathi", // 95 - "Moldov.", // 96 - "Malays.", // 97 - "Malagas.", // 98 - "Macedon.", // 99 - "Laotian", // 100 - "Korean", // 101 - "Khmer", // 102 - "Kazakh", // 103 - "Kannada", // 104 - "Japanese", // 105 - "Indones.", // 106 - "Hindi", // 107 - "Hebrew", // 108 - "Hausa", // 109 - "Gurani", // 110 - "Gujurati", // 111 - "Greek", // 112 - "Georgian", // 113 - "Fulani", // 114 - "Dari", // 115 - "Churash", // 116 - "Chinese", // 117 - "Burmese", // 118 - "Bulgarian", // 119 - "Bengali", // 120 - "Belorus.", // 121 - "Bambora", // 122 - "Azerbaij.", // 123 - "Assamese", // 124 - "Armenian", // 125 - "Arabic", // 126 - "Amharic" // 127 -}; +}; \ No newline at end of file