You've already forked TEF6686_ESP32
Compare commits
2 Commits
f0abda9158
...
6f97d420e7
| Author | SHA1 | Date | |
|---|---|---|---|
|
6f97d420e7
|
|||
|
68d76e0959
|
@@ -1,25 +1,11 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
#include <WiFi.h>
|
||||
#include <WiFiClient.h>
|
||||
#include <WiFiUdp.h>
|
||||
#include "ESP32Time.h"
|
||||
#include "TimeLib.h"
|
||||
#include "TEF6686.h"
|
||||
#include "globals.h"
|
||||
|
||||
static const char ntpServerName[] = "0.pool.ntp.org";
|
||||
static const int localPort = 8944;
|
||||
const int NTP_PACKET_SIZE = 48;
|
||||
|
||||
extern ESP32Time rtc;
|
||||
extern WiFiClient RemoteClient;
|
||||
extern WiFiUDP Udp;
|
||||
extern TEF6686 radio;
|
||||
|
||||
extern bool wifi;
|
||||
extern bool NTPupdated;
|
||||
extern bool rtcset;
|
||||
|
||||
void sendNTPpacket(IPAddress &address);
|
||||
void NTPupdate();
|
||||
time_t getNtpTime();
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "Tuner_Drv_Lithio.h"
|
||||
#include "Tuner_Interface.h"
|
||||
#include "RdsPiBuffer.hpp"
|
||||
#include "change_detector.h"
|
||||
|
||||
extern const unsigned char tuner_init_tab[] PROGMEM;
|
||||
extern const unsigned char tuner_init_tab9216[] PROGMEM;
|
||||
@@ -367,7 +368,7 @@ static const char* const oda_app_names[] {
|
||||
"To warn people in case of disasters or emergency",
|
||||
"Personal weather station",
|
||||
"Hybradio RDS-Net (for testing use, only)",
|
||||
"RDS2 – 9 bit AF lists ODA",
|
||||
"RDS2 - 9 bit AF lists ODA",
|
||||
"Enhanced RadioText / eRT",
|
||||
"Warning receiver",
|
||||
"Enhanced early warning system",
|
||||
@@ -479,13 +480,13 @@ typedef struct _rds_ {
|
||||
bool hasTA;
|
||||
bool hasEON;
|
||||
bool hasAID;
|
||||
bool hasTMC;
|
||||
Detector<bool, 1> hasTMC{false};
|
||||
bool hasAF;
|
||||
bool hasCT;
|
||||
bool hasPTYN;
|
||||
bool rtAB;
|
||||
bool rtAB32;
|
||||
bool hasRTplus;
|
||||
Detector<bool, 1> hasRTplus{false};
|
||||
bool filter;
|
||||
bool rdsreset;
|
||||
bool pierrors;
|
||||
@@ -529,7 +530,7 @@ typedef struct _logbook_ {
|
||||
|
||||
class TEF6686 {
|
||||
public:
|
||||
af_ af[51];
|
||||
af_ af[51];
|
||||
eon_ eon[21];
|
||||
rds_ rds;
|
||||
logbook_ logbook[22];
|
||||
|
||||
35
include/change_detector.h
Normal file
35
include/change_detector.h
Normal file
@@ -0,0 +1,35 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
|
||||
template <typename T, size_t MaxObservers>
|
||||
class Detector {
|
||||
public:
|
||||
explicit Detector(T initial) : value(initial) {
|
||||
for (size_t i = 0; i < MaxObservers; ++i) seen[i] = false;
|
||||
}
|
||||
|
||||
void set(const T& v) {
|
||||
if (v == value) return;
|
||||
|
||||
value = v;
|
||||
for (size_t i = 0; i < MaxObservers; ++i) seen[i] = false;
|
||||
}
|
||||
|
||||
bool changed(size_t id) {
|
||||
if (id >= MaxObservers) return false;
|
||||
|
||||
if (!seen[id]) {
|
||||
seen[id] = true;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
const T& get() const {
|
||||
return value;
|
||||
}
|
||||
|
||||
private:
|
||||
T value;
|
||||
bool seen[MaxObservers];
|
||||
};
|
||||
127
include/comms.h
127
include/comms.h
@@ -1,132 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <TFT_eSPI.h>
|
||||
#include <WiFiClient.h>
|
||||
#include "TEF6686.h"
|
||||
#include <WiFi.h>
|
||||
#include "globals.h"
|
||||
#include <Hash.h>
|
||||
#include "WiFiConnect.h"
|
||||
#include "WiFiConnectParam.h"
|
||||
|
||||
extern bool advancedRDS;
|
||||
extern bool afscreen;
|
||||
extern bool aftest;
|
||||
extern bool autosquelch;
|
||||
extern bool BWreset;
|
||||
extern bool Data_Accelerator;
|
||||
extern bool direction;
|
||||
extern bool externaltune;
|
||||
extern bool fullsearchrds;
|
||||
extern bool menu;
|
||||
extern bool RDSSPYTCP;
|
||||
extern bool RDSSPYUSB;
|
||||
extern bool RDSstatus;
|
||||
extern bool scandxmode;
|
||||
extern bool screenmute;
|
||||
extern bool seek;
|
||||
extern bool setupmode;
|
||||
extern bool softmuteam;
|
||||
extern bool softmutefm;
|
||||
extern bool SQ;
|
||||
extern bool StereoToggle;
|
||||
extern bool store;
|
||||
extern bool usesquelch;
|
||||
extern bool wifi;
|
||||
extern bool wificonnected;
|
||||
extern bool XDRGTKdata;
|
||||
extern bool XDRGTKTCP;
|
||||
extern bool XDRGTKUSB;
|
||||
extern bool XDRGTKMuteScreen;
|
||||
extern bool XDRScan;
|
||||
extern bool XDRMute;
|
||||
extern byte band;
|
||||
extern byte audiomode;
|
||||
extern byte BWset;
|
||||
extern byte BWsetRecall;
|
||||
extern byte EQset;
|
||||
extern byte fmagc;
|
||||
extern byte fmscansens;
|
||||
extern byte iMSEQ;
|
||||
extern byte iMSset;
|
||||
extern byte language;
|
||||
extern byte memorypos;
|
||||
extern byte scanhold;
|
||||
extern byte stepsize;
|
||||
extern byte subnetclient;
|
||||
extern byte TEF;
|
||||
extern byte tunemode;
|
||||
extern char buff[16];
|
||||
extern int ActiveColor;
|
||||
extern int ActiveColorSmooth;
|
||||
extern int BackgroundColor;
|
||||
extern byte fmdeemphasis;
|
||||
extern int freqold;
|
||||
extern int GreyoutColor;
|
||||
extern int InsignificantColor;
|
||||
extern int InsignificantColorSmooth;
|
||||
extern int PrimaryColor;
|
||||
extern int PrimaryColorSmooth;
|
||||
extern int RDSColor;
|
||||
extern int RDSColorSmooth;
|
||||
extern int RDSDropoutColor;
|
||||
extern int RDSDropoutColorSmooth;
|
||||
extern int scanner_filter;
|
||||
extern int SignificantColor;
|
||||
extern int SignificantColorSmooth;
|
||||
extern int Squelch;
|
||||
extern int Squelchold;
|
||||
extern int Stereostatus;
|
||||
extern int XDRBWset;
|
||||
extern int XDRBWsetold;
|
||||
extern int16_t OStatus;
|
||||
extern int16_t SStatus;
|
||||
extern int8_t LowLevelSet;
|
||||
extern int8_t VolSet;
|
||||
extern IPAddress remoteip;
|
||||
extern String cryptedpassword;
|
||||
extern String salt;
|
||||
extern String saltkey;
|
||||
extern String StereoStatusCommand;
|
||||
extern String StereoStatusCommandold;
|
||||
extern String XDRGTK_key;
|
||||
extern uint16_t BW;
|
||||
extern uint16_t MStatus;
|
||||
extern uint16_t USN;
|
||||
extern uint16_t WAM;
|
||||
extern uint8_t buff_pos;
|
||||
extern int8_t CN;
|
||||
extern unsigned int ConverterSet;
|
||||
extern unsigned int freq_scan;
|
||||
extern unsigned int frequency;
|
||||
extern unsigned int frequency_OIRT;
|
||||
extern unsigned int frequency_LW;
|
||||
extern unsigned int frequency_AM;
|
||||
extern unsigned int frequency_MW;
|
||||
extern unsigned int frequency_SW;
|
||||
extern unsigned int frequencyold;
|
||||
extern unsigned int HighEdgeOIRTSet;
|
||||
extern unsigned int LowEdgeOIRTSet;
|
||||
extern unsigned int LWHighEdgeSet;
|
||||
extern unsigned int LWLowEdgeSet;
|
||||
extern unsigned int MWHighEdgeSet;
|
||||
extern unsigned int MWLowEdgeSet;
|
||||
extern unsigned int scanner_end;
|
||||
extern unsigned int scanner_start;
|
||||
extern unsigned int scanner_step;
|
||||
extern unsigned int SWHighEdgeSet;
|
||||
extern unsigned int SWLowEdgeSet;
|
||||
extern unsigned long aftimer;
|
||||
extern unsigned long signalstatustimer;
|
||||
extern byte amagc;
|
||||
|
||||
extern TFT_eSPI tft;
|
||||
extern TEF6686 radio;
|
||||
extern WiFiClient RemoteClient;
|
||||
extern WiFiUDP Udp;
|
||||
extern WiFiServer Server;
|
||||
extern WiFiConnect wc;
|
||||
extern WebServer webserver;
|
||||
|
||||
void Communication();
|
||||
void XDRGTKRoutine();
|
||||
|
||||
401
include/globals.h
Normal file
401
include/globals.h
Normal file
@@ -0,0 +1,401 @@
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <TFT_eSPI.h>
|
||||
#include "TEF6686.h"
|
||||
#include "constants.h"
|
||||
#include "change_detector.h"
|
||||
#include "language.h"
|
||||
#include <WiFi.h>
|
||||
#include <WiFiUdp.h>
|
||||
#include <WiFiClient.h>
|
||||
#include <WebServer.h>
|
||||
#include "WiFiConnect.h"
|
||||
#include "WiFiConnectParam.h"
|
||||
#include "ESP32Time.h"
|
||||
|
||||
#define ROTARY_PIN_A 34
|
||||
#define ROTARY_PIN_B 36
|
||||
#define ROTARY_BUTTON 39
|
||||
#define PIN_POT 35
|
||||
#define BATTERY_PIN 13
|
||||
#define BANDBUTTON 4
|
||||
#define BWBUTTON 25
|
||||
#define MODEBUTTON 26
|
||||
#define CONTRASTPIN 2
|
||||
#define STANDBYLED 19
|
||||
#define SMETERPIN 27
|
||||
#define TOUCHIRQ 33
|
||||
#define EXT_IRQ 14
|
||||
|
||||
#define DYNAMIC_SPI_SPEED
|
||||
|
||||
extern bool RDSstatus;
|
||||
extern bool RDSstatusold;
|
||||
extern TFT_eSPI tft;
|
||||
extern bool dynamicspi;
|
||||
extern bool Data_Accelerator;
|
||||
extern bool advancedRDS, afmethodBold, afpage;
|
||||
extern bool afscreen, aftest, artheadold;
|
||||
extern bool autoDST, autolog, autologged;
|
||||
extern bool autosquelch, batterydetect, beepresetstart;
|
||||
extern bool beepresetstop, BWreset, bwtouchtune;
|
||||
extern bool BWtune, change, clockampm;
|
||||
extern bool compressedold, direction, dropout;
|
||||
extern bool dynamicPTYold, edgebeep, externaltune;
|
||||
extern bool findMemoryAF;
|
||||
extern bool firstTouchHandled;
|
||||
extern bool flashing;
|
||||
extern bool fmsi, fullsearchrds;
|
||||
extern bool hasafold, hasCTold, haseonold;
|
||||
extern bool initdxscan, invertdisplay, leave;
|
||||
extern bool LowLevelInit;
|
||||
extern bool memorystore;
|
||||
extern bool memreset, memtune;
|
||||
extern bool menu, menuopen;
|
||||
extern bool mwstepsize;
|
||||
extern bool nobattery;
|
||||
extern bool NTPupdated;
|
||||
extern bool optenc;
|
||||
extern bool rdsflagreset;
|
||||
extern bool rdsreset;
|
||||
extern bool rdsstatscreen;
|
||||
extern bool RDSSPYTCP, RDSSPYUSB;
|
||||
extern bool rdsstereoold;
|
||||
extern bool rotaryaccelerate;
|
||||
extern bool rtcset;
|
||||
extern bool scandxmode;
|
||||
extern bool scanholdflag;
|
||||
extern bool scanholdonsignal;
|
||||
extern bool scanmem;
|
||||
extern bool scanmute;
|
||||
extern bool screenmute;
|
||||
extern bool screensavertriggered;
|
||||
extern bool seek;
|
||||
extern bool seekinit;
|
||||
extern bool setextendbw;
|
||||
extern bool setupmode;
|
||||
extern bool showclock;
|
||||
extern bool showlongps;
|
||||
extern bool usesquelch;
|
||||
extern bool softmuteam;
|
||||
extern bool softmutefm;
|
||||
extern bool SQ;
|
||||
extern bool Stereostatusold;
|
||||
extern bool StereoToggle;
|
||||
extern bool store;
|
||||
extern bool TAold, TPold;
|
||||
extern bool touchrepeat;
|
||||
extern bool touch_detect;
|
||||
extern bool tuned;
|
||||
extern bool USBmode;
|
||||
extern bool XDRGTKdata;
|
||||
extern bool XDRGTKMuteScreen;
|
||||
extern bool XDRGTKTCP, XDRGTKUSB;
|
||||
extern bool XDRMute, XDRScan;
|
||||
extern bool wifi, wificonnected;
|
||||
extern byte af_counterold;
|
||||
extern byte aid_counterold;
|
||||
extern byte af;
|
||||
extern byte afpagenr;
|
||||
extern byte amagc;
|
||||
extern byte amnb;
|
||||
extern byte amscansens;
|
||||
extern byte audiomode;
|
||||
extern byte band;
|
||||
extern byte bandAM;
|
||||
extern byte bandFM;
|
||||
extern byte bandforbidden;
|
||||
extern byte battery;
|
||||
extern byte batteryold;
|
||||
extern byte batteryoptions;
|
||||
extern byte BWset;
|
||||
extern byte BWsettemp;
|
||||
extern byte BWsetAM;
|
||||
extern byte BWsetFM;
|
||||
extern byte BWsetRecall;
|
||||
extern byte BWtemp;
|
||||
extern byte charwidth;
|
||||
extern byte chipmodel;
|
||||
extern byte hardwaremodel;
|
||||
extern byte ContrastSet;
|
||||
extern byte CurrentSkin;
|
||||
extern byte CurrentTheme;
|
||||
extern byte displayflip;
|
||||
extern byte ECCold;
|
||||
extern byte eonptyold[20];
|
||||
extern byte EQset;
|
||||
extern byte fmagc;
|
||||
extern byte fmscansens;
|
||||
extern byte fmdefaultstepsize;
|
||||
extern byte fmnb;
|
||||
extern byte fmdeemphasis;
|
||||
extern byte freqfont;
|
||||
extern byte amcodect;
|
||||
extern byte amcodectcount;
|
||||
extern byte amgain;
|
||||
extern byte freqoldcount;
|
||||
extern byte HighCutLevel;
|
||||
extern byte HighCutOffset;
|
||||
extern byte items[10];
|
||||
extern byte iMSEQ;
|
||||
extern byte iMSset;
|
||||
extern byte language;
|
||||
extern byte longbandpress;
|
||||
extern byte memdoublepi;
|
||||
extern byte memorypos;
|
||||
extern byte memoryposold;
|
||||
extern byte memoryposstatus;
|
||||
extern byte mempionly;
|
||||
extern byte memstartpos;
|
||||
extern byte memstoppos;
|
||||
extern byte menuitem;
|
||||
extern byte menupage;
|
||||
extern byte poweroptions;
|
||||
extern byte rdsblockold;
|
||||
extern byte rdsqualityold;
|
||||
extern byte rotarymode;
|
||||
extern byte touchrotating;
|
||||
extern byte scancancel;
|
||||
extern byte scanstart;
|
||||
extern byte scanstop;
|
||||
extern byte scanhold;
|
||||
extern byte scanmodeold;
|
||||
extern byte screensaverOptions[5];
|
||||
extern byte screensaverset;
|
||||
extern byte showmodulation;
|
||||
extern byte showrdserrors;
|
||||
extern byte showSWMIBand;
|
||||
extern byte submenu;
|
||||
extern byte stationlistid;
|
||||
extern byte nowToggleSWMIBand;
|
||||
extern byte stepsize;
|
||||
extern byte StereoLevel;
|
||||
extern byte subnetclient;
|
||||
extern byte TEF, tot, tunemode;
|
||||
extern byte unit, spispeed, programTypePrevious;
|
||||
extern char buff[16];
|
||||
extern char eonpicodeold[20][6];
|
||||
extern const uint8_t* currentFont;
|
||||
extern float vPerold;
|
||||
extern int ActiveColor;
|
||||
extern int ActiveColorSmooth;
|
||||
extern int AGC;
|
||||
extern int AMLevelOffset;
|
||||
extern int BackgroundColor;
|
||||
extern int BackgroundColor1;
|
||||
extern int BackgroundColor2;
|
||||
extern int BackgroundColor3;
|
||||
extern int BackgroundColor4;
|
||||
extern int BackgroundColor5;
|
||||
extern int BarSignificantColor;
|
||||
extern int BarInsignificantColor;
|
||||
extern int BatteryValueColor;
|
||||
extern int BatteryValueColorSmooth;
|
||||
extern int batupdatetimer;
|
||||
extern int berPercentold;
|
||||
extern int BWAutoColor;
|
||||
extern int BWAutoColorSmooth;
|
||||
extern int BWOld;
|
||||
extern int bwupdatetimer;
|
||||
extern int DisplayedSegments;
|
||||
extern int ForceMono;
|
||||
extern int FrameColor;
|
||||
extern int FreqColor;
|
||||
extern int FreqColorSmooth;
|
||||
extern int freq_in;
|
||||
extern int freqold;
|
||||
extern int GreyoutColor;
|
||||
extern int InsignificantColor;
|
||||
extern int InsignificantColorSmooth;
|
||||
extern int menuoption;
|
||||
extern int ModBarInsignificantColor;
|
||||
extern int ModBarSignificantColor;
|
||||
extern int MStatusold;
|
||||
extern int offsetupdatetimer;
|
||||
extern int OStatusold;
|
||||
extern int peakholdold;
|
||||
extern int peakholdtimer;
|
||||
extern int PrimaryColor;
|
||||
extern int PrimaryColorSmooth;
|
||||
extern int RDSColor, RDSColorSmooth;
|
||||
extern int RDSDropoutColor, RDSDropoutColorSmooth;
|
||||
extern int SignificantColor;
|
||||
extern int SignificantColorSmooth;
|
||||
extern int StereoColor;
|
||||
extern int StereoColorSmooth;
|
||||
extern int WifiColorHigh;
|
||||
extern int WifiColorLow;
|
||||
extern int SquelchShow;
|
||||
extern int rotary;
|
||||
extern int rotarycounter;
|
||||
extern int rotarycounteraccelerator;
|
||||
extern int rssi;
|
||||
extern int rssiold;
|
||||
extern int scanner_filter;
|
||||
extern int SecondaryColor;
|
||||
extern int SecondaryColorSmooth;
|
||||
extern int SNRupdatetimer;
|
||||
extern int Sqstatusold;
|
||||
extern int Squelch;
|
||||
extern int Squelchold;
|
||||
extern int SStatusold;
|
||||
extern int Stereostatus;
|
||||
extern int volume;
|
||||
extern int XDRBWset;
|
||||
extern int XDRBWsetold;
|
||||
extern int xPos;
|
||||
extern int xPos2;
|
||||
extern int xPos3;
|
||||
extern int xPos4;
|
||||
extern int xPos5;
|
||||
extern int xPos6;
|
||||
extern int16_t OStatus;
|
||||
extern int16_t SAvg;
|
||||
extern int16_t SAvg2;
|
||||
extern int16_t SAvg3;
|
||||
extern int16_t SAvg4;
|
||||
extern int16_t SAvg5;
|
||||
extern int16_t SStatus;
|
||||
extern int16_t MP;
|
||||
extern int16_t US;
|
||||
extern int8_t MPold;
|
||||
extern int8_t USold;
|
||||
extern int8_t LevelOffset;
|
||||
extern int8_t LowLevelSet;
|
||||
extern int8_t NTPoffset;
|
||||
extern int8_t CN;
|
||||
extern int8_t CNold;
|
||||
extern int8_t VolSet;
|
||||
extern float batteryVold;
|
||||
extern IPAddress remoteip;
|
||||
extern String AIDString;
|
||||
extern String cryptedpassword;
|
||||
extern String ECColdString;
|
||||
extern String ECCString;
|
||||
extern String eonpsold[20];
|
||||
extern String PIold;
|
||||
extern String PSold;
|
||||
extern String ptynold;
|
||||
extern String PTYold;
|
||||
extern String rds_clock;
|
||||
extern String rds_clockold;
|
||||
extern String rds_date;
|
||||
extern String rds_dateold;
|
||||
extern String RDSSPYRDS;
|
||||
extern String RDSSPYRDSold;
|
||||
extern String RTold;
|
||||
extern String salt;
|
||||
extern String saltkey;
|
||||
extern String stationIDold;
|
||||
extern String stationStateold;
|
||||
extern String StereoStatusCommand;
|
||||
extern String StereoStatusCommandold;
|
||||
extern String SWMIBandstring;
|
||||
extern String SWMIBandstringold;
|
||||
extern String XDRGTK_key;
|
||||
extern String XDRGTKRDS;
|
||||
extern String XDRGTKRDSold;
|
||||
extern uint16_t BW;
|
||||
extern uint16_t MStatus;
|
||||
extern uint16_t SWMIBandPos;
|
||||
extern uint16_t SWMIBandPosold;
|
||||
extern uint16_t TouchCalData[5];
|
||||
extern uint16_t USN;
|
||||
extern uint16_t WAM;
|
||||
extern uint8_t buff_pos;
|
||||
extern unsigned int ConverterSet;
|
||||
extern unsigned int freq_scan;
|
||||
extern unsigned int frequency;
|
||||
extern unsigned int frequency_OIRT;
|
||||
extern unsigned int frequency_AM;
|
||||
extern unsigned int frequency_LW;
|
||||
extern unsigned int frequency_MIBand_11M;
|
||||
extern unsigned int frequency_MIBand_120M;
|
||||
extern unsigned int frequency_MIBand_13M;
|
||||
extern unsigned int frequency_MIBand_15M;
|
||||
extern unsigned int frequency_MIBand_160M;
|
||||
extern unsigned int frequency_MIBand_16M;
|
||||
extern unsigned int frequency_MIBand_19M;
|
||||
extern unsigned int frequency_MIBand_22M;
|
||||
extern unsigned int frequency_MIBand_25M;
|
||||
extern unsigned int frequency_MIBand_31M;
|
||||
extern unsigned int frequency_MIBand_41M;
|
||||
extern unsigned int frequency_MIBand_49M;
|
||||
extern unsigned int frequency_MIBand_60M;
|
||||
extern unsigned int frequency_MIBand_75M;
|
||||
extern unsigned int frequency_MIBand_90M;
|
||||
extern unsigned int frequency_MW;
|
||||
extern unsigned int frequency_SW;
|
||||
extern unsigned int frequencyold;
|
||||
extern unsigned int HighEdgeOIRTSet;
|
||||
extern unsigned int HighEdgeSet;
|
||||
extern unsigned int LowEdgeOIRTSet;
|
||||
extern unsigned int logcounter;
|
||||
extern unsigned int LowEdgeSet;
|
||||
extern unsigned int LWHighEdgeSet;
|
||||
extern unsigned int LWLowEdgeSet;
|
||||
extern unsigned int mappedfreqold[20];
|
||||
extern unsigned int mappedfreqold2[20];
|
||||
extern unsigned int mappedfreqold3[20];
|
||||
extern unsigned int memstartfreq;
|
||||
extern unsigned int memstopfreq;
|
||||
extern unsigned int MWHighEdgeSet;
|
||||
extern unsigned int MWLowEdgeSet;
|
||||
extern unsigned int scanner_end;
|
||||
extern unsigned int scanner_start;
|
||||
extern unsigned int scanner_step;
|
||||
extern unsigned int SWHighEdgeSet;
|
||||
extern unsigned int SWLowEdgeSet;
|
||||
extern unsigned long afticker;
|
||||
extern unsigned long aftickerhold;
|
||||
extern unsigned long aftimer;
|
||||
extern unsigned long autosquelchtimer;
|
||||
extern unsigned long blockcounterold[33];
|
||||
extern unsigned long eccticker;
|
||||
extern unsigned long ecctickerhold;
|
||||
extern unsigned long eonticker;
|
||||
extern unsigned long eontickerhold;
|
||||
extern unsigned long flashingtimer;
|
||||
extern unsigned long keypadtimer;
|
||||
extern unsigned long lastTouchTime;
|
||||
extern unsigned long lowsignaltimer;
|
||||
extern unsigned long ModulationpreviousMillis;
|
||||
extern unsigned long ModulationpeakPreviousMillis;
|
||||
extern unsigned long NTPtimer;
|
||||
extern unsigned long peakholdmillis;
|
||||
extern unsigned long processed_rdsblocksold[33];
|
||||
extern unsigned long pslongticker;
|
||||
extern unsigned long pslongtickerhold;
|
||||
extern unsigned long rtplusticker;
|
||||
extern unsigned long rtplustickerhold;
|
||||
extern unsigned long rtticker;
|
||||
extern unsigned long rttickerhold;
|
||||
extern unsigned long rotarytimer;
|
||||
extern unsigned long scantimer;
|
||||
extern unsigned long screensavertimer;
|
||||
extern unsigned long signalstatustimer;
|
||||
extern unsigned long tottimer;
|
||||
extern unsigned long tuningtimer;
|
||||
extern unsigned long udplogtimer;
|
||||
extern unsigned long udptimer;
|
||||
extern const size_t language_totalnumber;
|
||||
extern const size_t language_entrynumber;
|
||||
|
||||
extern mem presets[EE_PRESETS_CNT];
|
||||
extern TEF6686 radio;
|
||||
extern ESP32Time rtc;
|
||||
|
||||
extern TFT_eSprite FrequencySprite;
|
||||
extern TFT_eSprite RDSSprite;
|
||||
extern TFT_eSprite SquelchSprite;
|
||||
extern TFT_eSprite FullLineSprite;
|
||||
extern TFT_eSprite OneBigLineSprite;
|
||||
extern TFT_eSprite SignalSprite;
|
||||
extern TFT_eSprite PSSprite;
|
||||
|
||||
extern WiFiConnect wc;
|
||||
extern WiFiServer Server;
|
||||
extern WiFiClient RemoteClient;
|
||||
extern WiFiUDP Udp;
|
||||
extern WebServer webserver;
|
||||
217
include/gui.h
217
include/gui.h
@@ -1,10 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <TFT_eSPI.h>
|
||||
#include "TEF6686.h"
|
||||
#include "WiFiConnect.h"
|
||||
#include "WiFiConnectParam.h"
|
||||
#include "globals.h"
|
||||
#include "utils.h"
|
||||
#include "menugraphics.h"
|
||||
|
||||
static const char* const unitString[] = {"dBμV", "dBf", "dBm"};
|
||||
@@ -14,215 +11,6 @@ static const char* const Skin[] = {"Essential"};
|
||||
static const char* BWButtonLabelsFM[] = {"56 kHz", "64 kHz", "72 kHz", "84 kHz", "97 kHz", "114 kHz", "133 kHz", "151 kHz", "168 kHz", "184 kHz", "200 kHz", "217 kHz", "236 kHz", "254 kHz", "287 kHz", "311 kHz", "Auto", "iMS", "EQ"};
|
||||
static const char* BWButtonLabelsAM[] = {"3 kHz", "4 kHz", "6 kHz", "8 kHz"};
|
||||
|
||||
#define SMETERPIN 27
|
||||
#define CONTRASTPIN 2
|
||||
|
||||
extern bool advancedRDS;
|
||||
extern bool afmethodBold;
|
||||
extern bool afpage;
|
||||
extern bool afscreen;
|
||||
extern bool artheadold;
|
||||
extern bool autoDST;
|
||||
extern bool autolog;
|
||||
extern bool autosquelch;
|
||||
extern bool BWreset;
|
||||
extern bool BWtune;
|
||||
extern bool change;
|
||||
extern bool clockampm;
|
||||
extern bool compressedold;
|
||||
extern bool dropout;
|
||||
extern bool dynamicPTYold;
|
||||
extern bool dynamicspi;
|
||||
extern bool edgebeep;
|
||||
extern bool fmsi;
|
||||
extern bool fullsearchrds;
|
||||
extern bool hasafold;
|
||||
extern bool haseonold;
|
||||
extern bool hasrtplusold;
|
||||
extern bool hastmcold;
|
||||
extern bool LowLevelInit;
|
||||
extern bool menu;
|
||||
extern bool menuopen;
|
||||
extern bool mwstepsize;
|
||||
extern bool rdsreset;
|
||||
extern bool RDSstatus;
|
||||
extern bool RDSstatusold;
|
||||
extern bool rdsstatscreen;
|
||||
extern bool rdsstereoold;
|
||||
extern bool usesquelch;
|
||||
extern bool scandxmode;
|
||||
extern bool scanholdonsignal;
|
||||
extern bool scanmem;
|
||||
extern bool scanmute;
|
||||
extern bool setupmode;
|
||||
extern bool showclock;
|
||||
extern bool showlongps;
|
||||
extern bool softmuteam;
|
||||
extern bool softmutefm;
|
||||
extern bool Stereostatusold;
|
||||
extern bool StereoToggle;
|
||||
extern bool TAold;
|
||||
extern bool TPold;
|
||||
extern bool USBmode;
|
||||
extern bool XDRGTKMuteScreen;
|
||||
extern bool wifi;
|
||||
extern byte af;
|
||||
extern byte af_counterold;
|
||||
extern byte afpagenr;
|
||||
extern byte amagc;
|
||||
extern byte amnb;
|
||||
extern byte amscansens;
|
||||
extern byte audiomode;
|
||||
extern byte band;
|
||||
extern byte bandAM;
|
||||
extern byte bandFM;
|
||||
extern byte bandforbidden;
|
||||
extern byte batteryold;
|
||||
extern byte batteryoptions;
|
||||
extern byte BWset;
|
||||
extern byte BWsettemp;
|
||||
extern byte ContrastSet;
|
||||
extern byte CurrentSkin;
|
||||
extern byte CurrentTheme;
|
||||
extern byte ECCold;
|
||||
extern byte fmagc;
|
||||
extern byte fmscansens;
|
||||
extern byte fmdefaultstepsize;
|
||||
extern byte fmnb;
|
||||
extern byte fmdeemphasis;
|
||||
extern byte freqfont;
|
||||
extern byte EQset;
|
||||
extern byte iMSset;
|
||||
extern byte amcodect;
|
||||
extern byte amcodectcount;
|
||||
extern byte amgain;
|
||||
extern byte hardwaremodel;
|
||||
extern byte HighCutLevel;
|
||||
extern byte HighCutOffset;
|
||||
extern byte items[10];
|
||||
extern byte language;
|
||||
extern byte longbandpress;
|
||||
extern byte memorypos;
|
||||
extern byte memdoublepi;
|
||||
extern byte mempionly;
|
||||
extern byte memstartpos;
|
||||
extern byte memstoppos;
|
||||
extern byte menuitem;
|
||||
extern byte menupage;
|
||||
extern byte poweroptions;
|
||||
extern byte eonptyold[20];
|
||||
extern byte rdsblockold;
|
||||
extern byte scancancel;
|
||||
extern byte scanstart;
|
||||
extern byte scanstop;
|
||||
extern byte scanhold;
|
||||
extern byte scanmodeold;
|
||||
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;
|
||||
extern byte StereoLevel;
|
||||
extern byte submenu;
|
||||
extern byte subnetclient;
|
||||
extern byte TEF;
|
||||
extern byte tot;
|
||||
extern byte touchrotating;
|
||||
extern byte tunemode;
|
||||
extern byte unit;
|
||||
extern byte spispeed;
|
||||
extern char eonpicodeold[20][6];
|
||||
extern byte programTypePrevious;
|
||||
extern float batteryVold;
|
||||
extern float vPerold;
|
||||
extern int ActiveColor;
|
||||
extern int ActiveColorSmooth;
|
||||
extern int AMLevelOffset;
|
||||
extern int BackgroundColor;
|
||||
extern int BackgroundColor1;
|
||||
extern int BackgroundColor2;
|
||||
extern int BackgroundColor3;
|
||||
extern int BackgroundColor4;
|
||||
extern int BackgroundColor5;
|
||||
extern int BarInsignificantColor;
|
||||
extern int BarSignificantColor;
|
||||
extern int BatteryValueColor;
|
||||
extern int BatteryValueColorSmooth;
|
||||
extern int berPercentold;
|
||||
extern int BWAutoColor;
|
||||
extern int BWAutoColorSmooth;
|
||||
extern int FrameColor;
|
||||
extern int FreqColor;
|
||||
extern int FreqColorSmooth;
|
||||
extern int GreyoutColor;
|
||||
extern int InsignificantColor;
|
||||
extern int InsignificantColorSmooth;
|
||||
extern int menuoption;
|
||||
extern int ModBarInsignificantColor;
|
||||
extern int ModBarSignificantColor;
|
||||
extern int PrimaryColor;
|
||||
extern int PrimaryColorSmooth;
|
||||
extern int RDSColor;
|
||||
extern int RDSColorSmooth;
|
||||
extern int RDSDropoutColor;
|
||||
extern int RDSDropoutColorSmooth;
|
||||
extern int rssiold;
|
||||
extern int SecondaryColor;
|
||||
extern int SecondaryColorSmooth;
|
||||
extern int SignificantColor;
|
||||
extern int SignificantColorSmooth;
|
||||
extern int Squelchold;
|
||||
extern int SStatusold;
|
||||
extern int StereoColor;
|
||||
extern int StereoColorSmooth;
|
||||
extern int WifiColorHigh;
|
||||
extern int WifiColorLow;
|
||||
extern int xPos;
|
||||
extern int xPos2;
|
||||
extern int xPos3;
|
||||
extern int xPos4;
|
||||
extern int xPos5;
|
||||
extern int16_t SStatus;
|
||||
extern int8_t LevelOffset;
|
||||
extern int8_t LowLevelSet;
|
||||
extern int8_t MPold;
|
||||
extern int8_t USold;
|
||||
extern int8_t NTPoffset;
|
||||
extern int8_t VolSet;
|
||||
extern String eonpsold[20];
|
||||
extern String PIold;
|
||||
extern String PSold;
|
||||
extern String ptynold;
|
||||
extern String rds_clockold;
|
||||
extern String stationIDold;
|
||||
extern String stationStateold;
|
||||
extern String XDRGTK_key;
|
||||
extern unsigned int ConverterSet;
|
||||
extern unsigned int HighEdgeSet;
|
||||
extern unsigned int LowEdgeSet;
|
||||
extern unsigned int mappedfreqold[20];
|
||||
extern unsigned int mappedfreqold2[20];
|
||||
extern unsigned int mappedfreqold3[20];
|
||||
extern unsigned int memstartfreq;
|
||||
extern unsigned int memstopfreq;
|
||||
extern unsigned long blockcounterold[33];
|
||||
extern unsigned long processed_rdsblocksold[33];
|
||||
extern unsigned long scantimer;
|
||||
extern byte items[10];
|
||||
extern const size_t language_totalnumber;
|
||||
|
||||
extern TFT_eSPI tft;
|
||||
extern TEF6686 radio;
|
||||
extern WiFiConnect wc;
|
||||
extern TFT_eSprite MenuInfobox;
|
||||
extern TFT_eSprite FullLineSprite;
|
||||
extern TFT_eSprite OneBigLineSprite;
|
||||
extern TFT_eSprite PSSprite;
|
||||
extern TFT_eSprite FrequencySprite;
|
||||
|
||||
void BuildAFScreen();
|
||||
void BuildRDSStatScreen();
|
||||
void BuildMenu();
|
||||
@@ -234,7 +22,6 @@ void DoMenu();
|
||||
void doTheme();
|
||||
void Infoboxprint(const char* input);
|
||||
void drawButton(const char* text, byte button_number, bool active, bool selected);
|
||||
String removeNewline(String inputString);
|
||||
String shortLine(String text);
|
||||
void showMenuOpenTouchButtons();
|
||||
void showBWSelector();
|
||||
|
||||
@@ -1,35 +1,10 @@
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <TFT_eSPI.h>
|
||||
#include <WiFi.h>
|
||||
#include <FS.h>
|
||||
using fs::FS;
|
||||
#include <WebServer.h>
|
||||
#include <SPIFFS.h>
|
||||
#include "TEF6686.h"
|
||||
|
||||
extern bool autoDST;
|
||||
extern bool clockampm;
|
||||
extern bool NTPupdated;
|
||||
extern bool rtcset;
|
||||
extern bool scandxmode;
|
||||
extern byte band;
|
||||
extern byte chipmodel;
|
||||
extern byte language;
|
||||
extern byte scanhold;
|
||||
extern byte unit;
|
||||
extern int16_t SStatus;
|
||||
extern int8_t NTPoffset;
|
||||
extern unsigned int ConverterSet;
|
||||
extern unsigned int frequency;
|
||||
extern unsigned int frequency_OIRT;
|
||||
extern unsigned int logcounter;
|
||||
extern IPAddress remoteip;
|
||||
|
||||
extern TEF6686 radio;
|
||||
extern WebServer webserver;
|
||||
extern WiFiUDP Udp;
|
||||
#include "globals.h"
|
||||
|
||||
void handleRoot();
|
||||
void handleDownloadCSV();
|
||||
|
||||
136
include/rds.h
136
include/rds.h
@@ -6,141 +6,7 @@
|
||||
#include "TEF6686.h"
|
||||
#include <WiFi.h>
|
||||
#include <ESP32Time.h>
|
||||
|
||||
extern bool advancedRDS;
|
||||
extern bool afmethodBold;
|
||||
extern bool afpage;
|
||||
extern bool afscreen;
|
||||
extern bool aftest;
|
||||
extern bool autoDST;
|
||||
extern bool artheadold;
|
||||
extern bool BWreset;
|
||||
extern bool compressedold;
|
||||
extern bool clearrds;
|
||||
extern bool clockampm;
|
||||
extern bool dropout;
|
||||
extern bool dynamicPTYold;
|
||||
extern bool fullsearchrds;
|
||||
extern bool hasafold;
|
||||
extern bool hasCTold;
|
||||
extern bool haseonold;
|
||||
extern bool hasrtplusold;
|
||||
extern bool hastmcold;
|
||||
extern bool memreset;
|
||||
extern bool NTPupdated;
|
||||
extern bool rdsreset;
|
||||
extern bool RDSSPYTCP;
|
||||
extern bool RDSSPYUSB;
|
||||
extern bool RDSstatus;
|
||||
extern bool rdsstatscreen;
|
||||
extern bool rdsstereoold;
|
||||
extern bool rtcset;
|
||||
extern bool screenmute;
|
||||
extern bool setupmode;
|
||||
extern bool showclock;
|
||||
extern bool showlongps;
|
||||
extern bool TAold;
|
||||
extern bool TPold;
|
||||
extern bool wifi;
|
||||
extern bool XDRGTKTCP;
|
||||
extern bool XDRGTKUSB;
|
||||
extern byte af_counterold;
|
||||
extern byte aid_counterold;
|
||||
extern byte afpagenr;
|
||||
extern byte band;
|
||||
extern byte charwidth;
|
||||
extern byte CurrentSkin;
|
||||
extern byte ECCold;
|
||||
extern byte language;
|
||||
extern byte eonptyold[20];
|
||||
extern byte rdsblockold;
|
||||
extern byte rdsqualityold;
|
||||
extern byte showrdserrors;
|
||||
extern byte stationlistid;
|
||||
extern byte programTypePrevious;
|
||||
extern char eonpicodeold[20][6];
|
||||
extern int ActiveColor;
|
||||
extern int ActiveColorSmooth;
|
||||
extern int BackgroundColor;
|
||||
extern int BackgroundColor1;
|
||||
extern int BackgroundColor2;
|
||||
extern int BackgroundColor4;
|
||||
extern int BarSignificantColor;
|
||||
extern int BarInsignificantColor;
|
||||
extern int berPercentold;
|
||||
extern int BWAutoColor;
|
||||
extern int BWAutoColorSmooth;
|
||||
extern int FrameColor;
|
||||
extern int FreqColor;
|
||||
extern int FreqColorSmooth;
|
||||
extern int GreyoutColor;
|
||||
extern int InsignificantColor;
|
||||
extern int InsignificantColorSmooth;
|
||||
extern int PrimaryColor;
|
||||
extern int PrimaryColorSmooth;
|
||||
extern int RDSColor;
|
||||
extern int RDSColorSmooth;
|
||||
extern int RDSDropoutColor;
|
||||
extern int RDSDropoutColorSmooth;
|
||||
extern int SecondaryColor;
|
||||
extern int SecondaryColorSmooth;
|
||||
extern int SignificantColor;
|
||||
extern int SignificantColorSmooth;
|
||||
extern int xPos;
|
||||
extern int xPos2;
|
||||
extern int xPos3;
|
||||
extern int xPos4;
|
||||
extern int xPos5;
|
||||
extern int xPos6;
|
||||
extern int8_t NTPoffset;
|
||||
extern int16_t SAvg3;
|
||||
extern IPAddress remoteip;
|
||||
extern String AIDString;
|
||||
extern String ECColdString;
|
||||
extern String ECCString;
|
||||
extern String eonpsold[20];
|
||||
extern String PIold;
|
||||
extern String PSold;
|
||||
extern String ptynold;
|
||||
extern String PTYold;
|
||||
extern String rds_clock;
|
||||
extern String rds_clockold;
|
||||
extern String rds_date;
|
||||
extern String rds_dateold;
|
||||
extern String RDSSPYRDS;
|
||||
extern String RDSSPYRDSold;
|
||||
extern String RTold;
|
||||
extern String stationIDold;
|
||||
extern String stationStateold;
|
||||
extern String XDRGTKRDS;
|
||||
extern String XDRGTKRDSold;
|
||||
extern unsigned int mappedfreqold[20];
|
||||
extern unsigned int mappedfreqold2[20];
|
||||
extern unsigned int mappedfreqold3[20];
|
||||
extern unsigned long afticker;
|
||||
extern unsigned long aftickerhold;
|
||||
extern unsigned long aftimer;
|
||||
extern unsigned long blockcounterold[33];
|
||||
extern unsigned long eccticker;
|
||||
extern unsigned long ecctickerhold;
|
||||
extern unsigned long eonticker;
|
||||
extern unsigned long eontickerhold;
|
||||
extern unsigned long processed_rdsblocksold[33];
|
||||
extern unsigned long pslongticker;
|
||||
extern unsigned long pslongtickerhold;
|
||||
extern unsigned long rtplusticker;
|
||||
extern unsigned long rtplustickerhold;
|
||||
extern unsigned long rtticker;
|
||||
extern unsigned long rttickerhold;
|
||||
|
||||
extern ESP32Time rtc;
|
||||
extern TFT_eSPI tft;
|
||||
extern TEF6686 radio;
|
||||
extern WiFiClient RemoteClient;
|
||||
extern WiFiUDP Udp;
|
||||
extern TFT_eSprite FullLineSprite;
|
||||
extern TFT_eSprite RDSSprite;
|
||||
extern TFT_eSprite PSSprite;
|
||||
#include "globals.h"
|
||||
|
||||
void ShowAdvancedRDS();
|
||||
void readRds();
|
||||
|
||||
@@ -1,25 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <TFT_eSPI.h>
|
||||
#include "TEF6686.h"
|
||||
|
||||
extern TFT_eSPI tft;
|
||||
extern TEF6686 radio;
|
||||
|
||||
extern bool advancedRDS, afpage, afscreen;
|
||||
extern bool bwtouchtune, BWtune, leave;
|
||||
extern bool menu, menuopen, scandxmode;
|
||||
extern bool seek, touchrepeat;
|
||||
extern bool XDRGTKTCP, XDRGTKUSB;
|
||||
extern byte afpagenr;
|
||||
extern byte band;
|
||||
extern byte BWset, BWtemp;
|
||||
extern byte EQset, iMSEQ, iMSset;
|
||||
extern byte menuitem;
|
||||
extern byte items[10];
|
||||
extern byte menupage;
|
||||
extern int menuoption;
|
||||
#include "globals.h"
|
||||
|
||||
void doTouchEvent(uint16_t x, uint16_t y);
|
||||
|
||||
|
||||
@@ -14,4 +14,5 @@ uint16_t HSVtoRGB565(float h, float s, float v);
|
||||
String convertToUTF8(const wchar_t* input);
|
||||
String trimTrailingSpaces(String str);
|
||||
String ucs2ToUtf8(const char* ucs2Input);
|
||||
String extractUTF8Substring(const String & utf8String, size_t start, size_t length, bool underscore);
|
||||
String extractUTF8Substring(const String & utf8String, size_t start, size_t length, bool underscore);
|
||||
String removeNewline(String inputString);
|
||||
@@ -10,6 +10,7 @@
|
||||
|
||||
[env:esp32dev]
|
||||
platform = espressif32
|
||||
upload_speed = 921600
|
||||
board = esp32dev
|
||||
framework = arduino
|
||||
board_build.partitions = huge_app.csv
|
||||
|
||||
@@ -35,7 +35,7 @@ void TEF6686::TestAFEON() {
|
||||
delay(187);
|
||||
devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
|
||||
if (rds.rdsStat & (1 << 9)) {
|
||||
if (bitRead(rds.rdsStat, 9)) {
|
||||
if ((afmethodB && rds.afreg ? (((rds.rdsA >> 8) & 0xF) > 2 && ((rds.correctPI >> 8) & 0xF) > 2 && ((rds.rdsA >> 12) & 0xF) == ((rds.correctPI >> 12) & 0xF) && (rds.rdsA & 0xFF) == (rds.correctPI & 0xFF)) || rds.rdsA == rds.correctPI : rds.rdsA == rds.correctPI)) {
|
||||
af[x].checked = true;
|
||||
af[x].afvalid = true;
|
||||
@@ -85,7 +85,7 @@ uint16_t TEF6686::TestAF() {
|
||||
devTEF_Set_Cmd(TEF_FM, Cmd_Tune_To, 7, 4, af[highestIndex].frequency);
|
||||
delay(187);
|
||||
devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
if (rds.rdsStat & (1 << 9)) {
|
||||
if (bitRead(rds.rdsStat, 9)) {
|
||||
if ((afmethodB && rds.afreg ? (((rds.rdsA >> 8) & 0xF) > 2 && ((rds.correctPI >> 8) & 0xF) > 2 && ((rds.rdsA >> 12) & 0xF) == ((rds.correctPI >> 12) & 0xF) && (rds.rdsA & 0xFF) == (rds.correctPI & 0xFF)) || rds.rdsA == rds.correctPI : rds.rdsA == rds.correctPI)) {
|
||||
currentfreq = af[highestIndex].frequency;
|
||||
for (byte y = 0; y < 50; y++) {
|
||||
@@ -337,49 +337,61 @@ void TEF6686::getStatusAM(int16_t *level, uint16_t *noise, uint16_t *cochannel,
|
||||
}
|
||||
|
||||
void TEF6686::readRDS(byte showrdserrors) {
|
||||
if (rds.filter && ps_process) devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
if(rds.filter && ps_process) devTEF_Radio_Get_RDS_Status(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
else {
|
||||
if (millis() >= rdstimer + 87) {
|
||||
if(millis() >= rdstimer + 87) {
|
||||
rdstimer += 87;
|
||||
devTEF_Radio_Get_RDS_Data(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
|
||||
if ((rds.rdsStat & (1 << 14))) {
|
||||
if(bitRead(rds.rdsStat, 14)) {
|
||||
for (int i = 0; i < 22; i++) devTEF_Radio_Get_RDS_Data(&rds.rdsStat, &rds.rdsA, &rds.rdsB, &rds.rdsC, &rds.rdsD, &rds.rdsErr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bitRead(rds.rdsStat, 9)) {
|
||||
|
||||
if(bitRead(rds.rdsStat, 9)) {
|
||||
rds.hasRDS = true;
|
||||
bitStartTime = 0;
|
||||
} else {
|
||||
if (bitStartTime == 0) bitStartTime = millis();
|
||||
else if (millis() - bitStartTime >= 87) rds.hasRDS = false;
|
||||
if(bitStartTime == 0) bitStartTime = millis();
|
||||
else if(millis() - bitStartTime >= 87) rds.hasRDS = false;
|
||||
return; // No sync means no data, ever! Unless sync status changes of course
|
||||
}
|
||||
|
||||
if(bitRead(rds.rdsStat, 15) == 0) return; // No data, no fucks
|
||||
|
||||
rdsAerrorThreshold = ((rds.rdsErr >> 14) & 0x03) > showrdserrors;
|
||||
rdsBerrorThreshold = ((rds.rdsErr >> 12) & 0x03) > showrdserrors;
|
||||
rdsCerrorThreshold = ((rds.rdsErr >> 10) & 0x03) > showrdserrors;
|
||||
rdsDerrorThreshold = ((rds.rdsErr >> 8) & 0x03) > showrdserrors;
|
||||
|
||||
if (bitRead(rds.rdsStat, 9) && (rds.rdsA != previous_rdsA || rds.rdsB != previous_rdsB || rds.rdsC != previous_rdsC || rds.rdsD != previous_rdsD)) {
|
||||
rds.rdsAerror = (((rds.rdsErr >> 14) & 0x03) > 1);
|
||||
rds.rdsBerror = (((rds.rdsErr >> 12) & 0x03) > 1);
|
||||
rds.rdsCerror = (((rds.rdsErr >> 10) & 0x03) > 1);
|
||||
rds.rdsDerror = (((rds.rdsErr >> 8) & 0x03) > 1);
|
||||
uint16_t pi = 0;
|
||||
if(!rdsAerrorThreshold) pi = rds.rdsA; // Standard, if we have group A with block A available
|
||||
else if(bitRead(rds.rdsStat, 12) && !rdsCerrorThreshold) {
|
||||
// Little less standard. RDS type B groups always have PI in blocks A and C, it helps that block c of group b checkword is diffrent from the group a checkword, the tef has flag for that
|
||||
// If a station broadcasts B groups often then their PI code could get received easier in bad conditions
|
||||
pi = rds.rdsC;
|
||||
}
|
||||
|
||||
if (!rdsAerrorThreshold && afreset) {
|
||||
rds.correctPI = rds.rdsA;
|
||||
if ((rds.rdsA != previous_rdsA || rds.rdsB != previous_rdsB || rds.rdsC != previous_rdsC || rds.rdsD != previous_rdsD)) {
|
||||
rds.rdsAerror = ((rds.rdsErr >> 14) & 0x03) > 1;
|
||||
rds.rdsBerror = ((rds.rdsErr >> 12) & 0x03) > 1;
|
||||
rds.rdsCerror = ((rds.rdsErr >> 10) & 0x03) > 1;
|
||||
rds.rdsDerror = ((rds.rdsErr >> 8) & 0x03) > 1;
|
||||
|
||||
if (pi != 0 && afreset) {
|
||||
rds.correctPI = pi;
|
||||
afreset = false;
|
||||
}
|
||||
|
||||
if (((!rdsAerrorThreshold && !rdsBerrorThreshold && !rdsCerrorThreshold && !rdsDerrorThreshold) || (rds.pierrors && !errorfreepi))) {
|
||||
if (piold == 0 || rds.rdsA != piold) {
|
||||
piold = rds.rdsA;
|
||||
rds.picode[0] = (rds.rdsA >> 12) & 0xF;
|
||||
rds.picode[1] = (rds.rdsA >> 8) & 0xF;
|
||||
rds.picode[2] = (rds.rdsA >> 4) & 0xF;
|
||||
rds.picode[3] = rds.rdsA & 0xF;
|
||||
if (pi != 0 || (rds.pierrors && !errorfreepi)) {
|
||||
if (piold == 0 || pi != piold) {
|
||||
piold = pi;
|
||||
rds.picode[0] = (pi >> 12) & 0xF;
|
||||
rds.picode[1] = (pi >> 8) & 0xF;
|
||||
rds.picode[2] = (pi >> 4) & 0xF;
|
||||
rds.picode[3] = pi & 0xF;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
if (rds.picode[i] < 10) rds.picode[i] += '0';
|
||||
else rds.picode[i] += 'A' - 10;
|
||||
@@ -464,7 +476,7 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
}
|
||||
|
||||
if (!foundMatch) {
|
||||
uint16_t stationID = rds.rdsA;
|
||||
uint16_t stationID = pi;
|
||||
|
||||
// If stationID is greater than 4096
|
||||
if (stationID > 4096) {
|
||||
@@ -515,9 +527,12 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
}
|
||||
}
|
||||
|
||||
if (rds.rdsBerror && showrdserrors != 3) goto end;
|
||||
// B errors mean we can't reliably tell what this is, don't risk it.
|
||||
// And also make sure we have data in the first place, then the decoder first starts it could send just the pi code with nothing more
|
||||
if ((rds.rdsBerror && showrdserrors != 3) && bitRead(rds.rdsStat, 13) == 0) goto end;
|
||||
|
||||
rdsgroup = rds.rdsB >> 11; // Includes version bit as LSB, better for the switch statement
|
||||
if(bitRead(rds.rdsStat, 12) && (rdsgroup & 1) == 0) goto end; // Modulation says type B, but data says otherwise? Dunno what to treat it as, thus skip
|
||||
|
||||
rds.TP = (bitRead(rds.rdsB, 10));
|
||||
rds.PTY = (rds.rdsB >> 5) & 0x1F;
|
||||
@@ -1175,10 +1190,10 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
rds.aid_counter++;
|
||||
}
|
||||
|
||||
if (rds.rdsD == 0xCD46) rds.hasTMC = true;
|
||||
if (rds.rdsD == 0xCD46) rds.hasTMC.set(true);
|
||||
|
||||
if (rds.rdsD == 0x4BD7) {
|
||||
rds.hasRTplus = true;
|
||||
rds.hasRTplus.set(true);
|
||||
rtplusblock = ((rds.rdsB & 0x1F) >> 1) * 2;
|
||||
}
|
||||
|
||||
@@ -1196,7 +1211,7 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
} break;
|
||||
|
||||
case RDS_GROUP_4A: {
|
||||
if (!rdsBerrorThreshold && !rdsCerrorThreshold && !rdsDerrorThreshold && rds.ctupdate && (rds.PICTlock == rds.rdsA || rds.PICTlock == 0)) {
|
||||
if (!rdsBerrorThreshold && !rdsCerrorThreshold && !rdsDerrorThreshold && rds.ctupdate && (rds.PICTlock == pi || rds.PICTlock == 0)) {
|
||||
uint32_t mjd = (rds.rdsB & 0x03) << 15 | ((rds.rdsC >> 1) & 0x7FFF);;
|
||||
uint16_t hour, minute, day = 5, month = 1, year = 2026;
|
||||
int32_t timeoffset;
|
||||
@@ -1270,7 +1285,7 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
case RDS_GROUP_11A:
|
||||
case RDS_GROUP_12A:
|
||||
case RDS_GROUP_13A: {
|
||||
if ((!rdsBerrorThreshold && !rdsCerrorThreshold && !rdsDerrorThreshold) && rtplusblock == rdsgroup && rds.hasRTplus) {
|
||||
if ((!rdsBerrorThreshold && !rdsCerrorThreshold && !rdsDerrorThreshold) && rtplusblock == rdsgroup && rds.hasRTplus.get()) {
|
||||
rds.rdsplusTag1 = ((rds.rdsB & 0x07) << 3) + (rds.rdsC >> 13);
|
||||
rds.rdsplusTag2 = ((rds.rdsC & 0x01) << 5) + (rds.rdsD >> 11);
|
||||
uint16_t start_marker_1 = (rds.rdsC >> 7) & 0x3F;
|
||||
@@ -1347,7 +1362,7 @@ void TEF6686::readRDS(byte showrdserrors) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!rdsBerrorThreshold && rdsgroup == 16 && (bitRead(rds.rdsB, 15))) rds.hasTMC = true;
|
||||
if (!rdsBerrorThreshold && rdsgroup == RDS_GROUP_8A && (bitRead(rds.rdsB, 15))) rds.hasTMC.set(true);
|
||||
|
||||
if ((!rdsBerrorThreshold && !rdsCerrorThreshold && !rdsDerrorThreshold) && DABAFblock == rdsgroup && rds.hasDABAF) {
|
||||
rds.dabaffreq = (rds.rdsC * 16);
|
||||
@@ -1586,9 +1601,11 @@ void TEF6686::clearRDS(bool fullsearchrds) {
|
||||
rds.PTY = 32;
|
||||
rds.hasECC = rds.hasRT = rds.hasRDS = false;
|
||||
rds.TP = rds.hasAF = rds.hasTA = false;
|
||||
rds.hasEON = rds.hasCT = rds.hasTMC = false;
|
||||
rds.hasEON = rds.hasCT = false;
|
||||
rds.hasAID = rds.hasPTYN = rds.hasLongPS = false;
|
||||
rds.hasRTplus = rds.hasDABAF = rds.hasEnhancedRT = false;
|
||||
rds.hasRTplus.set(false);
|
||||
rds.hasTMC.set(false);
|
||||
rds.hasDABAF = rds.hasEnhancedRT = false;
|
||||
rt_process = ps_process = pslong_process = false;
|
||||
rds.rdsreset = true;
|
||||
rds.hasArtificialhead = rds.hasCompressed = false;
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
#include "TEF6686.h"
|
||||
#include "globals.h"
|
||||
#include "Tuner_Patch_Lithio_V102_p224.h"
|
||||
#include "Tuner_Patch_Lithio_V205_p512.h"
|
||||
#include <Wire.h>
|
||||
|
||||
bool Data_Accelerator = false;
|
||||
|
||||
const unsigned char tuner_init_tab[] PROGMEM = {
|
||||
9, 0x20, 0x36, 0x01, 0x00, 0x00, 0x01, 0x68, 0x01, 0x2C,
|
||||
7, 0x20, 0x37, 0x01, 0x00, 0x00, 0x0F, 0xA0,
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
#include "comms.h"
|
||||
#include "constants.h"
|
||||
#include <EEPROM.h>
|
||||
|
||||
extern mem presets[];
|
||||
|
||||
382
src/globals.cpp
Normal file
382
src/globals.cpp
Normal file
@@ -0,0 +1,382 @@
|
||||
#include "globals.h"
|
||||
|
||||
bool RDSstatus;
|
||||
bool RDSstatusold;
|
||||
#ifdef ARS
|
||||
TFT_eSPI tft = TFT_eSPI(320, 240);
|
||||
#else
|
||||
TFT_eSPI tft = TFT_eSPI(240, 320);
|
||||
#endif
|
||||
|
||||
#ifdef DYNAMIC_SPI_SPEED
|
||||
bool dynamicspi = true;
|
||||
#else
|
||||
bool dynamicspi = false;
|
||||
#endif
|
||||
|
||||
bool Data_Accelerator = false;
|
||||
|
||||
bool advancedRDS, afmethodBold, afpage;
|
||||
bool afscreen, aftest, artheadold;
|
||||
bool autoDST, autolog, autologged;
|
||||
bool autosquelch = true, batterydetect = true, beepresetstart;
|
||||
bool beepresetstop, BWreset, bwtouchtune;
|
||||
bool BWtune, change, clockampm;
|
||||
bool compressedold, direction, dropout;
|
||||
bool dynamicPTYold, edgebeep, externaltune;
|
||||
bool findMemoryAF;
|
||||
bool firstTouchHandled = false;
|
||||
bool flashing;
|
||||
bool fmsi, fullsearchrds;
|
||||
bool hasafold, hasCTold, haseonold;
|
||||
bool initdxscan, invertdisplay, leave;
|
||||
bool LowLevelInit;
|
||||
bool memorystore;
|
||||
bool memreset, memtune;
|
||||
bool menu, menuopen;
|
||||
bool mwstepsize;
|
||||
bool nobattery;
|
||||
bool NTPupdated;
|
||||
bool optenc;
|
||||
bool rdsflagreset;
|
||||
bool rdsreset;
|
||||
bool rdsstatscreen;
|
||||
bool RDSSPYTCP, RDSSPYUSB;
|
||||
bool rdsstereoold;
|
||||
bool rotaryaccelerate = true;
|
||||
bool rtcset;
|
||||
bool scandxmode;
|
||||
bool scanholdflag;
|
||||
bool scanholdonsignal;
|
||||
bool scanmem;
|
||||
bool scanmute;
|
||||
bool screenmute;
|
||||
bool screensavertriggered = false;
|
||||
bool seek;
|
||||
bool seekinit;
|
||||
bool setextendbw;
|
||||
bool setupmode;
|
||||
bool showclock;
|
||||
bool showlongps;
|
||||
bool usesquelch;
|
||||
bool softmuteam;
|
||||
bool softmutefm;
|
||||
bool SQ;
|
||||
bool Stereostatusold;
|
||||
bool StereoToggle;
|
||||
bool store;
|
||||
bool TAold, TPold;
|
||||
bool touchrepeat = false;
|
||||
bool touch_detect;
|
||||
bool tuned;
|
||||
bool USBmode;
|
||||
bool XDRGTKdata;
|
||||
bool XDRGTKMuteScreen;
|
||||
bool XDRGTKTCP, XDRGTKUSB;
|
||||
bool XDRMute, XDRScan;
|
||||
bool wifi, wificonnected;
|
||||
byte af_counterold;
|
||||
byte aid_counterold;
|
||||
byte af;
|
||||
byte afpagenr;
|
||||
byte amagc;
|
||||
byte amnb;
|
||||
byte amscansens;
|
||||
byte audiomode;
|
||||
byte band;
|
||||
byte bandAM;
|
||||
byte bandFM;
|
||||
byte bandforbidden;
|
||||
byte battery;
|
||||
byte batteryold;
|
||||
byte batteryoptions;
|
||||
byte BWset;
|
||||
byte BWsettemp;
|
||||
byte BWsetAM;
|
||||
byte BWsetFM;
|
||||
byte BWsetRecall;
|
||||
byte BWtemp;
|
||||
byte charwidth = 8;
|
||||
byte chipmodel;
|
||||
byte hardwaremodel;
|
||||
byte ContrastSet;
|
||||
byte CurrentSkin;
|
||||
byte CurrentTheme;
|
||||
byte displayflip;
|
||||
byte ECCold;
|
||||
byte eonptyold[20];
|
||||
byte EQset;
|
||||
byte fmagc;
|
||||
byte fmscansens;
|
||||
byte fmdefaultstepsize;
|
||||
byte fmnb;
|
||||
byte fmdeemphasis;
|
||||
byte freqfont;
|
||||
byte amcodect;
|
||||
byte amcodectcount;
|
||||
byte amgain;
|
||||
byte freqoldcount;
|
||||
byte HighCutLevel;
|
||||
byte HighCutOffset;
|
||||
byte items[10] = {10, static_cast<byte>(dynamicspi ? 10 : 9), 7, 10, 10, 10, 9, 10, 10, 9};
|
||||
byte iMSEQ;
|
||||
byte iMSset;
|
||||
byte language;
|
||||
byte longbandpress;
|
||||
byte memdoublepi;
|
||||
byte memorypos;
|
||||
byte memoryposold;
|
||||
byte memoryposstatus;
|
||||
byte mempionly;
|
||||
byte memstartpos;
|
||||
byte memstoppos;
|
||||
byte menuitem;
|
||||
byte menupage;
|
||||
byte poweroptions;
|
||||
byte rdsblockold;
|
||||
byte rdsqualityold;
|
||||
byte rotarymode;
|
||||
byte touchrotating;
|
||||
byte scancancel;
|
||||
byte scanstart;
|
||||
byte scanstop;
|
||||
byte scanhold;
|
||||
byte scanmodeold;
|
||||
byte screensaverOptions[5] = {0, 3, 10, 30, 60};
|
||||
byte screensaverset;
|
||||
byte showmodulation;
|
||||
byte showrdserrors;
|
||||
byte showSWMIBand;
|
||||
byte submenu;
|
||||
byte stationlistid;
|
||||
byte nowToggleSWMIBand = 1;
|
||||
byte stepsize;
|
||||
byte StereoLevel;
|
||||
byte subnetclient;
|
||||
byte TEF, tot, tunemode;
|
||||
byte unit, spispeed, programTypePrevious;
|
||||
char buff[16];
|
||||
char eonpicodeold[20][6];
|
||||
const uint8_t* currentFont = nullptr;
|
||||
float vPerold;
|
||||
int ActiveColor;
|
||||
int ActiveColorSmooth;
|
||||
int AGC;
|
||||
int AMLevelOffset;
|
||||
int BackgroundColor;
|
||||
int BackgroundColor1;
|
||||
int BackgroundColor2;
|
||||
int BackgroundColor3;
|
||||
int BackgroundColor4;
|
||||
int BackgroundColor5;
|
||||
int BarSignificantColor;
|
||||
int BarInsignificantColor;
|
||||
int BatteryValueColor;
|
||||
int BatteryValueColorSmooth;
|
||||
int batupdatetimer;
|
||||
int berPercentold;
|
||||
int BWAutoColor;
|
||||
int BWAutoColorSmooth;
|
||||
int BWOld;
|
||||
int bwupdatetimer;
|
||||
int DisplayedSegments;
|
||||
int ForceMono;
|
||||
int FrameColor;
|
||||
int FreqColor;
|
||||
int FreqColorSmooth;
|
||||
int freq_in = 0;
|
||||
int freqold;
|
||||
int GreyoutColor;
|
||||
int InsignificantColor;
|
||||
int InsignificantColorSmooth;
|
||||
int menuoption = ITEM1;
|
||||
int ModBarInsignificantColor;
|
||||
int ModBarSignificantColor;
|
||||
int MStatusold;
|
||||
int offsetupdatetimer;
|
||||
int OStatusold;
|
||||
int peakholdold;
|
||||
int peakholdtimer;
|
||||
int PrimaryColor;
|
||||
int PrimaryColorSmooth;
|
||||
int RDSColor, RDSColorSmooth;
|
||||
int RDSDropoutColor, RDSDropoutColorSmooth;
|
||||
int SignificantColor;
|
||||
int SignificantColorSmooth;
|
||||
int StereoColor;
|
||||
int StereoColorSmooth;
|
||||
int WifiColorHigh;
|
||||
int WifiColorLow;
|
||||
int SquelchShow;
|
||||
int rotary;
|
||||
int rotarycounter;
|
||||
int rotarycounteraccelerator;
|
||||
int rssi;
|
||||
int rssiold = 200;
|
||||
int scanner_filter;
|
||||
int SecondaryColor;
|
||||
int SecondaryColorSmooth;
|
||||
int SNRupdatetimer;
|
||||
int Sqstatusold;
|
||||
int Squelch;
|
||||
int Squelchold;
|
||||
int SStatusold;
|
||||
int Stereostatus;
|
||||
int volume;
|
||||
int XDRBWset;
|
||||
int XDRBWsetold;
|
||||
int xPos;
|
||||
int xPos2;
|
||||
int xPos3;
|
||||
int xPos4;
|
||||
int xPos5;
|
||||
int xPos6;
|
||||
int16_t OStatus;
|
||||
int16_t SAvg;
|
||||
int16_t SAvg2;
|
||||
int16_t SAvg3;
|
||||
int16_t SAvg4;
|
||||
int16_t SAvg5;
|
||||
int16_t SStatus;
|
||||
int16_t MP;
|
||||
int16_t US;
|
||||
int8_t MPold = 0;
|
||||
int8_t USold = 0;
|
||||
int8_t LevelOffset;
|
||||
int8_t LowLevelSet;
|
||||
int8_t NTPoffset;
|
||||
int8_t CN;
|
||||
int8_t CNold;
|
||||
int8_t VolSet;
|
||||
float batteryVold;
|
||||
IPAddress remoteip;
|
||||
String AIDString;
|
||||
String cryptedpassword;
|
||||
String ECColdString;
|
||||
String ECCString;
|
||||
String eonpsold[20];
|
||||
String PIold;
|
||||
String PSold;
|
||||
String ptynold = " ";
|
||||
String PTYold;
|
||||
String rds_clock;
|
||||
String rds_clockold;
|
||||
String rds_date;
|
||||
String rds_dateold;
|
||||
String RDSSPYRDS;
|
||||
String RDSSPYRDSold;
|
||||
String RTold;
|
||||
String salt;
|
||||
String saltkey = " ";
|
||||
String stationIDold;
|
||||
String stationStateold;
|
||||
String StereoStatusCommand;
|
||||
String StereoStatusCommandold;
|
||||
String SWMIBandstring = String();
|
||||
String SWMIBandstringold = String();
|
||||
String XDRGTK_key;
|
||||
String XDRGTKRDS;
|
||||
String XDRGTKRDSold;
|
||||
uint16_t BW;
|
||||
uint16_t MStatus;
|
||||
uint16_t SWMIBandPos;
|
||||
uint16_t SWMIBandPosold;
|
||||
uint16_t TouchCalData[5];
|
||||
uint16_t USN;
|
||||
uint16_t WAM;
|
||||
uint8_t buff_pos;
|
||||
unsigned int ConverterSet;
|
||||
unsigned int freq_scan;
|
||||
unsigned int frequency;
|
||||
unsigned int frequency_OIRT;
|
||||
unsigned int frequency_AM;
|
||||
unsigned int frequency_LW;
|
||||
unsigned int frequency_MIBand_11M;
|
||||
unsigned int frequency_MIBand_120M;
|
||||
unsigned int frequency_MIBand_13M;
|
||||
unsigned int frequency_MIBand_15M;
|
||||
unsigned int frequency_MIBand_160M;
|
||||
unsigned int frequency_MIBand_16M;
|
||||
unsigned int frequency_MIBand_19M;
|
||||
unsigned int frequency_MIBand_22M;
|
||||
unsigned int frequency_MIBand_25M;
|
||||
unsigned int frequency_MIBand_31M;
|
||||
unsigned int frequency_MIBand_41M;
|
||||
unsigned int frequency_MIBand_49M;
|
||||
unsigned int frequency_MIBand_60M;
|
||||
unsigned int frequency_MIBand_75M;
|
||||
unsigned int frequency_MIBand_90M;
|
||||
unsigned int frequency_MW;
|
||||
unsigned int frequency_SW;
|
||||
unsigned int frequencyold;
|
||||
unsigned int HighEdgeOIRTSet;
|
||||
unsigned int HighEdgeSet;
|
||||
unsigned int LowEdgeOIRTSet;
|
||||
unsigned int logcounter;
|
||||
unsigned int LowEdgeSet;
|
||||
unsigned int LWHighEdgeSet;
|
||||
unsigned int LWLowEdgeSet;
|
||||
unsigned int mappedfreqold[20];
|
||||
unsigned int mappedfreqold2[20];
|
||||
unsigned int mappedfreqold3[20];
|
||||
unsigned int memstartfreq;
|
||||
unsigned int memstopfreq;
|
||||
unsigned int MWHighEdgeSet;
|
||||
unsigned int MWLowEdgeSet;
|
||||
unsigned int scanner_end;
|
||||
unsigned int scanner_start;
|
||||
unsigned int scanner_step;
|
||||
unsigned int SWHighEdgeSet;
|
||||
unsigned int SWLowEdgeSet;
|
||||
unsigned long afticker;
|
||||
unsigned long aftickerhold;
|
||||
unsigned long aftimer;
|
||||
unsigned long autosquelchtimer;
|
||||
unsigned long blockcounterold[33];
|
||||
unsigned long eccticker;
|
||||
unsigned long ecctickerhold;
|
||||
unsigned long eonticker;
|
||||
unsigned long eontickerhold;
|
||||
unsigned long flashingtimer;
|
||||
unsigned long keypadtimer;
|
||||
unsigned long lastTouchTime = 0;
|
||||
unsigned long lowsignaltimer;
|
||||
unsigned long ModulationpreviousMillis;
|
||||
unsigned long ModulationpeakPreviousMillis;
|
||||
unsigned long NTPtimer;
|
||||
unsigned long peakholdmillis;
|
||||
unsigned long processed_rdsblocksold[33];
|
||||
unsigned long pslongticker;
|
||||
unsigned long pslongtickerhold;
|
||||
unsigned long rtplusticker;
|
||||
unsigned long rtplustickerhold;
|
||||
unsigned long rtticker;
|
||||
unsigned long rttickerhold;
|
||||
unsigned long rotarytimer;
|
||||
unsigned long scantimer;
|
||||
unsigned long screensavertimer;
|
||||
unsigned long signalstatustimer;
|
||||
unsigned long tottimer;
|
||||
unsigned long tuningtimer;
|
||||
unsigned long udplogtimer;
|
||||
unsigned long udptimer;
|
||||
const size_t language_totalnumber = sizeof(myLanguage) / sizeof(myLanguage[0]);
|
||||
const size_t language_entrynumber = sizeof(myLanguage[0]) / sizeof(myLanguage[0][0]);
|
||||
|
||||
mem presets[EE_PRESETS_CNT];
|
||||
TEF6686 radio;
|
||||
ESP32Time rtc(0);
|
||||
|
||||
TFT_eSprite FrequencySprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite RDSSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite SquelchSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite FullLineSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite OneBigLineSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite SignalSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite PSSprite = TFT_eSprite(&tft);
|
||||
|
||||
WiFiConnect wc;
|
||||
WiFiServer Server(7373);
|
||||
WiFiClient RemoteClient;
|
||||
WiFiUDP Udp;
|
||||
WebServer webserver(80);
|
||||
37
src/gui.cpp
37
src/gui.cpp
@@ -1,6 +1,4 @@
|
||||
#include "gui.h"
|
||||
#include "constants.h"
|
||||
#include <WiFi.h>
|
||||
#include <Wire.h>
|
||||
#include <EEPROM.h>
|
||||
#include <cstring>
|
||||
@@ -2986,7 +2984,6 @@ void BuildAdvancedRDS() {
|
||||
af_counterold = 254;
|
||||
TAold = false;
|
||||
TPold = false;
|
||||
hastmcold = false;
|
||||
dynamicPTYold = false;
|
||||
artheadold = false;
|
||||
compressedold = false;
|
||||
@@ -2994,7 +2991,6 @@ void BuildAdvancedRDS() {
|
||||
hasafold = false;
|
||||
haseonold = false;
|
||||
BWreset = true;
|
||||
hasrtplusold = false;
|
||||
afmethodBold = false;
|
||||
rds_clockold = "";
|
||||
dropout = false;
|
||||
@@ -3110,7 +3106,6 @@ void BuildDisplay() {
|
||||
batteryold = 6;
|
||||
batteryVold = 0;
|
||||
vPerold = 0;
|
||||
hasrtplusold = false;
|
||||
TAold = false;
|
||||
TPold = false;
|
||||
haseonold = false;
|
||||
@@ -3219,7 +3214,8 @@ void MenuUpDown(bool dir) {
|
||||
switch (tot) {
|
||||
case 0: tot = 15; break;
|
||||
case 15: tot = 30; break;
|
||||
case 30: tot = 60; break;
|
||||
case 30: tot = 45; break;
|
||||
case 45: tot = 60; break;
|
||||
case 60: tot = 90; break;
|
||||
default: tot = 0; break;
|
||||
}
|
||||
@@ -3227,7 +3223,8 @@ void MenuUpDown(bool dir) {
|
||||
switch (tot) {
|
||||
case 15: tot = 0; break;
|
||||
case 30: tot = 15; break;
|
||||
case 60: tot = 30; break;
|
||||
case 45: tot = 30; break;
|
||||
case 60: tot = 45; break;
|
||||
case 90: tot = 60; break;
|
||||
default: tot = 90; break;
|
||||
}
|
||||
@@ -5586,18 +5583,6 @@ void Infoboxprint(const char* input) {
|
||||
}
|
||||
}
|
||||
|
||||
String removeNewline(String inputString) {
|
||||
String outputString = "";
|
||||
for (int i = 0; i < inputString.length(); i++) {
|
||||
if (inputString[i] == '\n') {
|
||||
outputString += ' ';
|
||||
} else {
|
||||
outputString += inputString[i];
|
||||
}
|
||||
}
|
||||
return outputString;
|
||||
}
|
||||
|
||||
void drawButton(const char* text, byte button_number, bool active, bool selected) {
|
||||
const int buttonWidth = 70;
|
||||
const int buttonHeight = 30;
|
||||
@@ -5628,7 +5613,7 @@ void drawButton(const char* text, byte button_number, bool active, bool selected
|
||||
|
||||
|
||||
// Draw the button fill
|
||||
tft.pushImage (x, y, 70, 30, (CurrentTheme == 7 ? bwselector_wo : bwselector));
|
||||
tft.pushImage(x, y, 70, 30, (CurrentTheme == 7 ? bwselector_wo : bwselector));
|
||||
|
||||
|
||||
// Draw the small line at the bottom (narrower, centered, and 3px up)
|
||||
@@ -5644,17 +5629,13 @@ void drawButton(const char* text, byte button_number, bool active, bool selected
|
||||
|
||||
String shortLine(String text) {
|
||||
String tempText = text;
|
||||
|
||||
if (PSSprite.textWidth(tempText + "...") > 155) { // Include "..." in width check
|
||||
if (PSSprite.textWidth(tempText + "...") > 155) {
|
||||
while (PSSprite.textWidth(tempText + "...") > 155 && tempText.length() > 0) {
|
||||
// Safely remove the last UTF-8 character
|
||||
int lastCharIndex = tempText.length() - 1;
|
||||
while (lastCharIndex > 0 && (tempText[lastCharIndex] & 0xC0) == 0x80) {
|
||||
lastCharIndex--; // Skip over continuation bytes
|
||||
}
|
||||
tempText = tempText.substring(0, lastCharIndex); // Remove last character
|
||||
while (lastCharIndex > 0 && (tempText[lastCharIndex] & 0xC0) == 0x80) lastCharIndex--;
|
||||
tempText = tempText.substring(0, lastCharIndex);
|
||||
}
|
||||
text = tempText + "..."; // Add "..." to the truncated text
|
||||
text = tempText + "...";
|
||||
}
|
||||
return text;
|
||||
}
|
||||
@@ -1,5 +1,4 @@
|
||||
#include "logbook.h"
|
||||
#include "constants.h"
|
||||
#include <EEPROM.h>
|
||||
|
||||
String UDPlogold = "";
|
||||
@@ -413,13 +412,13 @@ void sendUDPlog() {
|
||||
}
|
||||
|
||||
String RTPLUS = "";
|
||||
if (radio.rds.hasRTplus) RTPLUS += radio.rds.RTContent1 + ";" + radio.rds.RTContent2;
|
||||
if (radio.rds.hasRTplus.get()) RTPLUS += radio.rds.RTContent1 + ";" + radio.rds.RTContent2;
|
||||
|
||||
// Construct the data row to send via UDP
|
||||
String row = CHIP + "," + VERSION + "," + String(scandxmode) + "," +
|
||||
currentDateTime + "," + frequencyFormatted + "," + String(radio.rds.picode).substring(0, 4) + "," +
|
||||
signal + "," + String(radio.getStereoStatus()) + "," + String(radio.rds.hasTA) + "," +
|
||||
String(radio.rds.TP) + "," + String(radio.rds.hasTMC) + "," + String(radio.rds.PTY) + "," +
|
||||
String(radio.rds.TP) + "," + String(radio.rds.hasTMC.get()) + "," + String(radio.rds.PTY) + "," +
|
||||
ECC + "," + stationName + "," + radioTextModified + "," +
|
||||
AF + "," + EON + "," + RTPLUS + "\n";
|
||||
|
||||
|
||||
415
src/main.cpp
415
src/main.cpp
@@ -1,19 +1,14 @@
|
||||
#pragma region includes
|
||||
#include "soc/soc.h"
|
||||
#include "soc/rtc_cntl_reg.h"
|
||||
#include <WiFiClient.h>
|
||||
#include <EEPROM.h>
|
||||
#include <Wire.h>
|
||||
#include <TimeLib.h>
|
||||
#include <TFT_eSPI.h>
|
||||
#include <Hash.h>
|
||||
#include <FS.h>
|
||||
#include <TimeLib.h>
|
||||
using fs::FS;
|
||||
#include <WebServer.h>
|
||||
#include <SPIFFS.h>
|
||||
#include "NTPupdate.h"
|
||||
#include <WiFiConnect.h>
|
||||
#include <WiFiConnectParam.h>
|
||||
#include "FONT16.h"
|
||||
#include "FONT16_CHS.h"
|
||||
#include "FONT28.h"
|
||||
@@ -29,403 +24,7 @@ using fs::FS;
|
||||
#include "touch.h"
|
||||
#include "logbook.h"
|
||||
#include "utils.h"
|
||||
#pragma endregion
|
||||
|
||||
#define ROTARY_PIN_A 34
|
||||
#define ROTARY_PIN_B 36
|
||||
#define ROTARY_BUTTON 39
|
||||
#define PIN_POT 35
|
||||
#define BATTERY_PIN 13
|
||||
#define BANDBUTTON 4
|
||||
#define BWBUTTON 25
|
||||
#define MODEBUTTON 26
|
||||
#define CONTRASTPIN 2
|
||||
#define STANDBYLED 19
|
||||
#define SMETERPIN 27
|
||||
#define TOUCHIRQ 33
|
||||
#define EXT_IRQ 14
|
||||
|
||||
#define DYNAMIC_SPI_SPEED
|
||||
|
||||
#pragma region global definitions
|
||||
#ifdef ARS
|
||||
TFT_eSPI tft = TFT_eSPI(320, 240);
|
||||
#else
|
||||
TFT_eSPI tft = TFT_eSPI(240, 320);
|
||||
#endif
|
||||
|
||||
#ifdef DYNAMIC_SPI_SPEED
|
||||
bool dynamicspi = true;
|
||||
#else
|
||||
bool dynamicspi = false;
|
||||
#endif
|
||||
|
||||
bool advancedRDS, afmethodBold, afpage;
|
||||
bool afscreen, aftest, artheadold;
|
||||
bool autoDST, autolog, autologged;
|
||||
bool autosquelch = true, batterydetect = true, beepresetstart;
|
||||
bool beepresetstop, BWreset, bwtouchtune;
|
||||
bool BWtune, change, clockampm;
|
||||
bool compressedold, direction, dropout;
|
||||
bool dynamicPTYold, edgebeep, externaltune;
|
||||
bool findMemoryAF;
|
||||
bool firstTouchHandled = false;
|
||||
bool flashing;
|
||||
bool fmsi, fullsearchrds;
|
||||
bool hasafold, hasCTold, haseonold;
|
||||
bool hasrtplusold, hastmcold;
|
||||
bool initdxscan, invertdisplay, leave;
|
||||
bool LowLevelInit;
|
||||
bool memorystore;
|
||||
bool memreset, memtune;
|
||||
bool menu, menuopen;
|
||||
bool mwstepsize;
|
||||
bool nobattery;
|
||||
bool NTPupdated;
|
||||
bool optenc;
|
||||
bool rdsflagreset;
|
||||
bool rdsreset;
|
||||
bool rdsstatscreen;
|
||||
bool RDSSPYTCP, RDSSPYUSB;
|
||||
bool RDSstatus, RDSstatusold;
|
||||
bool rdsstereoold;
|
||||
bool rotaryaccelerate = true;
|
||||
bool rtcset;
|
||||
bool scandxmode;
|
||||
bool scanholdflag;
|
||||
bool scanholdonsignal;
|
||||
bool scanmem;
|
||||
bool scanmute;
|
||||
bool screenmute;
|
||||
bool screensavertriggered = false;
|
||||
bool seek;
|
||||
bool seekinit;
|
||||
bool setextendbw;
|
||||
bool setupmode;
|
||||
bool showclock;
|
||||
bool showlongps;
|
||||
bool usesquelch;
|
||||
bool softmuteam;
|
||||
bool softmutefm;
|
||||
bool SQ;
|
||||
bool Stereostatusold;
|
||||
bool StereoToggle;
|
||||
bool store;
|
||||
bool TAold, TPold;
|
||||
bool touchrepeat = false;
|
||||
bool touch_detect;
|
||||
bool tuned;
|
||||
bool USBmode;
|
||||
bool XDRGTKdata;
|
||||
bool XDRGTKMuteScreen;
|
||||
bool XDRGTKTCP, XDRGTKUSB;
|
||||
bool XDRMute, XDRScan;
|
||||
bool wifi, wificonnected;
|
||||
byte af_counterold;
|
||||
byte aid_counterold;
|
||||
byte af;
|
||||
byte afpagenr;
|
||||
byte amagc;
|
||||
byte amnb;
|
||||
byte amscansens;
|
||||
byte audiomode;
|
||||
byte band;
|
||||
byte bandAM;
|
||||
byte bandFM;
|
||||
byte bandforbidden;
|
||||
byte battery;
|
||||
byte batteryold;
|
||||
byte batteryoptions;
|
||||
byte BWset;
|
||||
byte BWsettemp;
|
||||
byte BWsetAM;
|
||||
byte BWsetFM;
|
||||
byte BWsetRecall;
|
||||
byte BWtemp;
|
||||
byte charwidth = 8;
|
||||
byte chipmodel;
|
||||
byte hardwaremodel;
|
||||
byte ContrastSet;
|
||||
byte CurrentSkin;
|
||||
byte CurrentTheme;
|
||||
byte displayflip;
|
||||
byte ECCold;
|
||||
byte eonptyold[20];
|
||||
byte EQset;
|
||||
byte fmagc;
|
||||
byte fmscansens;
|
||||
byte fmdefaultstepsize;
|
||||
byte fmnb;
|
||||
byte fmdeemphasis;
|
||||
byte freqfont;
|
||||
byte amcodect;
|
||||
byte amcodectcount;
|
||||
byte amgain;
|
||||
byte freqoldcount;
|
||||
byte HighCutLevel;
|
||||
byte HighCutOffset;
|
||||
byte items[10] = {10, static_cast<byte>(dynamicspi ? 10 : 9), 7, 10, 10, 10, 9, 10, 10, 9};
|
||||
byte iMSEQ;
|
||||
byte iMSset;
|
||||
byte language;
|
||||
byte longbandpress;
|
||||
byte memdoublepi;
|
||||
byte memorypos;
|
||||
byte memoryposold;
|
||||
byte memoryposstatus;
|
||||
byte mempionly;
|
||||
byte memstartpos;
|
||||
byte memstoppos;
|
||||
byte menuitem;
|
||||
byte menupage;
|
||||
byte poweroptions;
|
||||
byte rdsblockold;
|
||||
byte rdsqualityold;
|
||||
byte rotarymode;
|
||||
byte touchrotating;
|
||||
byte scancancel;
|
||||
byte scanstart;
|
||||
byte scanstop;
|
||||
byte scanhold;
|
||||
byte scanmodeold;
|
||||
byte screensaverOptions[5] = {0, 3, 10, 30, 60};
|
||||
byte screensaverset;
|
||||
byte showmodulation;
|
||||
byte showrdserrors;
|
||||
byte showSWMIBand;
|
||||
byte submenu;
|
||||
byte stationlistid;
|
||||
byte nowToggleSWMIBand = 1;
|
||||
byte stepsize;
|
||||
byte StereoLevel;
|
||||
byte subnetclient;
|
||||
byte TEF, tot, tunemode;
|
||||
byte unit, spispeed, programTypePrevious;
|
||||
char buff[16];
|
||||
char eonpicodeold[20][6];
|
||||
const uint8_t* currentFont = nullptr;
|
||||
float vPerold;
|
||||
int ActiveColor;
|
||||
int ActiveColorSmooth;
|
||||
int AGC;
|
||||
int AMLevelOffset;
|
||||
int BackgroundColor;
|
||||
int BackgroundColor1;
|
||||
int BackgroundColor2;
|
||||
int BackgroundColor3;
|
||||
int BackgroundColor4;
|
||||
int BackgroundColor5;
|
||||
int BarSignificantColor;
|
||||
int BarInsignificantColor;
|
||||
int BatteryValueColor;
|
||||
int BatteryValueColorSmooth;
|
||||
int batupdatetimer;
|
||||
int berPercentold;
|
||||
int BWAutoColor;
|
||||
int BWAutoColorSmooth;
|
||||
int BWOld;
|
||||
int bwupdatetimer;
|
||||
int DisplayedSegments;
|
||||
int ForceMono;
|
||||
int FrameColor;
|
||||
int FreqColor;
|
||||
int FreqColorSmooth;
|
||||
int freq_in = 0;
|
||||
int freqold;
|
||||
int GreyoutColor;
|
||||
int InsignificantColor;
|
||||
int InsignificantColorSmooth;
|
||||
int menuoption = ITEM1;
|
||||
int ModBarInsignificantColor;
|
||||
int ModBarSignificantColor;
|
||||
int MStatusold;
|
||||
int offsetupdatetimer;
|
||||
int OStatusold;
|
||||
int peakholdold;
|
||||
int peakholdtimer;
|
||||
int PrimaryColor;
|
||||
int PrimaryColorSmooth;
|
||||
int RDSColor, RDSColorSmooth;
|
||||
int RDSDropoutColor, RDSDropoutColorSmooth;
|
||||
int SignificantColor;
|
||||
int SignificantColorSmooth;
|
||||
int StereoColor;
|
||||
int StereoColorSmooth;
|
||||
int WifiColorHigh;
|
||||
int WifiColorLow;
|
||||
int SquelchShow;
|
||||
int rotary;
|
||||
int rotarycounter;
|
||||
int rotarycounteraccelerator;
|
||||
int rssi;
|
||||
int rssiold = 200;
|
||||
int scanner_filter;
|
||||
int SecondaryColor;
|
||||
int SecondaryColorSmooth;
|
||||
int SNRupdatetimer;
|
||||
int Sqstatusold;
|
||||
int Squelch;
|
||||
int Squelchold;
|
||||
int SStatusold;
|
||||
int Stereostatus;
|
||||
int volume;
|
||||
int XDRBWset;
|
||||
int XDRBWsetold;
|
||||
int xPos;
|
||||
int xPos2;
|
||||
int xPos3;
|
||||
int xPos4;
|
||||
int xPos5;
|
||||
int xPos6;
|
||||
int16_t OStatus;
|
||||
int16_t SAvg;
|
||||
int16_t SAvg2;
|
||||
int16_t SAvg3;
|
||||
int16_t SAvg4;
|
||||
int16_t SAvg5;
|
||||
int16_t SStatus;
|
||||
int16_t MP;
|
||||
int16_t US;
|
||||
int8_t MPold = 0;
|
||||
int8_t USold = 0;
|
||||
int8_t LevelOffset;
|
||||
int8_t LowLevelSet;
|
||||
int8_t NTPoffset;
|
||||
int8_t CN;
|
||||
int8_t CNold;
|
||||
int8_t VolSet;
|
||||
float batteryVold;
|
||||
IPAddress remoteip;
|
||||
String AIDString;
|
||||
String cryptedpassword;
|
||||
String ECColdString;
|
||||
String ECCString;
|
||||
String eonpsold[20];
|
||||
String PIold;
|
||||
String PSold;
|
||||
String ptynold = " ";
|
||||
String PTYold;
|
||||
String rds_clock;
|
||||
String rds_clockold;
|
||||
String rds_date;
|
||||
String rds_dateold;
|
||||
String RDSSPYRDS;
|
||||
String RDSSPYRDSold;
|
||||
String RTold;
|
||||
String salt;
|
||||
String saltkey = " ";
|
||||
String stationIDold;
|
||||
String stationStateold;
|
||||
String StereoStatusCommand;
|
||||
String StereoStatusCommandold;
|
||||
String SWMIBandstring = String();
|
||||
String SWMIBandstringold = String();
|
||||
String XDRGTK_key;
|
||||
String XDRGTKRDS;
|
||||
String XDRGTKRDSold;
|
||||
uint16_t BW;
|
||||
uint16_t MStatus;
|
||||
uint16_t SWMIBandPos;
|
||||
uint16_t SWMIBandPosold;
|
||||
uint16_t TouchCalData[5];
|
||||
uint16_t USN;
|
||||
uint16_t WAM;
|
||||
uint8_t buff_pos;
|
||||
unsigned int ConverterSet;
|
||||
unsigned int freq_scan;
|
||||
unsigned int frequency;
|
||||
unsigned int frequency_OIRT;
|
||||
unsigned int frequency_AM;
|
||||
unsigned int frequency_LW;
|
||||
unsigned int frequency_MIBand_11M;
|
||||
unsigned int frequency_MIBand_120M;
|
||||
unsigned int frequency_MIBand_13M;
|
||||
unsigned int frequency_MIBand_15M;
|
||||
unsigned int frequency_MIBand_160M;
|
||||
unsigned int frequency_MIBand_16M;
|
||||
unsigned int frequency_MIBand_19M;
|
||||
unsigned int frequency_MIBand_22M;
|
||||
unsigned int frequency_MIBand_25M;
|
||||
unsigned int frequency_MIBand_31M;
|
||||
unsigned int frequency_MIBand_41M;
|
||||
unsigned int frequency_MIBand_49M;
|
||||
unsigned int frequency_MIBand_60M;
|
||||
unsigned int frequency_MIBand_75M;
|
||||
unsigned int frequency_MIBand_90M;
|
||||
unsigned int frequency_MW;
|
||||
unsigned int frequency_SW;
|
||||
unsigned int frequencyold;
|
||||
unsigned int HighEdgeOIRTSet;
|
||||
unsigned int HighEdgeSet;
|
||||
unsigned int LowEdgeOIRTSet;
|
||||
unsigned int logcounter;
|
||||
unsigned int LowEdgeSet;
|
||||
unsigned int LWHighEdgeSet;
|
||||
unsigned int LWLowEdgeSet;
|
||||
unsigned int mappedfreqold[20];
|
||||
unsigned int mappedfreqold2[20];
|
||||
unsigned int mappedfreqold3[20];
|
||||
unsigned int memstartfreq;
|
||||
unsigned int memstopfreq;
|
||||
unsigned int MWHighEdgeSet;
|
||||
unsigned int MWLowEdgeSet;
|
||||
unsigned int scanner_end;
|
||||
unsigned int scanner_start;
|
||||
unsigned int scanner_step;
|
||||
unsigned int SWHighEdgeSet;
|
||||
unsigned int SWLowEdgeSet;
|
||||
unsigned long afticker;
|
||||
unsigned long aftickerhold;
|
||||
unsigned long aftimer;
|
||||
unsigned long autosquelchtimer;
|
||||
unsigned long blockcounterold[33];
|
||||
unsigned long eccticker;
|
||||
unsigned long ecctickerhold;
|
||||
unsigned long eonticker;
|
||||
unsigned long eontickerhold;
|
||||
unsigned long flashingtimer;
|
||||
unsigned long keypadtimer;
|
||||
unsigned long lastTouchTime = 0;
|
||||
unsigned long lowsignaltimer;
|
||||
unsigned long ModulationpreviousMillis;
|
||||
unsigned long ModulationpeakPreviousMillis;
|
||||
unsigned long NTPtimer;
|
||||
unsigned long peakholdmillis;
|
||||
unsigned long processed_rdsblocksold[33];
|
||||
unsigned long pslongticker;
|
||||
unsigned long pslongtickerhold;
|
||||
unsigned long rtplusticker;
|
||||
unsigned long rtplustickerhold;
|
||||
unsigned long rtticker;
|
||||
unsigned long rttickerhold;
|
||||
unsigned long rotarytimer;
|
||||
unsigned long scantimer;
|
||||
unsigned long screensavertimer;
|
||||
unsigned long signalstatustimer;
|
||||
unsigned long tottimer;
|
||||
unsigned long tuningtimer;
|
||||
unsigned long udplogtimer;
|
||||
unsigned long udptimer;
|
||||
const size_t language_totalnumber = sizeof(myLanguage) / sizeof(myLanguage[0]);
|
||||
const size_t language_entrynumber = sizeof(myLanguage[0]) / sizeof(myLanguage[0][0]);
|
||||
|
||||
mem presets[EE_PRESETS_CNT];
|
||||
TEF6686 radio;
|
||||
ESP32Time rtc(0);
|
||||
|
||||
TFT_eSprite FrequencySprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite RDSSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite SquelchSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite FullLineSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite OneBigLineSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite SignalSprite = TFT_eSprite(&tft);
|
||||
TFT_eSprite PSSprite = TFT_eSprite(&tft);
|
||||
|
||||
WiFiConnect wc;
|
||||
WiFiServer Server(7373);
|
||||
WiFiClient RemoteClient;
|
||||
WiFiUDP Udp;
|
||||
WebServer webserver(80);
|
||||
#include "globals.h"
|
||||
#pragma endregion
|
||||
|
||||
#pragma region to move
|
||||
@@ -2019,7 +1618,7 @@ void setup() {
|
||||
tft.fillRect(152, 230, 16, 6, GreyoutColor);
|
||||
tft.fillRect(184, 230, 16, 6, GreyoutColor);
|
||||
|
||||
tft.pushImage (78, 34, 163, 84, openradiologo);
|
||||
tft.pushImage(78, 34, 163, 84, openradiologo);
|
||||
tft.drawBitmap(130, 124, TEFLogo, 59, 23, ActiveColor);
|
||||
|
||||
for (int x = 0; x <= ContrastSet; x++) {
|
||||
@@ -2030,9 +1629,7 @@ void setup() {
|
||||
tft.fillRect(120, 230, 16, 6, PrimaryColor);
|
||||
|
||||
TEF = EEPROM.readByte(EE_BYTE_TEF);
|
||||
|
||||
if (TEF != 102 && TEF != 205) SetTunerPatch();
|
||||
|
||||
radio.init(TEF);
|
||||
|
||||
uint16_t device, hw, sw;
|
||||
@@ -2169,10 +1766,8 @@ void loop() {
|
||||
|
||||
Communication();
|
||||
|
||||
if (tot != 0) {
|
||||
unsigned long totprobe = tot * 60000;
|
||||
if (millis() >= tottimer + totprobe) deepSleep();
|
||||
}
|
||||
// tottimer is like the time of the last interaction
|
||||
if (tot != 0 && millis() >= tottimer + (tot * 60000)) deepSleep();
|
||||
|
||||
if (freq_in != 0 && millis() >= keypadtimer + 2000) {
|
||||
freq_in = 0;
|
||||
|
||||
12
src/rds.cpp
12
src/rds.cpp
@@ -147,12 +147,11 @@ void ShowAdvancedRDS() {
|
||||
}
|
||||
|
||||
String rtplusstring;
|
||||
if (radio.rds.hasRTplus) rtplusstring = (radio.rds.rdsplusTag1 != 169 ? String(textUI(radio.rds.rdsplusTag1)) + ": " + String(radio.rds.RTContent1) : "") + (radio.rds.rdsplusTag2 != 169 ? " - " + String(textUI(radio.rds.rdsplusTag2)) + ": " + String(radio.rds.RTContent2) : "") + " "; else rtplusstring = textUI(89);
|
||||
if (hasrtplusold != radio.rds.hasRTplus) {
|
||||
if (radio.rds.hasRTplus.get()) rtplusstring = (radio.rds.rdsplusTag1 != 169 ? String(textUI(radio.rds.rdsplusTag1)) + ": " + String(radio.rds.RTContent1) : "") + (radio.rds.rdsplusTag2 != 169 ? " - " + String(textUI(radio.rds.rdsplusTag2)) + ": " + String(radio.rds.RTContent2) : "") + " "; else rtplusstring = textUI(89);
|
||||
if (radio.rds.hasRTplus.changed(0)) {
|
||||
if (!screenmute) {
|
||||
if (radio.rds.hasRTplus) tftPrint(ALEFT, "RT+", 123, 51, RDSColor, RDSColorSmooth, 16); else tftPrint(ALEFT, "RT+", 123, 51, GreyoutColor, BackgroundColor, 16);
|
||||
if (radio.rds.hasRTplus.get()) tftPrint(ALEFT, "RT+", 123, 51, RDSColor, RDSColorSmooth, 16); else tftPrint(ALEFT, "RT+", 123, 51, GreyoutColor, BackgroundColor, 16);
|
||||
}
|
||||
hasrtplusold = radio.rds.hasRTplus;
|
||||
}
|
||||
|
||||
if (rtplusstring != rtplusstringold) {
|
||||
@@ -214,11 +213,10 @@ void ShowAdvancedRDS() {
|
||||
rdsblockold = radio.rdsgroup;
|
||||
}
|
||||
|
||||
if (hastmcold != radio.rds.hasTMC) {
|
||||
if (radio.rds.hasTMC.changed(0)) {
|
||||
if (!screenmute) {
|
||||
if (radio.rds.hasTMC) tftPrint(ALEFT, "TMC", 88, 51, RDSColor, RDSColorSmooth, 16); else tftPrint(ALEFT, "TMC", 88, 51, GreyoutColor, BackgroundColor, 16);
|
||||
if (radio.rds.hasTMC.get()) tftPrint(ALEFT, "TMC", 88, 51, RDSColor, RDSColorSmooth, 16); else tftPrint(ALEFT, "TMC", 88, 51, GreyoutColor, BackgroundColor, 16);
|
||||
}
|
||||
hastmcold = radio.rds.hasTMC;
|
||||
}
|
||||
|
||||
rdsreset = false;
|
||||
|
||||
@@ -126,4 +126,13 @@ String extractUTF8Substring(const String & utf8String, size_t start, size_t leng
|
||||
}
|
||||
|
||||
return substring;
|
||||
}
|
||||
|
||||
String removeNewline(String inputString) {
|
||||
String outputString = "";
|
||||
for (int i = 0; i < inputString.length(); i++) {
|
||||
if (inputString[i] == '\n') outputString += ' ';
|
||||
else outputString += inputString[i];
|
||||
}
|
||||
return outputString;
|
||||
}
|
||||
Reference in New Issue
Block a user