diff --git a/TEF6686_ESP32.ino b/TEF6686_ESP32.ino index 0b68557..3a3e7d9 100644 --- a/TEF6686_ESP32.ino +++ b/TEF6686_ESP32.ino @@ -70,6 +70,7 @@ bool haseonold; bool hasrtplusold; bool hastmcold; bool LowLevelInit; +bool memoryms[EE_PRESETS_CNT]; bool memorystore; bool menu; bool menuopen; @@ -147,6 +148,7 @@ byte iMSset; byte language; byte licold; byte memoryband[EE_PRESETS_CNT]; +byte memorybw[EE_PRESETS_CNT]; byte memorypos; byte memoryposold; byte menupage; @@ -365,8 +367,8 @@ void setup() { gpio_set_drive_capability((gpio_num_t) 17, GPIO_DRIVE_CAP_0); gpio_set_drive_capability((gpio_num_t) 18, GPIO_DRIVE_CAP_0); gpio_set_drive_capability((gpio_num_t) 19, GPIO_DRIVE_CAP_0); - gpio_set_drive_capability((gpio_num_t)21, GPIO_DRIVE_CAP_0); - gpio_set_drive_capability((gpio_num_t)22, GPIO_DRIVE_CAP_0); + gpio_set_drive_capability((gpio_num_t) 21, GPIO_DRIVE_CAP_0); + gpio_set_drive_capability((gpio_num_t) 22, GPIO_DRIVE_CAP_0); gpio_set_drive_capability((gpio_num_t) 23, GPIO_DRIVE_CAP_0); setupmode = true; EEPROM.begin(EE_TOTAL_CNT); @@ -457,10 +459,14 @@ void setup() { for (int i = 0; i < EE_PRESETS_CNT; i++) memoryband[i] = EEPROM.readByte(i + EE_PRESETS_BAND_START); for (int i = 0; i < EE_PRESETS_CNT; i++) memory[i] = EEPROM.readUInt((i * 4) + EE_PRESETS_START); + for (int i = 0; i < EE_PRESETS_CNT; i++) memorybw[i] = EEPROM.readByte(i + EE_PRESET_BW_START); + for (int i = 0; i < EE_PRESETS_CNT; i++) memoryms[i] = EEPROM.readByte(i + EE_PRESET_MS_START); + btStop(); if (USBmode) Serial.begin(19200); else Serial.begin(115200); - + for (int i = 0; i < EE_PRESETS_CNT; i++) Serial.println(EEPROM.readByte(i + EE_PRESET_MS_START)); + if (iMSset == 1 && EQset == 1) iMSEQ = 2; if (iMSset == 0 && EQset == 1) iMSEQ = 3; if (iMSset == 1 && EQset == 0) iMSEQ = 4; @@ -1724,7 +1730,13 @@ void BWButtonPress() { while (digitalRead(BWBUTTON) == LOW && counter - counterold <= 1000) counter = millis(); if (counter - counterold < 1000) { - doStereoToggle(); + if (band == BAND_FM || band == BAND_OIRT) { + doStereoToggle(); + } else { + BWset++; + doBW(); + BWtune = true; + } } else { BWset++; doBW(); @@ -2037,6 +2049,8 @@ void ButtonPress() { } else { memorystore = false; EEPROM.writeByte(memorypos + EE_PRESETS_BAND_START, band); + EEPROM.writeByte(memorypos + EE_PRESET_BW_START, BWset); + EEPROM.writeByte(memorypos + EE_PRESET_MS_START, StereoToggle); if (band == BAND_FM) { EEPROM.writeUInt((memorypos * 4) + EE_PRESETS_START, frequency); } else if (band == BAND_OIRT) { @@ -2050,6 +2064,8 @@ void ButtonPress() { } EEPROM.commit(); memoryband[memorypos] = band; + memorybw[memorypos] = BWset; + memoryms[memorypos] = StereoToggle; if (band == BAND_FM) { memory[memorypos] = frequency; } else if (band == BAND_OIRT) { @@ -2273,6 +2289,16 @@ void DoMemoryPosTune() { radio.SetFreqAM(frequency_AM); } ShowFreq(0); + + if (band == BAND_FM || band == BAND_OIRT) { + if (memoryms[memorypos]) StereoToggle = false; else StereoToggle = true; + doStereoToggle(); + } + + BWset = memorybw[memorypos]; + doBW(); + BWtune = true; + } void ShowFreq(int mode) { @@ -3362,6 +3388,8 @@ void DefaultSettings(byte userhardwaremodel) { EEPROM.writeByte(EE_BYTE_RDS_PIERRORS, 0); for (int i = 0; i < EE_PRESETS_CNT; i++) EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM); for (int i = 0; i < EE_PRESETS_CNT; i++) EEPROM.writeUInt((i * 4) + EE_PRESETS_START, EE_PRESETS_FREQUENCY); + for (int i = 0; i < EE_PRESETS_CNT; i++) EEPROM.writeByte(i + EE_PRESET_BW_START, 0); + for (int i = 0; i < EE_PRESETS_CNT; i++) EEPROM.writeByte(i + EE_PRESET_MS_START, 0); if (userhardwaremodel == BASE_ILI9341) EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, 180); else EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, 164); if (userhardwaremodel == BASE_ILI9341) EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, 540); else EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, 639); if (userhardwaremodel == BASE_ILI9341) EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, 1800); else EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, 5000); diff --git a/src/constants.h b/src/constants.h index 2b3f30c..a352748 100644 --- a/src/constants.h +++ b/src/constants.h @@ -107,7 +107,7 @@ // EEPROM index defines #define EE_PRESETS_CNT 99 -#define EE_CHECKBYTE_VALUE 37 // 0 ~ 255,add new entry, change for new value +#define EE_CHECKBYTE_VALUE 38 // 0 ~ 255,add new entry, change for new value #define EE_TOTAL_CNT 818 #define EE_UINT16_FREQUENCY_FM 0