lotta changes

This commit is contained in:
2026-01-10 17:13:26 +01:00
parent 1671b6e14c
commit 06de03a16d
51 changed files with 5090 additions and 13538 deletions

View File

@@ -28,10 +28,8 @@ RdsPiBuffer::State RdsPiBuffer::getState(uint16_t value) {
uint8_t count = 0;
uint8_t correctCount = 0;
for (uint8_t i = 0; i < this->fill; i++)
{
if (this->buff[i] == value)
{
for (uint8_t i = 0; i < this->fill; i++) {
if (this->buff[i] == value) {
count++;
if ((this->errorBuff[i / 8] & (1 << (i % 8))) == 0) correctCount++;
}

View File

@@ -2,11 +2,7 @@
bool RDSstatus;
bool RDSstatusold;
#ifdef ARS
TFT_eSPI tft = TFT_eSPI(320, 240);
#else
TFT_eSPI tft = TFT_eSPI(240, 320);
#endif
TFT_eSPI tft = TFT_eSPI();
bool Data_Accelerator = false;
@@ -78,7 +74,6 @@ byte band;
byte bandAM;
byte bandFM;
byte bandforbidden;
byte battery;
byte batteryold;
byte batteryoptions;
byte BWset;
@@ -339,7 +334,6 @@ mem presets[EE_PRESETS_CNT];
TEF6686 radio;
ESP32Time rtc(0);
// FrequencySprite.createSprite(200, 50);
// RDSSprite.createSprite(165, 19);
// PSSprite.createSprite(150, 32);

View File

@@ -1341,7 +1341,7 @@ void ShowOneLine(byte position, byte item, bool selected) {
FullLineSprite.setTextDatum(TR_DATUM);
FullLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
if (fmdeemphasis != DEEMPHASIS_NONE) FullLineSprite.drawString(String((fmdeemphasis == DEEMPHASIS_50 ? FM_DEEMPHASIS_50 : FM_DEEMPHASIS_75), DEC), 258, 2);
if (fmdeemphasis != DEEMPHASIS_NONE) FullLineSprite.drawString(String((fmdeemphasis == DEEMPHASIS_50 ? 50 : 75), DEC), 258, 2);
if (fmdeemphasis != DEEMPHASIS_NONE) FullLineSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
FullLineSprite.drawString(((fmdeemphasis != DEEMPHASIS_NONE) != 0 ? "μs" : textUI(30)), 298, 2);
break;
@@ -2429,7 +2429,7 @@ void ShowOneButton(byte position, byte item, bool selected) {
PSSprite.drawString(textUI(30), 75, 15);
} else {
PSSprite.setTextDatum(TR_DATUM);
PSSprite.drawString(String((fmdeemphasis == DEEMPHASIS_50 ? FM_DEEMPHASIS_50 : FM_DEEMPHASIS_75), DEC), 73, 15);
PSSprite.drawString(String((fmdeemphasis == DEEMPHASIS_50 ? 50 : 75), DEC), 73, 15);
PSSprite.setTextColor(ActiveColor, ActiveColorSmooth, false);
PSSprite.setTextDatum(TL_DATUM);
PSSprite.drawString("μs", 77, 15);
@@ -3511,7 +3511,7 @@ void MenuUpDown(bool dir) {
if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.drawString("μs", 155, 0);
if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((fmdeemphasis != DEEMPHASIS_NONE ? (fmdeemphasis == DEEMPHASIS_50 ? String(FM_DEEMPHASIS_50, DEC) : String(FM_DEEMPHASIS_75, DEC)) : textUI(30)), 135, 0);
OneBigLineSprite.drawString((fmdeemphasis != DEEMPHASIS_NONE ? (fmdeemphasis == DEEMPHASIS_50 ? String(50, DEC) : String(75, DEC)) : textUI(30)), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
radio.setDeemphasis(fmdeemphasis);
break;
@@ -4801,7 +4801,7 @@ void DoMenu() {
if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.drawString("μs", 155, 0);
if (fmdeemphasis != DEEMPHASIS_NONE) OneBigLineSprite.setTextDatum(TR_DATUM); else OneBigLineSprite.setTextDatum(TC_DATUM);
OneBigLineSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
OneBigLineSprite.drawString((fmdeemphasis != DEEMPHASIS_NONE ? (fmdeemphasis == DEEMPHASIS_50 ? String(FM_DEEMPHASIS_50, DEC) : String(FM_DEEMPHASIS_75, DEC)) : textUI(30)), 135, 0);
OneBigLineSprite.drawString((fmdeemphasis != DEEMPHASIS_NONE ? (fmdeemphasis == DEEMPHASIS_50 ? String(50, DEC) : String(75, DEC)) : textUI(30)), 135, 0);
OneBigLineSprite.pushSprite(24, 118);
break;
}

View File

@@ -1,7 +1,6 @@
#pragma region includes
#include "soc/soc.h"
#include "soc/rtc_cntl_reg.h"
#include <EEPROM.h>
#include <Wire.h>
#include <Hash.h>
#include <FS.h>
@@ -15,16 +14,13 @@ using fs::FS;
#include "FONT28_CHS.h"
#include "FONT48DEC.h"
#include "FREQFONT.h"
#include "TEF6686.h"
#include "constants.h"
#include "language.h"
#include "globals.h"
#include "gui.h"
#include "comms.h"
#include "rds.h"
#include "touch.h"
#include "logbook.h"
#include "nonvolatile.h"
#include "utils.h"
#include "globals.h"
#pragma endregion
#pragma region to move
@@ -63,22 +59,6 @@ void Touch_IRQ_Handler() {
touch_detect = true;
}
void StoreFrequency() {
switch (band) {
case BAND_LW: freqold = frequency_LW; frequency_AM = frequency_LW; break;
case BAND_MW: freqold = frequency_MW; frequency_AM = frequency_MW; break;
case BAND_SW: freqold = frequency_SW; frequency_AM = frequency_SW; break;
}
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();
}
void deepSleep() {
analogWrite(SMETERPIN, 0);
pinMode(STANDBYLED, OUTPUT);
@@ -883,29 +863,6 @@ int GetNum() {
return -1;
}
void ClearMemoryRange(uint8_t start, uint8_t stop) {
for (uint8_t pos = start; pos <= stop; pos++) {
EEPROM.writeByte(pos + EE_PRESETS_BAND_START, BAND_FM);
EEPROM.writeUInt((pos * 4) + EE_PRESETS_FREQUENCY_START, EE_PRESETS_FREQUENCY);
EEPROM.writeByte(pos + EE_PRESET_BW_START, 0);
EEPROM.writeByte(pos + EE_PRESET_MS_START, 1);
for (int y = 0; y < 9; y++) {
EEPROM.writeByte((pos * 9) + y + EE_PRESETS_RDSPS_START, '\0');
presets[pos].RDSPS[y] = '\0';
}
for (int y = 0; y < 5; y++) {
EEPROM.writeByte((pos * 5) + y + EE_PRESETS_RDSPI_START, '\0');
presets[pos].RDSPI[y] = '\0';
}
EEPROM.commit();
presets[pos].band = BAND_FM;
presets[pos].frequency = EE_PRESETS_FREQUENCY;
}
}
void StoreMemoryPos(uint8_t _pos) {
EEPROM.writeByte(_pos + EE_PRESETS_BAND_START, band);
EEPROM.writeByte(_pos + EE_PRESET_BW_START, BWset);
@@ -1118,94 +1075,6 @@ void endMenu() {
SelectBand();
}
void saveData() {
EEPROM.writeByte(EE_BYTE_VOLSET, VolSet);
EEPROM.writeUInt(EE_UINT16_CONVERTERSET, ConverterSet);
EEPROM.writeUInt(EE_UINT16_FMLOWEDGESET, LowEdgeSet);
EEPROM.writeUInt(EE_UINT16_FMHIGHEDGESET, HighEdgeSet);
EEPROM.writeByte(EE_BYTE_CONTRASTSET, ContrastSet);
EEPROM.writeByte(EE_BYTE_STEREOLEVEL, StereoLevel);
EEPROM.writeByte(EE_BYTE_BANDFM, bandFM);
EEPROM.writeByte(EE_BYTE_BANDAM, bandAM);
EEPROM.writeByte(EE_BYTE_HIGHCUTLEVEL, HighCutLevel);
EEPROM.writeByte(EE_BYTE_HIGHCUTOFFSET, HighCutOffset);
EEPROM.writeByte(EE_BYTE_LEVELOFFSET, LevelOffset);
EEPROM.writeByte(EE_BYTE_RTBUFFER, radio.rds.rtbuffer);
EEPROM.writeByte(EE_BYTE_EDGEBEEP, edgebeep);
EEPROM.writeByte(EE_BYTE_SOFTMUTEAM, softmuteam);
EEPROM.writeByte(EE_BYTE_SOFTMUTEFM, softmutefm);
EEPROM.writeByte(EE_BYTE_LANGUAGE, language);
EEPROM.writeByte(EE_BYTE_SHOWRDSERRORS, showrdserrors);
EEPROM.writeByte(EE_BYTE_LOWLEVELSET, LowLevelSet);
EEPROM.writeByte(EE_BYTE_REGION, radio.rds.region);
EEPROM.writeByte(EE_BYTE_RDS_UNDERSCORE, radio.underscore);
EEPROM.writeByte(EE_BYTE_USBMODE, USBmode);
EEPROM.writeByte(EE_BYTE_WIFI, wifi);
EEPROM.writeByte(EE_BYTE_SUBNETCLIENT, subnetclient);
EEPROM.writeByte(EE_BYTE_SHOWSWMIBAND, showSWMIBand);
EEPROM.writeByte(EE_BYTE_RDS_FILTER, radio.rds.filter);
EEPROM.writeByte(EE_BYTE_RDS_PIERRORS, radio.rds.pierrors);
EEPROM.writeByte(EE_BYTE_USESQUELCH, usesquelch);
EEPROM.writeByte(EE_BYTE_SHOWMODULATION, showmodulation);
EEPROM.writeByte(EE_BYTE_AM_NB, amnb);
EEPROM.writeByte(EE_BYTE_FM_NB, fmnb);
EEPROM.writeByte(EE_BYTE_AUDIOMODE, audiomode);
EEPROM.writeByte(EE_BYTE_TOUCH_ROTATING, touchrotating);
EEPROM.writeUInt(EE_UINT16_LOWEDGEOIRTSET, LowEdgeOIRTSet);
EEPROM.writeUInt(EE_UINT16_HIGHEDGEOIRTSET, HighEdgeOIRTSet);
EEPROM.writeByte(EE_BYTE_HARDWARE_MODEL, hardwaremodel);
EEPROM.writeByte(EE_BYTE_POWEROPTIONS, poweroptions);
EEPROM.writeByte(EE_BYTE_CURRENTTHEME, CurrentTheme);
EEPROM.writeByte(EE_BYTE_FMDEFAULTSTEPSIZE, fmdefaultstepsize);
EEPROM.writeByte(EE_BYTE_SCREENSAVERSET, screensaverset);
EEPROM.writeInt(EE_INT16_AMLEVELOFFSET, AMLevelOffset);
EEPROM.writeByte(EE_BYTE_UNIT, unit);
EEPROM.writeByte(EE_BYTE_AF, af);
EEPROM.writeByte(EE_BYTE_STEREO, StereoToggle);
EEPROM.writeByte(EE_BYTE_BATTERY_OPTIONS, batteryoptions);
EEPROM.writeByte(EE_BYTE_AM_CO_DECT, amcodect);
EEPROM.writeByte(EE_BYTE_AM_CO_DECT_COUNT, amcodectcount);
EEPROM.writeByte(EE_BYTE_AM_RF_GAIN, amgain);
EEPROM.writeByte(EE_BYTE_SORTAF, radio.rds.sortaf);
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.writeByte(EE_BYTE_MWREGION, mwstepsize);
EEPROM.writeByte(EE_BYTE_SPISPEED, spispeed);
EEPROM.writeByte(EE_BYTE_AMSCANSENS, amscansens);
EEPROM.writeByte(EE_BYTE_FMSCANSENS, fmscansens);
EEPROM.writeByte(EE_BYTE_FREQFONT, freqfont);
EEPROM.writeByte(EE_BYTE_SKIN, CurrentSkin);
EEPROM.writeByte(EE_BYTE_XDRGTKMUTE, XDRGTKMuteScreen);
EEPROM.writeByte(EE_BYTE_FMAGC, fmagc);
EEPROM.writeByte(EE_BYTE_AMAGC, amagc);
EEPROM.writeByte(EE_BYTE_FMSI, fmsi);
EEPROM.writeByte(EE_BYTE_SCANSTART, scanstart);
EEPROM.writeByte(EE_BYTE_SCANSTOP, scanstop);
EEPROM.writeByte(EE_BYTE_SCANHOLD, scanhold);
EEPROM.writeByte(EE_BYTE_SCANMEM, scanmem);
EEPROM.writeByte(EE_BYTE_SCANCANCEL, scancancel);
EEPROM.writeByte(EE_BYTE_SCANMUTE, scanmute);
EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, autosquelch);
EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, longbandpress);
EEPROM.writeByte(EE_BYTE_SHOWCLOCK, showclock);
EEPROM.writeByte(EE_BYTE_SHOWLONGPS, showlongps);
EEPROM.writeUInt(EE_UINT16_MEMSTARTFREQ, memstartfreq);
EEPROM.writeUInt(EE_UINT16_MEMSTOPFREQ, memstopfreq);
EEPROM.writeByte(EE_BYTE_MEMSTARTPOS, memstartpos);
EEPROM.writeByte(EE_BYTE_MEMSTOPPOS, memstoppos);
EEPROM.writeByte(EE_BYTE_MEMPIONLY, mempionly);
EEPROM.writeByte(EE_BYTE_MEMDOUBLEPI, memdoublepi);
EEPROM.writeByte(EE_BYTE_WAITONLYONSIGNAL, scanholdonsignal);
EEPROM.writeByte(EE_BYTE_NTPOFFSET, NTPoffset);
EEPROM.writeByte(EE_BYTE_AUTOLOG, autolog);
EEPROM.writeByte(EE_BYTE_AUTODST, autoDST);
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, clockampm);
EEPROM.writeUInt(EE_UINT16_PICTLOCK, radio.rds.PICTlock);
EEPROM.commit();
}
void cancelDXScan() {
tunemode = scanmodeold;
memorypos = memoryposold;
@@ -1264,7 +1133,6 @@ void MuteScreen(bool setting) {
}
#pragma endregion
void DefaultSettings();
void read_encoder();
void setup() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
@@ -1279,118 +1147,7 @@ void setup() {
setupmode = true;
EEPROM.begin(EE_TOTAL_CNT);
if (EEPROM.readByte(EE_BYTE_CHECKBYTE) != EE_CHECKBYTE_VALUE) DefaultSettings();
frequency = EEPROM.readUInt(EE_UINT16_FREQUENCY_FM);
frequency_OIRT = EEPROM.readUInt(EE_UINT16_FREQUENCY_OIRT);
VolSet = EEPROM.readByte(EE_BYTE_VOLSET);
ConverterSet = EEPROM.readUInt(EE_UINT16_CONVERTERSET);
LowEdgeSet = EEPROM.readUInt(EE_UINT16_FMLOWEDGESET);
HighEdgeSet = EEPROM.readUInt(EE_UINT16_FMHIGHEDGESET);
ContrastSet = EEPROM.readByte(EE_BYTE_CONTRASTSET);
StereoLevel = EEPROM.readByte(EE_BYTE_STEREOLEVEL);
bandFM = EEPROM.readByte(EE_BYTE_BANDFM);
bandAM = EEPROM.readByte(EE_BYTE_BANDAM);
HighCutLevel = EEPROM.readByte(EE_BYTE_HIGHCUTLEVEL);
HighCutOffset = EEPROM.readByte(EE_BYTE_HIGHCUTOFFSET);
LevelOffset = EEPROM.readByte(EE_BYTE_LEVELOFFSET);
radio.rds.rtbuffer = EEPROM.readByte(EE_BYTE_RTBUFFER);
edgebeep = EEPROM.readByte(EE_BYTE_EDGEBEEP);
softmuteam = EEPROM.readByte(EE_BYTE_SOFTMUTEAM);
softmutefm = EEPROM.readByte(EE_BYTE_SOFTMUTEFM);
frequency_AM = EEPROM.readUInt(EE_UINT16_FREQUENCY_AM);
language = EEPROM.readByte(EE_BYTE_LANGUAGE);
showrdserrors = EEPROM.readByte(EE_BYTE_SHOWRDSERRORS);
TEF = EEPROM.readByte(EE_BYTE_TEF);
displayflip = EEPROM.readByte(EE_BYTE_DISPLAYFLIP);
rotarymode = EEPROM.readByte(EE_BYTE_ROTARYMODE);
tunemode = EEPROM.readByte(EE_BYTE_TUNEMODE);
if (tunemode == TUNE_MAN) stepsize = EEPROM.readByte(EE_BYTE_STEPSIZE); else stepsize = 0;
optenc = EEPROM.readByte(EE_BYTE_OPTENC);
iMSset = EEPROM.readByte(EE_BYTE_IMSSET);
EQset = EEPROM.readByte(EE_BYTE_EQSET);
band = EEPROM.readByte(EE_BYTE_BAND);
LowLevelSet = EEPROM.readByte(EE_BYTE_LOWLEVELSET);
memorypos = EEPROM.readByte(EE_BYTE_MEMORYPOS);
radio.rds.region = EEPROM.readByte(EE_BYTE_REGION);
radio.underscore = EEPROM.readByte(EE_BYTE_RDS_UNDERSCORE);
USBmode = EEPROM.readByte(EE_BYTE_USBMODE);
wifi = EEPROM.readByte(EE_BYTE_WIFI);
subnetclient = EEPROM.readByte(EE_BYTE_SUBNETCLIENT);
showSWMIBand = EEPROM.readByte(EE_BYTE_SHOWSWMIBAND);
radio.rds.filter = EEPROM.readByte(EE_BYTE_RDS_FILTER);
radio.rds.pierrors = EEPROM.readByte(EE_BYTE_RDS_PIERRORS);
frequency_LW = EEPROM.readUInt(EE_UINT16_FREQUENCY_LW);
frequency_MW = EEPROM.readUInt(EE_UINT16_FREQUENCY_MW);
frequency_SW = EEPROM.readUInt(EE_UINT16_FREQUENCY_SW);
XDRGTK_key = EEPROM.readString(EE_STRING_XDRGTK_KEY);
usesquelch = EEPROM.readByte(EE_BYTE_USESQUELCH);
showmodulation = EEPROM.readByte(EE_BYTE_SHOWMODULATION);
amnb = EEPROM.readByte(EE_BYTE_AM_NB);
fmnb = EEPROM.readByte(EE_BYTE_FM_NB);
audiomode = EEPROM.readByte(EE_BYTE_AUDIOMODE);
touchrotating = EEPROM.readByte(EE_BYTE_TOUCH_ROTATING);
hardwaremodel = EEPROM.readByte(EE_BYTE_HARDWARE_MODEL);
poweroptions = EEPROM.readByte(EE_BYTE_POWEROPTIONS);
CurrentTheme = EEPROM.readByte(EE_BYTE_CURRENTTHEME);
fmdefaultstepsize = EEPROM.readByte(EE_BYTE_FMDEFAULTSTEPSIZE);
screensaverset = EEPROM.readByte(EE_BYTE_SCREENSAVERSET);
AMLevelOffset = EEPROM.readInt(EE_INT16_AMLEVELOFFSET);
unit = EEPROM.readByte(EE_BYTE_UNIT);
af = EEPROM.readByte(EE_BYTE_AF);
if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false;
StereoToggle = EEPROM.readByte(EE_BYTE_STEREO);
batteryoptions = EEPROM.readByte(EE_BYTE_BATTERY_OPTIONS);
amcodect = EEPROM.readByte(EE_BYTE_AM_CO_DECT);
amcodectcount = EEPROM.readByte(EE_BYTE_AM_CO_DECT_COUNT);
amgain = EEPROM.readByte(EE_BYTE_AM_RF_GAIN);
radio.rds.sortaf = EEPROM.readByte(EE_BYTE_SORTAF);
stationlistid = EEPROM.readByte(EE_BYTE_STATIONLISTID);
fmdeemphasis = EEPROM.readByte(EE_BYTE_FM_DEEMPHASIS);
BWsetFM = EEPROM.readByte(EE_BYTE_BWSET_FM);
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);
mwstepsize = EEPROM.readByte(EE_BYTE_MWREGION);
spispeed = EEPROM.readByte(EE_BYTE_SPISPEED);
amscansens = EEPROM.readByte(EE_BYTE_AMSCANSENS);
fmscansens = EEPROM.readByte(EE_BYTE_FMSCANSENS);
freqfont = EEPROM.readByte(EE_BYTE_FREQFONT);
CurrentSkin = EEPROM.readByte(EE_BYTE_SKIN);
XDRGTKMuteScreen = EEPROM.readByte(EE_BYTE_XDRGTKMUTE);
fmagc = EEPROM.readByte(EE_BYTE_FMAGC);
amagc = EEPROM.readByte(EE_BYTE_AMAGC);
fmsi = EEPROM.readByte(EE_BYTE_FMSI);
scanstart = EEPROM.readByte(EE_BYTE_SCANSTART);
scanstop = EEPROM.readByte(EE_BYTE_SCANSTOP);
scanhold = EEPROM.readByte(EE_BYTE_SCANHOLD);
scanmem = EEPROM.readByte(EE_BYTE_SCANMEM);
scancancel = EEPROM.readByte(EE_BYTE_SCANCANCEL);
scanmute = EEPROM.readByte(EE_BYTE_SCANMUTE);
autosquelch = EEPROM.readByte(EE_BYTE_AUTOSQUELCH);
longbandpress = EEPROM.readByte(EE_BYTE_LONGBANDPRESS);
showclock = EEPROM.readByte(EE_BYTE_SHOWCLOCK);
showlongps = EEPROM.readByte(EE_BYTE_SHOWLONGPS);
memstartfreq = EEPROM.readUInt(EE_UINT16_MEMSTARTFREQ);
memstopfreq = EEPROM.readUInt(EE_UINT16_MEMSTOPFREQ);
memstartpos = EEPROM.readByte(EE_BYTE_MEMSTARTPOS);
memstoppos = EEPROM.readByte(EE_BYTE_MEMSTOPPOS);
mempionly = EEPROM.readByte(EE_BYTE_MEMPIONLY);
memdoublepi = EEPROM.readByte(EE_BYTE_MEMDOUBLEPI);
scanholdonsignal = EEPROM.readByte(EE_BYTE_WAITONLYONSIGNAL);
TouchCalData[0] = EEPROM.readUInt(EE_UINT16_CALTOUCH1);
TouchCalData[1] = EEPROM.readUInt(EE_UINT16_CALTOUCH2);
TouchCalData[2] = EEPROM.readUInt(EE_UINT16_CALTOUCH3);
TouchCalData[3] = EEPROM.readUInt(EE_UINT16_CALTOUCH4);
TouchCalData[4] = EEPROM.readUInt(EE_UINT16_CALTOUCH5);
invertdisplay = EEPROM.readByte(EE_BYTE_INVERTDISPLAY);
NTPoffset = EEPROM.readByte(EE_BYTE_NTPOFFSET);
autolog = EEPROM.readByte(EE_BYTE_AUTOLOG);
autoDST = EEPROM.readByte(EE_BYTE_AUTODST);
clockampm = EEPROM.readByte(EE_BYTE_CLOCKAMPM);
logcounter = EEPROM.readUInt(EE_UINT16_LOGCOUNTER);
radio.rds.PICTlock = EEPROM.readUInt(EE_UINT16_PICTLOCK);
loadData();
if (spispeed == SPI_SPEED_DEFAULT) tft.setSPISpeed(SPI_FREQUENCY / 1000000);
else if (spispeed == 7) setAutoSpeedSPI();
@@ -1488,19 +1245,15 @@ void setup() {
FrequencySprite.setSwapBytes(true);
RDSSprite.createSprite(165, 19);
RDSSprite.setTextDatum(TL_DATUM);
RDSSprite.setSwapBytes(true);
PTYSprite.createSprite(160, 19);
PTYSprite.setTextDatum(TL_DATUM);
PTYSprite.setSwapBytes(true);
PSSprite.createSprite(150, 32);
PSSprite.setTextDatum(TL_DATUM);
PSSprite.setSwapBytes(true);
SquelchSprite.createSprite(27, 19);
SquelchSprite.setTextDatum(TL_DATUM);
SquelchSprite.setSwapBytes(true);
FullLineSprite.createSprite(308, 19);
@@ -1511,7 +1264,6 @@ void setup() {
SignalSprite.createSprite(80, 48);
SignalSprite.setTextColor(PrimaryColor, PrimaryColorSmooth, false);
SignalSprite.setTextDatum(TR_DATUM);
SignalSprite.setSwapBytes(true);
UpdateFonts(0);
@@ -1683,7 +1435,7 @@ void setup() {
Udp.stop();
tft.fillRect(184, 230, 16, 6, SignificantColor);
}
delay(1000);
delay(750);
radio.setVolume(VolSet);
radio.setOffset(LevelOffset);
@@ -3756,10 +3508,9 @@ void ShowBattery() {
if (millis() >= batupdatetimer + TIMER_BAT_TIMER) batupdatetimer = millis();
else return;
uint16_t v = analogRead(BATTERY_PIN);
battery = map(constrain(v, BAT_LEVEL_EMPTY, BAT_LEVEL_FULL), BAT_LEVEL_EMPTY, BAT_LEVEL_FULL, 0, BAT_LEVEL_STAGE);
byte batteryprobe = map(constrain(v, BAT_LEVEL_EMPTY, BAT_LEVEL_FULL), BAT_LEVEL_EMPTY, BAT_LEVEL_FULL, 0, 20);
float v = analogReadMilliVolts(BATTERY_PIN) * 0.002;
byte battery = map(constrain(v, BATTERY_LOW_VALUE, BATTERY_FULL_VALUE), BATTERY_LOW_VALUE, BATTERY_FULL_VALUE, 0, BAT_LEVEL_STAGE);
byte batteryprobe = map(constrain(v, BATTERY_LOW_VALUE, BATTERY_FULL_VALUE), BATTERY_LOW_VALUE, BATTERY_FULL_VALUE, 0, 20);
if (batteryold != batteryprobe) {
if (batterydetect) {
if (battery == 0) {
@@ -3769,21 +3520,21 @@ void ShowBattery() {
tft.drawRoundRect(277, 6, 37, 20, 2, ActiveColor);
tft.fillRoundRect(313, 13, 4, 6, 2, ActiveColor);
}
if (batteryoptions != BATTERY_VALUE && batteryoptions != BATTERY_PERCENT && battery != 0) tft.fillRoundRect(279, 8, (battery * 8) , 16, 2, BarInsignificantColor);
else tft.fillRoundRect(279, 8, 33, 16, 2, BackgroundColor);
if (batteryoptions != BATTERY_VALUE && batteryoptions != BATTERY_PERCENT && battery != 0) {
if(v > BATTERY_FULL_VALUE) tft.fillRoundRect(279, 8, 32, 16, 2, ActiveColor);
else tft.fillRoundRect(279, 8, battery * 8, 16, 2, SecondaryColor);
} else tft.fillRoundRect(279, 8, 32, 16, 2, BackgroundColor);
}
batteryold = batteryprobe;
batteryVold = 0;
vPerold = 0;
if (batterydetect) {
float batteryV = constrain((((float)v / 4095.0) * 3.3 * (1100 / 1000.0) * 2.0), 0.0, 5.0);
float vPer = constrain((batteryV - BATTERY_LOW_VALUE) / (BATTERY_FULL_VALUE - BATTERY_LOW_VALUE), 0.0, 0.99) * 100;
if (abs(batteryV - batteryVold) > 0.05 && batteryoptions == BATTERY_VALUE) {
tftPrint(ALEFT, String(batteryV, 2) + "V", 279, 9, BatteryValueColor, BatteryValueColorSmooth, 16);
batteryVold = batteryV;
float vPer = constrain((v - BATTERY_LOW_VALUE) / (BATTERY_FULL_VALUE - BATTERY_LOW_VALUE), 0.0, 1.0) * 100.0;
if (abs(v - batteryVold) > 0.05 && batteryoptions == BATTERY_VALUE) {
tftPrint(ALEFT, String(v, 2) + "V", 279, 9, BatteryValueColor, BatteryValueColorSmooth, 16);
batteryVold = v;
} else if (int(vPer) != int(vPerold) && batteryoptions == BATTERY_PERCENT && abs(vPer - vPerold) > 0.5) {
tftPrint(ALEFT, String(vPer, 0) + "%", 279, 9, BatteryValueColor, BatteryValueColorSmooth, 16);
vPerold = vPer;
@@ -4062,144 +3813,6 @@ void read_encoder() {
}
}
void DefaultSettings() {
EEPROM.writeByte(EE_BYTE_CHECKBYTE, EE_CHECKBYTE_VALUE);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_FM, 9500);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_OIRT, FREQ_FM_OIRT_START);
EEPROM.writeByte(EE_BYTE_VOLSET, 0);
EEPROM.writeUInt(EE_UINT16_CONVERTERSET, 0);
EEPROM.writeUInt(EE_UINT16_FMLOWEDGESET, 875);
EEPROM.writeUInt(EE_UINT16_FMHIGHEDGESET, 1080);
EEPROM.writeByte(EE_BYTE_CONTRASTSET, 50);
EEPROM.writeByte(EE_BYTE_STEREOLEVEL, 0);
EEPROM.writeByte(EE_BYTE_BANDFM, FM_BAND_ALL);
EEPROM.writeByte(EE_BYTE_BANDAM, AM_BAND_ALL);
EEPROM.writeByte(EE_BYTE_HIGHCUTLEVEL, 70);
EEPROM.writeByte(EE_BYTE_HIGHCUTOFFSET, 0);
EEPROM.writeByte(EE_BYTE_LEVELOFFSET, 0);
EEPROM.writeByte(EE_BYTE_RTBUFFER, 1);
EEPROM.writeByte(EE_BYTE_EDGEBEEP, 0);
EEPROM.writeByte(EE_BYTE_SOFTMUTEAM, 1);
EEPROM.writeByte(EE_BYTE_SOFTMUTEFM, 0);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_AM, 828);
EEPROM.writeByte(EE_BYTE_LANGUAGE, 0);
EEPROM.writeByte(EE_BYTE_SHOWRDSERRORS, 1);
EEPROM.writeByte(EE_BYTE_TEF, 0);
EEPROM.writeByte(EE_BYTE_STEPSIZE, 0);
EEPROM.writeByte(EE_BYTE_TUNEMODE, 0);
EEPROM.writeByte(EE_BYTE_OPTENC, 0);
EEPROM.writeByte(EE_BYTE_IMSSET, 1);
EEPROM.writeByte(EE_BYTE_EQSET, 1);
EEPROM.writeByte(EE_BYTE_BAND, BAND_FM);
EEPROM.writeByte(EE_BYTE_LOWLEVELSET, -15);
EEPROM.writeByte(EE_BYTE_MEMORYPOS, 0);
EEPROM.writeByte(EE_BYTE_REGION, 0);
EEPROM.writeByte(EE_BYTE_RDS_UNDERSCORE, 0);
EEPROM.writeByte(EE_BYTE_USBMODE, 0);
EEPROM.writeByte(EE_BYTE_WIFI, 0);
EEPROM.writeByte(EE_BYTE_SUBNETCLIENT, 1);
EEPROM.writeByte(EE_BYTE_SHOWSWMIBAND, 1);
EEPROM.writeByte(EE_BYTE_RDS_FILTER, 1);
EEPROM.writeByte(EE_BYTE_RDS_PIERRORS, 0);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, 180);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, 540);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, 1800);
EEPROM.writeString(EE_STRING_XDRGTK_KEY, "password");
EEPROM.writeByte(EE_BYTE_USESQUELCH, 1);
EEPROM.writeByte(EE_BYTE_SHOWMODULATION, 1);
EEPROM.writeByte(EE_BYTE_AM_NB, 0);
EEPROM.writeByte(EE_BYTE_FM_NB, 0);
EEPROM.writeByte(EE_BYTE_AUDIOMODE, 0);
EEPROM.writeByte(EE_BYTE_TOUCH_ROTATING, 0);
EEPROM.writeUInt(EE_UINT16_LOWEDGEOIRTSET, 0);
EEPROM.writeUInt(EE_UINT16_HIGHEDGEOIRTSET, 0);
EEPROM.writeByte(EE_BYTE_POWEROPTIONS, 1);
EEPROM.writeByte(EE_BYTE_CURRENTTHEME, 0);
EEPROM.writeByte(EE_BYTE_FMDEFAULTSTEPSIZE, 1);
EEPROM.writeByte(EE_BYTE_SCREENSAVERSET, 0);
EEPROM.writeInt(EE_INT16_AMLEVELOFFSET, 0);
EEPROM.writeByte(EE_BYTE_UNIT, 0);
EEPROM.writeByte(EE_BYTE_AF, 0);
EEPROM.writeByte(EE_BYTE_STEREO, 1);
EEPROM.writeByte(EE_BYTE_BATTERY_OPTIONS, BATTERY_VALUE);
EEPROM.writeByte(EE_BYTE_AM_CO_DECT, 100);
EEPROM.writeByte(EE_BYTE_AM_CO_DECT_COUNT, 3);
EEPROM.writeByte(EE_BYTE_AM_RF_GAIN, 0);
EEPROM.writeByte(EE_BYTE_SORTAF, 1);
EEPROM.writeByte(EE_BYTE_STATIONLISTID, 1);
EEPROM.writeByte(EE_BYTE_FM_DEEMPHASIS, DEEMPHASIS_50);
EEPROM.writeByte(EE_BYTE_BWSET_FM, 0);
EEPROM.writeByte(EE_BYTE_BWSET_AM, 2);
EEPROM.writeByte(EE_BYTE_BANDAUTOSW, 0);
EEPROM.writeByte(EE_BYTE_FASTPS, 1);
EEPROM.writeByte(EE_BYTE_TOT, 0);
EEPROM.writeByte(EE_BYTE_MWREGION, 0);
EEPROM.writeByte(EE_BYTE_AMSCANSENS, 4);
EEPROM.writeByte(EE_BYTE_FMSCANSENS, 4);
EEPROM.writeByte(EE_BYTE_FREQFONT, 3);
EEPROM.writeByte(EE_BYTE_SKIN, 0);
EEPROM.writeByte(EE_BYTE_XDRGTKMUTE, 0);
EEPROM.writeByte(EE_BYTE_FMAGC, 92);
EEPROM.writeByte(EE_BYTE_AMAGC, 100);
EEPROM.writeByte(EE_BYTE_FMSI, 1);
EEPROM.writeByte(EE_BYTE_SCANSTART, 0);
EEPROM.writeByte(EE_BYTE_SCANSTOP, 9);
EEPROM.writeByte(EE_BYTE_SCANHOLD, 5);
EEPROM.writeByte(EE_BYTE_SCANMEM, 1);
EEPROM.writeByte(EE_BYTE_SCANCANCEL, 0);
EEPROM.writeByte(EE_BYTE_SCANMUTE, 0);
EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, 0);
EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, 0);
EEPROM.writeByte(EE_BYTE_SHOWCLOCK, 1);
EEPROM.writeByte(EE_BYTE_SHOWLONGPS, 1);
EEPROM.writeUInt(EE_UINT16_MEMSTARTFREQ, 875);
EEPROM.writeUInt(EE_UINT16_MEMSTOPFREQ, 1080);
EEPROM.writeByte(EE_BYTE_MEMSTARTPOS, 1);
EEPROM.writeByte(EE_BYTE_MEMSTOPPOS, 10);
EEPROM.writeByte(EE_BYTE_MEMPIONLY, 1);
EEPROM.writeByte(EE_BYTE_MEMDOUBLEPI, 0);
EEPROM.writeByte(EE_BYTE_WAITONLYONSIGNAL, 1);
EEPROM.writeUInt(EE_UINT16_CALTOUCH1, 300);
EEPROM.writeUInt(EE_UINT16_CALTOUCH2, 3450);
EEPROM.writeUInt(EE_UINT16_CALTOUCH3, 300);
EEPROM.writeUInt(EE_UINT16_CALTOUCH4, 3450);
EEPROM.writeUInt(EE_UINT16_CALTOUCH5, 3);
EEPROM.writeByte(EE_BYTE_NTPOFFSET, 1);
EEPROM.writeByte(EE_BYTE_AUTOLOG, 1);
EEPROM.writeByte(EE_BYTE_AUTODST, 1);
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, 0);
EEPROM.writeUInt(EE_UINT16_PICTLOCK, 0);
EEPROM.writeByte(EE_BYTE_SPISPEED, 7);
#ifdef DEEPELEC_DP_66X
EEPROM.writeByte(EE_BYTE_ROTARYMODE, 1);
EEPROM.writeByte(EE_BYTE_INVERTDISPLAY, 0);
EEPROM.writeByte(EE_BYTE_DISPLAYFLIP, 1);
EEPROM.writeByte(EE_BYTE_HARDWARE_MODEL, PORTABLE_TOUCH_ILI9341);
#else
EEPROM.writeByte(EE_BYTE_ROTARYMODE, 0);
EEPROM.writeByte(EE_BYTE_INVERTDISPLAY, 1);
EEPROM.writeByte(EE_BYTE_DISPLAYFLIP, 0);
EEPROM.writeByte(EE_BYTE_HARDWARE_MODEL, BASE_ILI9341);
#endif
for (int i = 0; i < EE_PRESETS_CNT; i++) {
EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM);
EEPROM.writeUInt((i * 4) + EE_PRESETS_FREQUENCY_START, EE_PRESETS_FREQUENCY);
EEPROM.writeByte(i + EE_PRESET_BW_START, 0);
EEPROM.writeByte(i + EE_PRESET_MS_START, 1);
for (int y = 0; y < 9; y++) EEPROM.writeByte((i * 9) + y + EE_PRESETS_RDSPS_START, '\0');
for (int y = 0; y < 5; y++) EEPROM.writeByte((i * 5) + y + EE_PRESETS_RDSPI_START, '\0');
}
EEPROM.commit();
handleCreateNewLogbook();
}
void tftReplace(int8_t offset, const String & textold, const String & text, int16_t x, int16_t y, int color, int smoothcolor, int background, uint8_t fontsize) {
const uint8_t *selectedFont = nullptr;
if (language == LANGUAGE_CHS) {

381
src/nonvolatile.cpp Normal file
View File

@@ -0,0 +1,381 @@
#include "nonvolatile.h"
void StoreFrequency() {
switch (band) {
case BAND_LW: freqold = frequency_LW; frequency_AM = frequency_LW; break;
case BAND_MW: freqold = frequency_MW; frequency_AM = frequency_MW; break;
case BAND_SW: freqold = frequency_SW; frequency_AM = frequency_SW; break;
}
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();
}
void ClearMemoryRange(uint8_t start, uint8_t stop) {
for (uint8_t pos = start; pos <= stop; pos++) {
EEPROM.writeByte(pos + EE_PRESETS_BAND_START, BAND_FM);
EEPROM.writeUInt((pos * 4) + EE_PRESETS_FREQUENCY_START, EE_PRESETS_FREQUENCY);
EEPROM.writeByte(pos + EE_PRESET_BW_START, 0);
EEPROM.writeByte(pos + EE_PRESET_MS_START, 1);
for (int y = 0; y < 9; y++) {
EEPROM.writeByte((pos * 9) + y + EE_PRESETS_RDSPS_START, '\0');
presets[pos].RDSPS[y] = '\0';
}
for (int y = 0; y < 5; y++) {
EEPROM.writeByte((pos * 5) + y + EE_PRESETS_RDSPI_START, '\0');
presets[pos].RDSPI[y] = '\0';
}
EEPROM.commit();
presets[pos].band = BAND_FM;
presets[pos].frequency = EE_PRESETS_FREQUENCY;
}
}
void saveData() {
EEPROM.writeByte(EE_BYTE_VOLSET, VolSet);
EEPROM.writeUInt(EE_UINT16_CONVERTERSET, ConverterSet);
EEPROM.writeUInt(EE_UINT16_FMLOWEDGESET, LowEdgeSet);
EEPROM.writeUInt(EE_UINT16_FMHIGHEDGESET, HighEdgeSet);
EEPROM.writeByte(EE_BYTE_CONTRASTSET, ContrastSet);
EEPROM.writeByte(EE_BYTE_STEREOLEVEL, StereoLevel);
EEPROM.writeByte(EE_BYTE_BANDFM, bandFM);
EEPROM.writeByte(EE_BYTE_BANDAM, bandAM);
EEPROM.writeByte(EE_BYTE_HIGHCUTLEVEL, HighCutLevel);
EEPROM.writeByte(EE_BYTE_HIGHCUTOFFSET, HighCutOffset);
EEPROM.writeByte(EE_BYTE_LEVELOFFSET, LevelOffset);
EEPROM.writeByte(EE_BYTE_RTBUFFER, radio.rds.rtbuffer);
EEPROM.writeByte(EE_BYTE_EDGEBEEP, edgebeep);
EEPROM.writeByte(EE_BYTE_SOFTMUTEAM, softmuteam);
EEPROM.writeByte(EE_BYTE_SOFTMUTEFM, softmutefm);
EEPROM.writeByte(EE_BYTE_LANGUAGE, language);
EEPROM.writeByte(EE_BYTE_SHOWRDSERRORS, showrdserrors);
EEPROM.writeByte(EE_BYTE_LOWLEVELSET, LowLevelSet);
EEPROM.writeByte(EE_BYTE_REGION, radio.rds.region);
EEPROM.writeByte(EE_BYTE_RDS_UNDERSCORE, radio.underscore);
EEPROM.writeByte(EE_BYTE_USBMODE, USBmode);
EEPROM.writeByte(EE_BYTE_WIFI, wifi);
EEPROM.writeByte(EE_BYTE_SUBNETCLIENT, subnetclient);
EEPROM.writeByte(EE_BYTE_SHOWSWMIBAND, showSWMIBand);
EEPROM.writeByte(EE_BYTE_RDS_FILTER, radio.rds.filter);
EEPROM.writeByte(EE_BYTE_RDS_PIERRORS, radio.rds.pierrors);
EEPROM.writeByte(EE_BYTE_USESQUELCH, usesquelch);
EEPROM.writeByte(EE_BYTE_SHOWMODULATION, showmodulation);
EEPROM.writeByte(EE_BYTE_AM_NB, amnb);
EEPROM.writeByte(EE_BYTE_FM_NB, fmnb);
EEPROM.writeByte(EE_BYTE_AUDIOMODE, audiomode);
EEPROM.writeByte(EE_BYTE_TOUCH_ROTATING, touchrotating);
EEPROM.writeUInt(EE_UINT16_LOWEDGEOIRTSET, LowEdgeOIRTSet);
EEPROM.writeUInt(EE_UINT16_HIGHEDGEOIRTSET, HighEdgeOIRTSet);
EEPROM.writeByte(EE_BYTE_HARDWARE_MODEL, hardwaremodel);
EEPROM.writeByte(EE_BYTE_POWEROPTIONS, poweroptions);
EEPROM.writeByte(EE_BYTE_CURRENTTHEME, CurrentTheme);
EEPROM.writeByte(EE_BYTE_FMDEFAULTSTEPSIZE, fmdefaultstepsize);
EEPROM.writeByte(EE_BYTE_SCREENSAVERSET, screensaverset);
EEPROM.writeInt(EE_INT16_AMLEVELOFFSET, AMLevelOffset);
EEPROM.writeByte(EE_BYTE_UNIT, unit);
EEPROM.writeByte(EE_BYTE_AF, af);
EEPROM.writeByte(EE_BYTE_STEREO, StereoToggle);
EEPROM.writeByte(EE_BYTE_BATTERY_OPTIONS, batteryoptions);
EEPROM.writeByte(EE_BYTE_AM_CO_DECT, amcodect);
EEPROM.writeByte(EE_BYTE_AM_CO_DECT_COUNT, amcodectcount);
EEPROM.writeByte(EE_BYTE_AM_RF_GAIN, amgain);
EEPROM.writeByte(EE_BYTE_SORTAF, radio.rds.sortaf);
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.writeByte(EE_BYTE_MWREGION, mwstepsize);
EEPROM.writeByte(EE_BYTE_SPISPEED, spispeed);
EEPROM.writeByte(EE_BYTE_AMSCANSENS, amscansens);
EEPROM.writeByte(EE_BYTE_FMSCANSENS, fmscansens);
EEPROM.writeByte(EE_BYTE_FREQFONT, freqfont);
EEPROM.writeByte(EE_BYTE_SKIN, CurrentSkin);
EEPROM.writeByte(EE_BYTE_XDRGTKMUTE, XDRGTKMuteScreen);
EEPROM.writeByte(EE_BYTE_FMAGC, fmagc);
EEPROM.writeByte(EE_BYTE_AMAGC, amagc);
EEPROM.writeByte(EE_BYTE_FMSI, fmsi);
EEPROM.writeByte(EE_BYTE_SCANSTART, scanstart);
EEPROM.writeByte(EE_BYTE_SCANSTOP, scanstop);
EEPROM.writeByte(EE_BYTE_SCANHOLD, scanhold);
EEPROM.writeByte(EE_BYTE_SCANMEM, scanmem);
EEPROM.writeByte(EE_BYTE_SCANCANCEL, scancancel);
EEPROM.writeByte(EE_BYTE_SCANMUTE, scanmute);
EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, autosquelch);
EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, longbandpress);
EEPROM.writeByte(EE_BYTE_SHOWCLOCK, showclock);
EEPROM.writeByte(EE_BYTE_SHOWLONGPS, showlongps);
EEPROM.writeUInt(EE_UINT16_MEMSTARTFREQ, memstartfreq);
EEPROM.writeUInt(EE_UINT16_MEMSTOPFREQ, memstopfreq);
EEPROM.writeByte(EE_BYTE_MEMSTARTPOS, memstartpos);
EEPROM.writeByte(EE_BYTE_MEMSTOPPOS, memstoppos);
EEPROM.writeByte(EE_BYTE_MEMPIONLY, mempionly);
EEPROM.writeByte(EE_BYTE_MEMDOUBLEPI, memdoublepi);
EEPROM.writeByte(EE_BYTE_WAITONLYONSIGNAL, scanholdonsignal);
EEPROM.writeByte(EE_BYTE_NTPOFFSET, NTPoffset);
EEPROM.writeByte(EE_BYTE_AUTOLOG, autolog);
EEPROM.writeByte(EE_BYTE_AUTODST, autoDST);
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, clockampm);
EEPROM.writeUInt(EE_UINT16_PICTLOCK, radio.rds.PICTlock);
EEPROM.commit();
}
void loadData() {
if (EEPROM.readByte(EE_BYTE_CHECKBYTE) != EE_CHECKBYTE_VALUE) DefaultSettings();
frequency = EEPROM.readUInt(EE_UINT16_FREQUENCY_FM);
frequency_OIRT = EEPROM.readUInt(EE_UINT16_FREQUENCY_OIRT);
VolSet = EEPROM.readByte(EE_BYTE_VOLSET);
ConverterSet = EEPROM.readUInt(EE_UINT16_CONVERTERSET);
LowEdgeSet = EEPROM.readUInt(EE_UINT16_FMLOWEDGESET);
HighEdgeSet = EEPROM.readUInt(EE_UINT16_FMHIGHEDGESET);
ContrastSet = EEPROM.readByte(EE_BYTE_CONTRASTSET);
StereoLevel = EEPROM.readByte(EE_BYTE_STEREOLEVEL);
bandFM = EEPROM.readByte(EE_BYTE_BANDFM);
bandAM = EEPROM.readByte(EE_BYTE_BANDAM);
HighCutLevel = EEPROM.readByte(EE_BYTE_HIGHCUTLEVEL);
HighCutOffset = EEPROM.readByte(EE_BYTE_HIGHCUTOFFSET);
LevelOffset = EEPROM.readByte(EE_BYTE_LEVELOFFSET);
radio.rds.rtbuffer = EEPROM.readByte(EE_BYTE_RTBUFFER);
edgebeep = EEPROM.readByte(EE_BYTE_EDGEBEEP);
softmuteam = EEPROM.readByte(EE_BYTE_SOFTMUTEAM);
softmutefm = EEPROM.readByte(EE_BYTE_SOFTMUTEFM);
frequency_AM = EEPROM.readUInt(EE_UINT16_FREQUENCY_AM);
language = EEPROM.readByte(EE_BYTE_LANGUAGE);
showrdserrors = EEPROM.readByte(EE_BYTE_SHOWRDSERRORS);
TEF = EEPROM.readByte(EE_BYTE_TEF);
displayflip = EEPROM.readByte(EE_BYTE_DISPLAYFLIP);
rotarymode = EEPROM.readByte(EE_BYTE_ROTARYMODE);
tunemode = EEPROM.readByte(EE_BYTE_TUNEMODE);
if (tunemode == TUNE_MAN) stepsize = EEPROM.readByte(EE_BYTE_STEPSIZE); else stepsize = 0;
optenc = EEPROM.readByte(EE_BYTE_OPTENC);
iMSset = EEPROM.readByte(EE_BYTE_IMSSET);
EQset = EEPROM.readByte(EE_BYTE_EQSET);
band = EEPROM.readByte(EE_BYTE_BAND);
LowLevelSet = EEPROM.readByte(EE_BYTE_LOWLEVELSET);
memorypos = EEPROM.readByte(EE_BYTE_MEMORYPOS);
radio.rds.region = EEPROM.readByte(EE_BYTE_REGION);
radio.underscore = EEPROM.readByte(EE_BYTE_RDS_UNDERSCORE);
USBmode = EEPROM.readByte(EE_BYTE_USBMODE);
wifi = EEPROM.readByte(EE_BYTE_WIFI);
subnetclient = EEPROM.readByte(EE_BYTE_SUBNETCLIENT);
showSWMIBand = EEPROM.readByte(EE_BYTE_SHOWSWMIBAND);
radio.rds.filter = EEPROM.readByte(EE_BYTE_RDS_FILTER);
radio.rds.pierrors = EEPROM.readByte(EE_BYTE_RDS_PIERRORS);
frequency_LW = EEPROM.readUInt(EE_UINT16_FREQUENCY_LW);
frequency_MW = EEPROM.readUInt(EE_UINT16_FREQUENCY_MW);
frequency_SW = EEPROM.readUInt(EE_UINT16_FREQUENCY_SW);
XDRGTK_key = EEPROM.readString(EE_STRING_XDRGTK_KEY);
usesquelch = EEPROM.readByte(EE_BYTE_USESQUELCH);
showmodulation = EEPROM.readByte(EE_BYTE_SHOWMODULATION);
amnb = EEPROM.readByte(EE_BYTE_AM_NB);
fmnb = EEPROM.readByte(EE_BYTE_FM_NB);
audiomode = EEPROM.readByte(EE_BYTE_AUDIOMODE);
touchrotating = EEPROM.readByte(EE_BYTE_TOUCH_ROTATING);
hardwaremodel = EEPROM.readByte(EE_BYTE_HARDWARE_MODEL);
poweroptions = EEPROM.readByte(EE_BYTE_POWEROPTIONS);
CurrentTheme = EEPROM.readByte(EE_BYTE_CURRENTTHEME);
fmdefaultstepsize = EEPROM.readByte(EE_BYTE_FMDEFAULTSTEPSIZE);
screensaverset = EEPROM.readByte(EE_BYTE_SCREENSAVERSET);
AMLevelOffset = EEPROM.readInt(EE_INT16_AMLEVELOFFSET);
unit = EEPROM.readByte(EE_BYTE_UNIT);
af = EEPROM.readByte(EE_BYTE_AF);
if (af == 2) radio.rds.afreg = true; else radio.rds.afreg = false;
StereoToggle = EEPROM.readByte(EE_BYTE_STEREO);
batteryoptions = EEPROM.readByte(EE_BYTE_BATTERY_OPTIONS);
amcodect = EEPROM.readByte(EE_BYTE_AM_CO_DECT);
amcodectcount = EEPROM.readByte(EE_BYTE_AM_CO_DECT_COUNT);
amgain = EEPROM.readByte(EE_BYTE_AM_RF_GAIN);
radio.rds.sortaf = EEPROM.readByte(EE_BYTE_SORTAF);
stationlistid = EEPROM.readByte(EE_BYTE_STATIONLISTID);
fmdeemphasis = EEPROM.readByte(EE_BYTE_FM_DEEMPHASIS);
BWsetFM = EEPROM.readByte(EE_BYTE_BWSET_FM);
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);
mwstepsize = EEPROM.readByte(EE_BYTE_MWREGION);
spispeed = EEPROM.readByte(EE_BYTE_SPISPEED);
amscansens = EEPROM.readByte(EE_BYTE_AMSCANSENS);
fmscansens = EEPROM.readByte(EE_BYTE_FMSCANSENS);
freqfont = EEPROM.readByte(EE_BYTE_FREQFONT);
CurrentSkin = EEPROM.readByte(EE_BYTE_SKIN);
XDRGTKMuteScreen = EEPROM.readByte(EE_BYTE_XDRGTKMUTE);
fmagc = EEPROM.readByte(EE_BYTE_FMAGC);
amagc = EEPROM.readByte(EE_BYTE_AMAGC);
fmsi = EEPROM.readByte(EE_BYTE_FMSI);
scanstart = EEPROM.readByte(EE_BYTE_SCANSTART);
scanstop = EEPROM.readByte(EE_BYTE_SCANSTOP);
scanhold = EEPROM.readByte(EE_BYTE_SCANHOLD);
scanmem = EEPROM.readByte(EE_BYTE_SCANMEM);
scancancel = EEPROM.readByte(EE_BYTE_SCANCANCEL);
scanmute = EEPROM.readByte(EE_BYTE_SCANMUTE);
autosquelch = EEPROM.readByte(EE_BYTE_AUTOSQUELCH);
longbandpress = EEPROM.readByte(EE_BYTE_LONGBANDPRESS);
showclock = EEPROM.readByte(EE_BYTE_SHOWCLOCK);
showlongps = EEPROM.readByte(EE_BYTE_SHOWLONGPS);
memstartfreq = EEPROM.readUInt(EE_UINT16_MEMSTARTFREQ);
memstopfreq = EEPROM.readUInt(EE_UINT16_MEMSTOPFREQ);
memstartpos = EEPROM.readByte(EE_BYTE_MEMSTARTPOS);
memstoppos = EEPROM.readByte(EE_BYTE_MEMSTOPPOS);
mempionly = EEPROM.readByte(EE_BYTE_MEMPIONLY);
memdoublepi = EEPROM.readByte(EE_BYTE_MEMDOUBLEPI);
scanholdonsignal = EEPROM.readByte(EE_BYTE_WAITONLYONSIGNAL);
TouchCalData[0] = EEPROM.readUInt(EE_UINT16_CALTOUCH1);
TouchCalData[1] = EEPROM.readUInt(EE_UINT16_CALTOUCH2);
TouchCalData[2] = EEPROM.readUInt(EE_UINT16_CALTOUCH3);
TouchCalData[3] = EEPROM.readUInt(EE_UINT16_CALTOUCH4);
TouchCalData[4] = EEPROM.readUInt(EE_UINT16_CALTOUCH5);
invertdisplay = EEPROM.readByte(EE_BYTE_INVERTDISPLAY);
NTPoffset = EEPROM.readByte(EE_BYTE_NTPOFFSET);
autolog = EEPROM.readByte(EE_BYTE_AUTOLOG);
autoDST = EEPROM.readByte(EE_BYTE_AUTODST);
clockampm = EEPROM.readByte(EE_BYTE_CLOCKAMPM);
logcounter = EEPROM.readUInt(EE_UINT16_LOGCOUNTER);
radio.rds.PICTlock = EEPROM.readUInt(EE_UINT16_PICTLOCK);
}
void DefaultSettings() {
EEPROM.writeByte(EE_BYTE_CHECKBYTE, EE_CHECKBYTE_VALUE);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_FM, 9500);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_OIRT, FREQ_FM_OIRT_START);
EEPROM.writeByte(EE_BYTE_VOLSET, 0);
EEPROM.writeUInt(EE_UINT16_CONVERTERSET, 0);
EEPROM.writeUInt(EE_UINT16_FMLOWEDGESET, 875);
EEPROM.writeUInt(EE_UINT16_FMHIGHEDGESET, 1080);
EEPROM.writeByte(EE_BYTE_CONTRASTSET, 50);
EEPROM.writeByte(EE_BYTE_STEREOLEVEL, 0);
EEPROM.writeByte(EE_BYTE_BANDFM, FM_BAND_ALL);
EEPROM.writeByte(EE_BYTE_BANDAM, AM_BAND_ALL);
EEPROM.writeByte(EE_BYTE_HIGHCUTLEVEL, 70);
EEPROM.writeByte(EE_BYTE_HIGHCUTOFFSET, 0);
EEPROM.writeByte(EE_BYTE_LEVELOFFSET, 0);
EEPROM.writeByte(EE_BYTE_RTBUFFER, 1);
EEPROM.writeByte(EE_BYTE_EDGEBEEP, 0);
EEPROM.writeByte(EE_BYTE_SOFTMUTEAM, 1);
EEPROM.writeByte(EE_BYTE_SOFTMUTEFM, 0);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_AM, 828);
EEPROM.writeByte(EE_BYTE_LANGUAGE, 0);
EEPROM.writeByte(EE_BYTE_SHOWRDSERRORS, 1);
EEPROM.writeByte(EE_BYTE_TEF, 0);
EEPROM.writeByte(EE_BYTE_STEPSIZE, 0);
EEPROM.writeByte(EE_BYTE_TUNEMODE, 0);
EEPROM.writeByte(EE_BYTE_OPTENC, 0);
EEPROM.writeByte(EE_BYTE_IMSSET, 1);
EEPROM.writeByte(EE_BYTE_EQSET, 1);
EEPROM.writeByte(EE_BYTE_BAND, BAND_FM);
EEPROM.writeByte(EE_BYTE_LOWLEVELSET, -15);
EEPROM.writeByte(EE_BYTE_MEMORYPOS, 0);
EEPROM.writeByte(EE_BYTE_REGION, 0);
EEPROM.writeByte(EE_BYTE_RDS_UNDERSCORE, 0);
EEPROM.writeByte(EE_BYTE_USBMODE, 0);
EEPROM.writeByte(EE_BYTE_WIFI, 0);
EEPROM.writeByte(EE_BYTE_SUBNETCLIENT, 1);
EEPROM.writeByte(EE_BYTE_SHOWSWMIBAND, 1);
EEPROM.writeByte(EE_BYTE_RDS_FILTER, 1);
EEPROM.writeByte(EE_BYTE_RDS_PIERRORS, 0);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_LW, 180);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_MW, 540);
EEPROM.writeUInt(EE_UINT16_FREQUENCY_SW, 1800);
EEPROM.writeString(EE_STRING_XDRGTK_KEY, "password");
EEPROM.writeByte(EE_BYTE_USESQUELCH, 1);
EEPROM.writeByte(EE_BYTE_SHOWMODULATION, 1);
EEPROM.writeByte(EE_BYTE_AM_NB, 0);
EEPROM.writeByte(EE_BYTE_FM_NB, 0);
EEPROM.writeByte(EE_BYTE_AUDIOMODE, 0);
EEPROM.writeByte(EE_BYTE_TOUCH_ROTATING, 0);
EEPROM.writeUInt(EE_UINT16_LOWEDGEOIRTSET, 0);
EEPROM.writeUInt(EE_UINT16_HIGHEDGEOIRTSET, 0);
EEPROM.writeByte(EE_BYTE_POWEROPTIONS, 1);
EEPROM.writeByte(EE_BYTE_CURRENTTHEME, 0);
EEPROM.writeByte(EE_BYTE_FMDEFAULTSTEPSIZE, 1);
EEPROM.writeByte(EE_BYTE_SCREENSAVERSET, 0);
EEPROM.writeInt(EE_INT16_AMLEVELOFFSET, 0);
EEPROM.writeByte(EE_BYTE_UNIT, 0);
EEPROM.writeByte(EE_BYTE_AF, 0);
EEPROM.writeByte(EE_BYTE_STEREO, 1);
EEPROM.writeByte(EE_BYTE_BATTERY_OPTIONS, BATTERY_VALUE);
EEPROM.writeByte(EE_BYTE_AM_CO_DECT, 100);
EEPROM.writeByte(EE_BYTE_AM_CO_DECT_COUNT, 3);
EEPROM.writeByte(EE_BYTE_AM_RF_GAIN, 0);
EEPROM.writeByte(EE_BYTE_SORTAF, 1);
EEPROM.writeByte(EE_BYTE_STATIONLISTID, 1);
EEPROM.writeByte(EE_BYTE_FM_DEEMPHASIS, DEEMPHASIS_50);
EEPROM.writeByte(EE_BYTE_BWSET_FM, 0);
EEPROM.writeByte(EE_BYTE_BWSET_AM, 2);
EEPROM.writeByte(EE_BYTE_BANDAUTOSW, 0);
EEPROM.writeByte(EE_BYTE_FASTPS, 1);
EEPROM.writeByte(EE_BYTE_TOT, 0);
EEPROM.writeByte(EE_BYTE_MWREGION, 0);
EEPROM.writeByte(EE_BYTE_AMSCANSENS, 4);
EEPROM.writeByte(EE_BYTE_FMSCANSENS, 4);
EEPROM.writeByte(EE_BYTE_FREQFONT, 3);
EEPROM.writeByte(EE_BYTE_SKIN, 0);
EEPROM.writeByte(EE_BYTE_XDRGTKMUTE, 0);
EEPROM.writeByte(EE_BYTE_FMAGC, 92);
EEPROM.writeByte(EE_BYTE_AMAGC, 100);
EEPROM.writeByte(EE_BYTE_FMSI, 1);
EEPROM.writeByte(EE_BYTE_SCANSTART, 0);
EEPROM.writeByte(EE_BYTE_SCANSTOP, 9);
EEPROM.writeByte(EE_BYTE_SCANHOLD, 5);
EEPROM.writeByte(EE_BYTE_SCANMEM, 1);
EEPROM.writeByte(EE_BYTE_SCANCANCEL, 0);
EEPROM.writeByte(EE_BYTE_SCANMUTE, 0);
EEPROM.writeByte(EE_BYTE_AUTOSQUELCH, 0);
EEPROM.writeByte(EE_BYTE_LONGBANDPRESS, 0);
EEPROM.writeByte(EE_BYTE_SHOWCLOCK, 1);
EEPROM.writeByte(EE_BYTE_SHOWLONGPS, 1);
EEPROM.writeUInt(EE_UINT16_MEMSTARTFREQ, 875);
EEPROM.writeUInt(EE_UINT16_MEMSTOPFREQ, 1080);
EEPROM.writeByte(EE_BYTE_MEMSTARTPOS, 1);
EEPROM.writeByte(EE_BYTE_MEMSTOPPOS, 10);
EEPROM.writeByte(EE_BYTE_MEMPIONLY, 1);
EEPROM.writeByte(EE_BYTE_MEMDOUBLEPI, 0);
EEPROM.writeByte(EE_BYTE_WAITONLYONSIGNAL, 1);
EEPROM.writeUInt(EE_UINT16_CALTOUCH1, 300);
EEPROM.writeUInt(EE_UINT16_CALTOUCH2, 3450);
EEPROM.writeUInt(EE_UINT16_CALTOUCH3, 300);
EEPROM.writeUInt(EE_UINT16_CALTOUCH4, 3450);
EEPROM.writeUInt(EE_UINT16_CALTOUCH5, 3);
EEPROM.writeByte(EE_BYTE_NTPOFFSET, 1);
EEPROM.writeByte(EE_BYTE_AUTOLOG, 1);
EEPROM.writeByte(EE_BYTE_AUTODST, 1);
EEPROM.writeByte(EE_BYTE_CLOCKAMPM, 0);
EEPROM.writeUInt(EE_UINT16_PICTLOCK, 0);
EEPROM.writeByte(EE_BYTE_SPISPEED, 7);
#ifdef DEEPELEC_DP_66X
EEPROM.writeByte(EE_BYTE_ROTARYMODE, 1);
EEPROM.writeByte(EE_BYTE_INVERTDISPLAY, 0);
EEPROM.writeByte(EE_BYTE_DISPLAYFLIP, 1);
EEPROM.writeByte(EE_BYTE_HARDWARE_MODEL, PORTABLE_TOUCH_ILI9341);
#else
EEPROM.writeByte(EE_BYTE_ROTARYMODE, 0);
EEPROM.writeByte(EE_BYTE_INVERTDISPLAY, 1);
EEPROM.writeByte(EE_BYTE_DISPLAYFLIP, 0);
EEPROM.writeByte(EE_BYTE_HARDWARE_MODEL, BASE_ILI9341);
#endif
for (int i = 0; i < EE_PRESETS_CNT; i++) {
EEPROM.writeByte(i + EE_PRESETS_BAND_START, BAND_FM);
EEPROM.writeUInt((i * 4) + EE_PRESETS_FREQUENCY_START, EE_PRESETS_FREQUENCY);
EEPROM.writeByte(i + EE_PRESET_BW_START, 0);
EEPROM.writeByte(i + EE_PRESET_MS_START, 1);
for (int y = 0; y < 9; y++) EEPROM.writeByte((i * 9) + y + EE_PRESETS_RDSPS_START, '\0');
for (int y = 0; y < 5; y++) EEPROM.writeByte((i * 5) + y + EE_PRESETS_RDSPI_START, '\0');
}
EEPROM.commit();
handleCreateNewLogbook();
}

View File

@@ -179,7 +179,6 @@ void readRds() {
dropout = true;
}
} else {
// --- RDS recovery or memory reset ---
if (dropout || memreset) {
if (!rdsstatscreen) {
if (radio.rds.region == 0) tftPrint(ACENTER, PIold, 275, advancedRDS ? 75 : 187, RDSColor, RDSColorSmooth, 28);