From a454e65ba29daa460f36141829445e845cdd177f Mon Sep 17 00:00:00 2001 From: sqfmi Date: Thu, 30 Dec 2021 01:50:13 -0500 Subject: [PATCH] add NTP to menu --- src/Watchy.cpp | 38 ++++++++++++++++++++++++++++++++------ src/Watchy.h | 1 + src/WatchyRTC.cpp | 5 +++-- src/WatchyRTC.h | 2 +- src/config.h | 4 ++-- 5 files changed, 39 insertions(+), 11 deletions(-) diff --git a/src/Watchy.cpp b/src/Watchy.cpp index f9a8993..353f4ae 100644 --- a/src/Watchy.cpp +++ b/src/Watchy.cpp @@ -91,6 +91,9 @@ void Watchy::handleButtonPress(){ case 5: showUpdateFW(); break; + case 6: + syncNTP(); + break; default: break; } @@ -170,6 +173,9 @@ void Watchy::handleButtonPress(){ case 5: showUpdateFW(); break; + case 6: + syncNTP(); + break; default: break; } @@ -219,9 +225,9 @@ void Watchy::showMenu(byte menuIndex, bool partialRefresh){ uint16_t w, h; int16_t yPos; - const char *menuItems[] = {"Check Battery", "Vibrate Motor", "Show Accelerometer", "Set Time", "Setup WiFi", "Update Firmware"}; + const char *menuItems[] = {"Check Battery", "Vibrate Motor", "Show Accelerometer", "Set Time", "Setup WiFi", "Update Firmware", "Sync NTP"}; for(int i=0; i= WEATHER_UPDATE_INTERVAL){ //only update if WEATHER_UPDATE_INTERVAL has elapsed i.e. 30 minutes if(connectWiFi()){ - RTC.syncNtpTime(); //Sync NTP HTTPClient http; //Use Weather API for live data if WiFi is connected http.setConnectTimeout(3000);//3 second max timeout String weatherQueryURL = String(OPENWEATHERMAP_URL) + String(CITY_NAME) + String(",") + String(COUNTRY_CODE) + String("&units=") + String(TEMP_UNIT) + String("&appid=") + String(OPENWEATHERMAP_APIKEY); @@ -729,7 +734,6 @@ void Watchy::setupWifi(){ display.println("Setup failed &"); display.println("timed out!"); }else{ - RTC.syncNtpTime(); //sync ntp display.println("Connected to"); display.println(WiFi.SSID()); } @@ -877,6 +881,28 @@ void Watchy::updateFWBegin(){ showMenu(menuIndex, false); } +void Watchy::syncNTP(){ + display.setFullWindow(); + display.fillScreen(GxEPD_BLACK); + display.setFont(&FreeMonoBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setCursor(0, 30); + display.println("Syncing NTP... "); + display.display(false); //full refresh + if(connectWiFi()){ + if(RTC.syncNtpTime()){ + display.println("NTP Sync Success"); + }else{ + display.println("NTP Sync Failed"); + } + }else{ + display.println("WiFi Not Configured"); + } + display.display(true); //full refresh + delay(1000); + showMenu(menuIndex, false); +} + // time_t compileTime() // { // const time_t FUDGE(10); //fudge factor to allow for upload time, etc. (seconds, YMMV) diff --git a/src/Watchy.h b/src/Watchy.h index 709cfd3..a12da61 100644 --- a/src/Watchy.h +++ b/src/Watchy.h @@ -40,6 +40,7 @@ class Watchy { void showAccelerometer(); void showUpdateFW(); void setTime(); + void syncNTP(); void setupWifi(); bool connectWiFi(); weatherData getWeatherData(); diff --git a/src/WatchyRTC.cpp b/src/WatchyRTC.cpp index 5656e9c..f8dce40 100644 --- a/src/WatchyRTC.cpp +++ b/src/WatchyRTC.cpp @@ -115,11 +115,11 @@ void WatchyRTC::_PCFConfig(String datetime){ //String datetime is YYYY:MM:DD:HH: clearAlarm(); } -void WatchyRTC::syncNtpTime(){ //NTP sync - call after connecting to WiFi and remember to turn it back off +bool WatchyRTC::syncNtpTime(){ //NTP sync - call after connecting to WiFi and remember to turn it back off configTime(GMT_OFFSET_SEC, DST_OFFSET_SEC, NTP_SERVER); struct tm timeinfo; if(!getLocalTime(&timeinfo)){ - return; //NTP sync failed + return false; //NTP sync failed } /**************************************************** struct tm @@ -143,6 +143,7 @@ void WatchyRTC::syncNtpTime(){ //NTP sync - call after connecting to WiFi and re tm.Minute = timeinfo.tm_min; tm.Second = timeinfo.tm_sec; set(tm); + return true; } String WatchyRTC::_getValue(String data, char separator, int index) diff --git a/src/WatchyRTC.h b/src/WatchyRTC.h index 1dcfd91..726c842 100644 --- a/src/WatchyRTC.h +++ b/src/WatchyRTC.h @@ -25,7 +25,7 @@ class WatchyRTC { void clearAlarm(); void read(tmElements_t &tm); void set(tmElements_t tm); - void syncNtpTime(); + bool syncNtpTime(); uint8_t temperature(); private: void _DSConfig(String datetime); diff --git a/src/config.h b/src/config.h index 3ae4a97..f18bfc1 100644 --- a/src/config.h +++ b/src/config.h @@ -40,8 +40,8 @@ #define MAIN_MENU_STATE 0 #define APP_STATE 1 #define FW_UPDATE_STATE 2 -#define MENU_HEIGHT 30 -#define MENU_LENGTH 6 +#define MENU_HEIGHT 25 +#define MENU_LENGTH 7 //set time #define SET_HOUR 0 #define SET_MINUTE 1