add support for hardware rtc, not sure if this version won't crash

This commit is contained in:
2026-01-11 12:04:40 +01:00
parent 06de03a16d
commit a4346aa4f1
22 changed files with 813 additions and 88 deletions

View File

@@ -1,6 +1,7 @@
#pragma once
#include "TimeLib.h"
#include <TimeLib.h>
#include "globals.h"
#include "rtc.hpp"
static const char ntpServerName[] = "0.pool.ntp.org";
static const int localPort = 8944;

View File

@@ -5,6 +5,7 @@
#include "Tuner_Interface.h"
#include "RdsPiBuffer.hpp"
#include "change_detector.h"
#include "rtc.hpp"
extern const unsigned char tuner_init_tab[] PROGMEM;
extern const unsigned char tuner_init_tab9216[] PROGMEM;
@@ -455,7 +456,7 @@ typedef struct _rds_ {
unsigned long blockcounter[33];
uint16_t rdsA, rdsB, rdsC, rdsD, rdsErr, rdsStat, correctPI, rdsplusTag1, rdsplusTag2, PICTlock = 0;
bool ps12error, ps34error, ps56error, ps78error;
time_t time;
int32_t clock_correction;
int32_t offset;
uint16_t aid[10];
uint32_t dabaffreq;

View File

@@ -1,8 +1,31 @@
#pragma once
#define VERSION "v2.20.5c"
#include <Arduino.h>
#define REVERSE false
#define VERSION "v2.20.5d"
#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 XL9555_ADDRESS 0x20 // GPIO driver used in the DP666 for the 0-9 + DX(Backspace) + Enter buttons
// Assumes that A0 = A1 = A2 = 0 of the chip, this can range from 0x20 to 0x27
#define TEF668X_ADDRESS 0x64 // I2C address of the TEF itself! Not sure if this even changes
#define RX8010SJ_ADDRESS 0x32 // Address of the RTC chip in the DP666 receivers
#define REVERSE false
#define ALEFT -1
#define ACENTER 0
@@ -15,12 +38,12 @@
(x_ < y_) ? x_ : y_; }
#define TIMER_OFFSET_TIMER (TIMER_500_TICK)
#define TIMER_BW_TIMER 300
#define TIMER_BW_TIMER (TIMER_500_TICK)
#define TIMER_SNR_TIMER 50
#define TIMER_BAT_TIMER 250
#define TIMER_BAT_TIMER (TIMER_500_TICK)
#define TIMER_500_TICK 500
#define BAT_LEVEL_STAGE 4
#define BAT_LEVEL_STAGE 8
#define BATTERY_LOW_VALUE 3.2
#define BATTERY_FULL_VALUE 4.12

View File

@@ -10,24 +10,11 @@
#include <WiFiUdp.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include "WiFiConnect.h"
#include "WiFiConnectParam.h"
#include "ESP32Time.h"
#include <WiFiConnect.h>
#include <WiFiConnectParam.h>
#include "scrolling_text.h"
#include "rtc.hpp"
#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
extern bool RDSstatus;
extern bool RDSstatusold;
@@ -52,14 +39,12 @@ extern bool memorystore;
extern bool memreset, memtune;
extern bool menu, menuopen;
extern bool mwstepsize;
extern bool NTPupdated;
extern bool optenc;
extern bool rdsflagreset;
extern bool rdsreset;
extern bool rdsstatscreen;
extern bool RDSSPYTCP, RDSSPYUSB;
extern bool rotaryaccelerate;
extern bool rtcset;
extern bool scandxmode;
extern bool scanholdflag;
extern bool scanholdonsignal;
@@ -359,7 +344,6 @@ 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;
@@ -369,6 +353,7 @@ extern TFT_eSprite OneBigLineSprite;
extern TFT_eSprite SignalSprite;
extern TFT_eSprite PSSprite;
extern TFT_eSprite PTYSprite;
extern TFT_eSprite CTSprite;
extern WiFiConnect wc;
extern WiFiServer Server;

View File

@@ -5,6 +5,7 @@ using fs::FS;
#include <WebServer.h>
#include <SPIFFS.h>
#include "globals.h"
#include "rtc.hpp"
void handleRoot();
void handleDownloadCSV();

View File

@@ -7,6 +7,8 @@
#include <WiFi.h>
#include <ESP32Time.h>
#include "globals.h"
#include "NTPupdate.h"
#include "rtc.hpp"
void ShowAdvancedRDS();
void readRds();

18
include/rtc.hpp Normal file
View File

@@ -0,0 +1,18 @@
#pragma once
#include "constants.h"
#include <ESP32Time.h>
#include <RX8010SJ.h>
extern bool rtcset;
extern bool NTPupdated;
extern ESP32Time rtc;
extern bool rx_rtc_avail;
extern RX8010SJ::Adapter rx_rtc;
void timeToDateTime(time_t t, struct RX8010SJ::DateTime* dateTime);
time_t dateTimeToTime(const struct RX8010SJ::DateTime* dateTime);
void sync_to_rx_rtc(int32_t offset = 0);
void sync_from_rx_rtc(int32_t offset = 0);