Version 1.2.1.
This commit is contained in:
parent
6ba5825e82
commit
1170766749
@ -72,6 +72,7 @@ RTC_DATA_ATTR struct TimeData {
|
|||||||
unsigned long EPSMS; // Milliseconds (rounded to the enxt minute) when the clock was updated via NTP.
|
unsigned long EPSMS; // Milliseconds (rounded to the enxt minute) when the clock was updated via NTP.
|
||||||
bool NewMinute; // Set to True when New Minute happens.
|
bool NewMinute; // Set to True when New Minute happens.
|
||||||
time_t TravelTest; // For Travel Testing.
|
time_t TravelTest; // For Travel Testing.
|
||||||
|
int32_t Drifting; // The amount to add to UTC_RAW after reading from the RTC.
|
||||||
} WatchTime;
|
} WatchTime;
|
||||||
|
|
||||||
RTC_DATA_ATTR struct Countdown {
|
RTC_DATA_ATTR struct Countdown {
|
||||||
@ -194,7 +195,7 @@ void WatchyGSR::setupDefaults(){
|
|||||||
void WatchyGSR::init(){
|
void WatchyGSR::init(){
|
||||||
uint64_t wakeupBit;
|
uint64_t wakeupBit;
|
||||||
int AlarmIndex, Pushed; // Alarm being played.
|
int AlarmIndex, Pushed; // Alarm being played.
|
||||||
bool AlarmsOn, WaitForNext, Pulse, DoOnce, B;
|
bool AlarmsOn, WaitForNext, Pulse, DoOnce, B, IDidIt;
|
||||||
unsigned long Since, AlarmReset, APLoop;
|
unsigned long Since, AlarmReset, APLoop;
|
||||||
String S;
|
String S;
|
||||||
|
|
||||||
@ -212,6 +213,7 @@ void WatchyGSR::init(){
|
|||||||
wakeup_reason = esp_sleep_get_wakeup_cause(); //get wake up reason
|
wakeup_reason = esp_sleep_get_wakeup_cause(); //get wake up reason
|
||||||
wakeupBit = esp_sleep_get_ext1_wakeup_status();
|
wakeupBit = esp_sleep_get_ext1_wakeup_status();
|
||||||
DoOnce = true;
|
DoOnce = true;
|
||||||
|
IDidIt = false;
|
||||||
Updates.Drawn = false;
|
Updates.Drawn = false;
|
||||||
LastButton = 0;
|
LastButton = 0;
|
||||||
LastUse = 0;
|
LastUse = 0;
|
||||||
@ -219,22 +221,23 @@ void WatchyGSR::init(){
|
|||||||
switch (wakeup_reason)
|
switch (wakeup_reason)
|
||||||
{
|
{
|
||||||
case ESP_SLEEP_WAKEUP_EXT0: //RTC Alarm
|
case ESP_SLEEP_WAKEUP_EXT0: //RTC Alarm
|
||||||
RTC.alarm(ALARM_2); //resets the alarm flag in the RTC
|
|
||||||
WatchTime.EPSMS = ((60000 - millis()) * 1000);
|
|
||||||
WatchTime.NewMinute=true;
|
WatchTime.NewMinute=true;
|
||||||
UpdateUTC();
|
UpdateUTC();
|
||||||
|
WatchTime.EPSMS = (millis() + (60000 - (1000 * WatchTime.UTC.Second)));
|
||||||
ManageTime(); // Account for drift.
|
ManageTime(); // Account for drift.
|
||||||
|
RTC.alarm(ALARM_2); //resets the alarm flag in the RTC
|
||||||
WatchTime.NewMinute=false;
|
WatchTime.NewMinute=false;
|
||||||
UpdateClock();
|
UpdateClock();
|
||||||
detectBattery();
|
detectBattery();
|
||||||
UpdateDisp=Showing();
|
UpdateDisp=Showing();
|
||||||
break;
|
break;
|
||||||
case ESP_SLEEP_WAKEUP_EXT1: //button Press
|
case ESP_SLEEP_WAKEUP_EXT1: //button Press
|
||||||
|
UpdateUTC();
|
||||||
|
WatchTime.EPSMS = (millis() + (60000 - (1000 * WatchTime.UTC.Second)));
|
||||||
UpdateDisp = !Showing();
|
UpdateDisp = !Showing();
|
||||||
Button = getButtonMaskToID(wakeupBit);
|
Button = getButtonMaskToID(wakeupBit);
|
||||||
break;
|
break;
|
||||||
default: //reset
|
default: //reset
|
||||||
WatchTime.EPSMS = ((60000 - millis()) * 1000);
|
|
||||||
setupDefaults();
|
setupDefaults();
|
||||||
initZeros();
|
initZeros();
|
||||||
_rtcConfig();
|
_rtcConfig();
|
||||||
@ -242,6 +245,7 @@ void WatchyGSR::init(){
|
|||||||
B = NVS.getString("GSR-TZ",S);
|
B = NVS.getString("GSR-TZ",S);
|
||||||
if (S.length() > 0) strcpy(WatchTime.POSIX,S.c_str());
|
if (S.length() > 0) strcpy(WatchTime.POSIX,S.c_str());
|
||||||
UpdateUTC();
|
UpdateUTC();
|
||||||
|
WatchTime.EPSMS = (millis() + (60000 - (1000 * WatchTime.UTC.Second)));
|
||||||
UpdateClock();
|
UpdateClock();
|
||||||
RetrieveSettings();
|
RetrieveSettings();
|
||||||
AlarmIndex=0;
|
AlarmIndex=0;
|
||||||
@ -1052,7 +1056,7 @@ void WatchyGSR::drawMenu(){
|
|||||||
O = "Calculating";
|
O = "Calculating";
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (Options.UsingDrift) O = String(Options.Drift) + " " + MakeSeconds(Options.Drift); else O = "No Drift";
|
if (Options.UsingDrift){ if (Options.Drift< 0) O = "+" + String(0 - Options.Drift) + " " + MakeSeconds(0 - Options.Drift); else O = "-" + String(Options.Drift) + " " + MakeSeconds(Options.Drift); } else O = "No Drift";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (O > ""){
|
if (O > ""){
|
||||||
@ -1242,6 +1246,7 @@ void WatchyGSR::ProcessNTP(){
|
|||||||
WatchTime.UTC_RAW = time(nullptr);
|
WatchTime.UTC_RAW = time(nullptr);
|
||||||
breakTime(WatchTime.UTC_RAW,TM);
|
breakTime(WatchTime.UTC_RAW,TM);
|
||||||
RTC.write(TM);
|
RTC.write(TM);
|
||||||
|
WatchTime.Drifting = 0;
|
||||||
WatchTime.EPSMS = (millis() + (60000 - (1000 * WatchTime.UTC.Second)));
|
WatchTime.EPSMS = (millis() + (60000 - (1000 * WatchTime.UTC.Second)));
|
||||||
WatchTime.UTC = TM;
|
WatchTime.UTC = TM;
|
||||||
NTPData.NTPDone = true;
|
NTPData.NTPDone = true;
|
||||||
@ -2057,8 +2062,8 @@ void WatchyGSR::handleButtonPress(uint8_t Pressed){
|
|||||||
void WatchyGSR::UpdateUTC(){
|
void WatchyGSR::UpdateUTC(){
|
||||||
tmElements_t TM; // struct tm * tm;
|
tmElements_t TM; // struct tm * tm;
|
||||||
RTC.read(TM);
|
RTC.read(TM);
|
||||||
WatchTime.UTC = TM;
|
WatchTime.UTC_RAW = makeTime(TM) + (NTPData.TimeTest ? 0 : WatchTime.Drifting);
|
||||||
WatchTime.UTC_RAW = makeTime(TM);
|
breakTime(WatchTime.UTC_RAW,WatchTime.UTC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WatchyGSR::UpdateClock(){
|
void WatchyGSR::UpdateClock(){
|
||||||
@ -2088,7 +2093,9 @@ void WatchyGSR::ManageTime(){
|
|||||||
if (NTPData.TestCount > 1){
|
if (NTPData.TestCount > 1){
|
||||||
I = Options.Drift;
|
I = Options.Drift;
|
||||||
if (NTPData.NTPDone){
|
if (NTPData.NTPDone){
|
||||||
Options.Drift = (WatchTime.TravelTest - WatchTime.UTC_RAW);
|
if (WatchTime.TravelTest > WatchTime.UTC_RAW) Options.Drift = 0 - (WatchTime.TravelTest - WatchTime.UTC_RAW);
|
||||||
|
else if (WatchTime.UTC_RAW > WatchTime.TravelTest) Options.Drift = WatchTime.UTC_RAW - WatchTime.TravelTest;
|
||||||
|
else if (WatchTime.UTC_RAW == WatchTime.TravelTest) Options.Drift = 0;
|
||||||
Options.UsingDrift = (Options.Drift != 0);
|
Options.UsingDrift = (Options.Drift != 0);
|
||||||
if (Menu.Item == MENU_TOFF) Menu.SubItem = 3;
|
if (Menu.Item == MENU_TOFF) Menu.SubItem = 3;
|
||||||
NTPData.TimeTest = false;
|
NTPData.TimeTest = false;
|
||||||
@ -2103,14 +2110,13 @@ void WatchyGSR::ManageTime(){
|
|||||||
WatchTime.EPSMS += 60000;
|
WatchTime.EPSMS += 60000;
|
||||||
WatchTime.NewMinute=true;
|
WatchTime.NewMinute=true;
|
||||||
}
|
}
|
||||||
if (WatchTime.NewMinute){
|
if (WatchTime.NewMinute && !NTPData.TimeTest && !IDidIt){
|
||||||
WatchTime.EPSMS += ((Options.UsingDrift ? Options.Drift : 0) * 1000);
|
WatchTime.EPSMS += ((Options.UsingDrift ? Options.Drift : 0) * 1000);
|
||||||
if (Options.UsingDrift){
|
if (Options.UsingDrift){
|
||||||
WatchTime.UTC_RAW += Options.Drift;
|
WatchTime.Drifting += Options.Drift;
|
||||||
breakTime(WatchTime.UTC_RAW,TM);
|
IDidIt = true;
|
||||||
RTC.write(TM);
|
|
||||||
WatchTime.UTC=TM;
|
|
||||||
UpdateDisp=Showing();
|
UpdateDisp=Showing();
|
||||||
|
UpdateUTC();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2639,6 +2645,7 @@ void WatchyGSR::initZeros(){
|
|||||||
VibeMode = 0;
|
VibeMode = 0;
|
||||||
WatchyStatus = "";
|
WatchyStatus = "";
|
||||||
WatchTime.TimeZone = "";
|
WatchTime.TimeZone = "";
|
||||||
|
WatchTime.Drifting = 0;
|
||||||
for (I = 0; I < 64; I++) WatchTime.POSIX[I] = 0;
|
for (I = 0; I < 64; I++) WatchTime.POSIX[I] = 0;
|
||||||
Menu.Style = MENU_INNORMAL;
|
Menu.Style = MENU_INNORMAL;
|
||||||
Menu.Item = 0;
|
Menu.Item = 0;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user