Restored screensaver timer

This commit is contained in:
Sjef Verhoeven PE5PVB
2025-09-01 13:47:26 +02:00
parent d520bb4d8c
commit 64fe33821a
2 changed files with 14 additions and 83 deletions
+14 -82
View File
@@ -5,7 +5,7 @@
#include <Wire.h> #include <Wire.h>
#include <math.h> #include <math.h>
#include <TimeLib.h> #include <TimeLib.h>
#include <TFT_eSPI.h> // https://github.com/PE5PVB/TFT_eSPI_DynamicSpeed (please then edit the User_Setup.h as described in the Wiki) #include <TFT_eSPI.h> // https://github.com/PE5PVB/TFT_eSPI_DynamicSpeed
#include <Hash.h> // https://github.com/bbx10/Hash_tng/archive/refs/heads/master.zip #include <Hash.h> // https://github.com/bbx10/Hash_tng/archive/refs/heads/master.zip
#include <FS.h> #include <FS.h>
using fs::FS; using fs::FS;
@@ -445,6 +445,7 @@ unsigned long rtticker;
unsigned long rttickerhold; unsigned long rttickerhold;
unsigned long rotarytimer; unsigned long rotarytimer;
unsigned long scantimer; unsigned long scantimer;
unsigned long screensavertimer;
unsigned long signalstatustimer; unsigned long signalstatustimer;
unsigned long tottimer; unsigned long tottimer;
unsigned long tuningtimer; unsigned long tuningtimer;
@@ -477,9 +478,6 @@ WiFiClient RemoteClient;
WiFiUDP Udp; WiFiUDP Udp;
WebServer webserver(80); WebServer webserver(80);
//hw_timer_t* timScreensaver = nullptr;
byte screensaver_IRQ = OFF;
void setup() { void setup() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
gpio_set_drive_capability((gpio_num_t) 5, GPIO_DRIVE_CAP_0); gpio_set_drive_capability((gpio_num_t) 5, GPIO_DRIVE_CAP_0);
@@ -958,11 +956,7 @@ void setup() {
if (edgebeep) radio.tone(50, -5, 2000); if (edgebeep) radio.tone(50, -5, 2000);
if (!usesquelch) radio.setUnMute(); if (!usesquelch) radio.setUnMute();
if (screensaverset) { screensavertimer = millis();
// ScreensaverTimerInit();
// ScreensaverTimerSet(screensaverOptions[screensaverset]);
}
tottimer = millis(); tottimer = millis();
} }
@@ -1340,7 +1334,7 @@ void loop() {
for (int i = 0; i < rotarycounteraccelerator; i++) KeyUp(); for (int i = 0; i < rotarycounteraccelerator; i++) KeyUp();
rotarycounter = 0; rotarycounter = 0;
} }
// if (screensaverset && !BWtune && !menu && !screensavertriggered) ScreensaverTimerRestart(); if (screensaverset > 0 && !BWtune && !menu && !screensavertriggered) screensavertimer = millis();
} }
} }
@@ -1359,7 +1353,7 @@ void loop() {
for (int i = 0; i < rotarycounteraccelerator; i++) KeyDown(); for (int i = 0; i < rotarycounteraccelerator; i++) KeyDown();
rotarycounter = 0; rotarycounter = 0;
} }
// if (screensaverset && !BWtune && !menu && !screensavertriggered) ScreensaverTimerRestart(); if (screensaverset > 0 && !BWtune && !menu && !screensavertriggered) screensavertimer = millis();
} }
} }
@@ -1416,15 +1410,7 @@ void loop() {
} }
} }
if (screensaverset) { if (screensaverset > 0 && !screensavertriggered && !BWtune && !menu && millis() >= screensavertimer + 1000 * screensaverOptions[screensaverset]) WakeToSleep(true);
if (screensaver_IRQ)
{
screensaver_IRQ = OFF;
if (!screensavertriggered && !BWtune && !menu) {
WakeToSleep(true);
}
}
}
} }
void GetData() { void GetData() {
@@ -1479,68 +1465,20 @@ void WakeToSleep(bool yes) {
case LCD_OFF: case LCD_OFF:
MuteScreen(0); MuteScreen(0);
screensavertriggered = false; screensavertriggered = false;
screensaver_IRQ = OFF; screensavertimer = millis();
// ScreensaverTimerReopen();
break; break;
case LCD_BRIGHTNESS_1_PERCENT: case LCD_BRIGHTNESS_1_PERCENT:
case LCD_BRIGHTNESS_A_QUARTER: case LCD_BRIGHTNESS_A_QUARTER:
case LCD_BRIGHTNESS_HALF: case LCD_BRIGHTNESS_HALF:
MuteScreen(0); MuteScreen(0);
screensavertriggered = false; screensavertriggered = false;
screensaver_IRQ = OFF; screensavertimer = millis();
// ScreensaverTimerReopen();
break; break;
} }
analogWrite(CONTRASTPIN, map(ContrastSet, 0, 100, 15, 255)); analogWrite(CONTRASTPIN, map(ContrastSet, 0, 100, 15, 255));
} }
} }
/*
void IRAM_ATTR ScreensaverInterrupt() {
screensaver_IRQ = ON; // ISR-safe flag setting
}
void ScreensaverTimerInit() {
if (timScreensaver) return;
// Timer 0, 80 prescaler for 1us ticks, counting up
timScreensaver = timerBegin(0, 80, true);
if (!timScreensaver) {
Serial.println("Failed to initialize timer");
return;
}
timerAttachInterrupt(timScreensaver, &ScreensaverInterrupt, true);
}
void ScreensaverTimerSet(byte value) {
if (timScreensaver == nullptr) {
ScreensaverTimerInit();
if (!timScreensaver) return;
}
timerStop(timScreensaver);
if (value != OFF) {
uint64_t ticks = value * TIMER_SCREENSAVER_BASE * 1000; // ms to us
timerAlarmWrite(timScreensaver, ticks, false);
timerAlarmEnable(timScreensaver);
}
}
void ScreensaverTimerRestart() {
if (timScreensaver == nullptr) {
ScreensaverTimerInit();
ScreensaverTimerSet(screensaverOptions[screensaverset]);
}
timerRestart(timScreensaver);
}
void ScreensaverTimerReopen() {
ScreensaverTimerSet(OFF);
ScreensaverTimerSet(screensaverOptions[screensaverset]);
ScreensaverTimerRestart();
}
*/
void CheckBandForbiddenFM () { void CheckBandForbiddenFM () {
switch (band) { switch (band) {
case BAND_FM: case BAND_FM:
@@ -1941,7 +1879,7 @@ void BANDBUTTONPress() {
BuildDisplay(); BuildDisplay();
freq_in = 0; freq_in = 0;
SelectBand(); SelectBand();
// ScreensaverTimerReopen(); screensavertimer = millis();
} else { } else {
doBandToggle(); doBandToggle();
} }
@@ -2563,7 +2501,7 @@ void ModeButtonPress() {
BuildDisplay(); BuildDisplay();
freq_in = 0; freq_in = 0;
SelectBand(); SelectBand();
// ScreensaverTimerReopen(); screensavertimer = millis();
} else if (afscreen) { } else if (afscreen) {
if (afpagenr == 1) afpagenr = 2; else if (afpagenr == 2 && afpage) afpagenr = 3; else afpagenr = 1; if (afpagenr == 1) afpagenr = 2; else if (afpagenr == 2 && afpage) afpagenr = 3; else afpagenr = 1;
BuildAFScreen(); BuildAFScreen();
@@ -2593,7 +2531,6 @@ void ModeButtonPress() {
BuildMenu(); BuildMenu();
freq_in = 0; freq_in = 0;
menu = true; menu = true;
// ScreensaverTimerSet(OFF);
} }
} }
} else { } else {
@@ -2617,8 +2554,7 @@ void ModeButtonPress() {
MWHighEdgeSet = mwstepsize == false ? FREQ_MW_HIGH_EDGE_MAX_9K : FREQ_MW_HIGH_EDGE_MAX_10K; MWHighEdgeSet = mwstepsize == false ? FREQ_MW_HIGH_EDGE_MAX_9K : FREQ_MW_HIGH_EDGE_MAX_10K;
doBandSelectionFM(); doBandSelectionFM();
doBandSelectionAM(); doBandSelectionAM();
// ScreensaverTimerSet(screensaverOptions[screensaverset]); screensavertimer = millis();
// if (screensaverset) ScreensaverTimerRestart();
endMenu(); endMenu();
} else { } else {
if (submenu) { if (submenu) {
@@ -2829,9 +2765,7 @@ void ButtonPress() {
} }
} }
} }
if (screensaverset) { screensavertimer = millis();
// ScreensaverTimerRestart();
}
} else { } else {
if (menu) DoMenu(); if (menu) DoMenu();
if (BWtune) { if (BWtune) {
@@ -4953,8 +4887,7 @@ void endMenu() {
} }
void startFMDXScan() { void startFMDXScan() {
// ScreensaverTimerSet(screensaverOptions[screensaverset]); screensavertimer = millis();
// if (screensaverset) ScreensaverTimerRestart();
initdxscan = true; initdxscan = true;
scanholdflag = false; scanholdflag = false;
autologged = false; autologged = false;
@@ -5226,7 +5159,7 @@ void doBandToggle() {
startFMDXScan(); startFMDXScan();
return; return;
} }
// ScreensaverTimerRestart(); screensavertimer = millis();
} }
void StoreMemoryPos(uint8_t _pos) { void StoreMemoryPos(uint8_t _pos) {
@@ -5433,7 +5366,6 @@ void NumpadProcess(int num) {
PSSprite.unloadFont(); PSSprite.unloadFont();
if (language == LANGUAGE_CHS) PSSprite.loadFont(FONT16_CHS); else PSSprite.loadFont(FONT16); if (language == LANGUAGE_CHS) PSSprite.loadFont(FONT16_CHS); else PSSprite.loadFont(FONT16);
BuildMenu(); BuildMenu();
// ScreensaverTimerSet(OFF);
} else if (num == 13) { } else if (num == 13) {
if (freq_in != 0) { if (freq_in != 0) {
TuneFreq(freq_in); TuneFreq(freq_in);
-1
View File
@@ -17,7 +17,6 @@
#define TIMER_BW_TIMER (TIMER_500_TICK) #define TIMER_BW_TIMER (TIMER_500_TICK)
#define TIMER_SNR_TIMER 100 #define TIMER_SNR_TIMER 100
#define TIMER_BAT_TIMER (TIMER_500_TICK) #define TIMER_BAT_TIMER (TIMER_500_TICK)
#define TIMER_SCREENSAVER_BASE 1000000
#define TIMER_500_TICK 500 #define TIMER_500_TICK 500
#define BAT_LEVEL_EMPTY 1600 #define BAT_LEVEL_EMPTY 1600