diff --git a/platformio.ini b/platformio.ini
index 155460b1c..7d2ac6b44 100644
--- a/platformio.ini
+++ b/platformio.ini
@@ -14,6 +14,7 @@ default_envs = tbeam
;default_envs = heltec-v2.0
;default_envs = heltec-v1
;default_envs = tlora-v1
+;default_envs = tlora-v1
;default_envs = tlora_v1_3
;default_envs = tlora-v2
;default_envs = lora-relay-v1 # nrf board
@@ -103,9 +104,13 @@ src_filter =
${arduino_base.src_filter} -
upload_speed = 921600
debug_init_break = tbreak setup
+
+# Remove -DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL for low level BLE logging.
+# See library directory for BLE logging possible values: .pio/libdeps/tbeam/NimBLE-Arduino/src/log_common/log_common.h
+# This overrides the BLE logging default of LOG_LEVEL_INFO (1) from: .pio/libdeps/tbeam/NimBLE-Arduino/src/esp_nimble_cfg.h
build_flags =
${arduino_base.build_flags} -Wall -Wextra -Isrc/esp32 -Isrc/esp32-mfix-esp32-psram-cache-issue -lnimble -std=c++11
- -DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG
+ -DLOG_LOCAL_LEVEL=ESP_LOG_DEBUG -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG -DMYNEWT_VAL_BLE_HS_LOG_LVL=LOG_LEVEL_CRITICAL
-DAXP_DEBUG_PORT=Serial
lib_deps =
${arduino_base.lib_deps}
@@ -116,6 +121,8 @@ lib_deps =
robtillaart/DS18B20@^0.1.11
h2zero/NimBLE-Arduino@1.3.1
tobozo/ESP32-targz@^1.1.4
+ arduino-libraries/NTPClient#531eff39d9fbc831f3d03f706a161739203fbe2a
+
# Hmm - this doesn't work yet
# board_build.ldscript = linker/esp32.extram.bss.ld
lib_ignore =
diff --git a/src/gps/RTC.h b/src/gps/RTC.h
index 3a89d9810..730d1914e 100644
--- a/src/gps/RTC.h
+++ b/src/gps/RTC.h
@@ -11,8 +11,11 @@ enum RTCQuality {
/// Some other node gave us a time we can use
RTCQualityFromNet = 1,
+ /// Our time is based on NTP
+ RTCQualityNTP= 2,
+
/// Our time is based on our own GPS
- RTCQualityGPS = 2
+ RTCQualityGPS = 3
};
RTCQuality getRTCQuality();
diff --git a/src/mesh/http/WiFiAPClient.cpp b/src/mesh/http/WiFiAPClient.cpp
index c5cbe9c93..1101ad1cd 100644
--- a/src/mesh/http/WiFiAPClient.cpp
+++ b/src/mesh/http/WiFiAPClient.cpp
@@ -1,5 +1,6 @@
#include "mesh/http/WiFiAPClient.h"
#include "NodeDB.h"
+#include "RTC.h"
#include "concurrency/Periodic.h"
#include "configuration.h"
#include "main.h"
@@ -9,7 +10,9 @@
#include "target_specific.h"
#include
#include
+#include
#include
+#include
using namespace concurrency;
@@ -18,6 +21,10 @@ static void WiFiEvent(WiFiEvent_t event);
// DNS Server for the Captive Portal
DNSServer dnsServer;
+// NTP
+WiFiUDP ntpUDP;
+NTPClient timeClient(ntpUDP, "0.pool.ntp.org");
+
uint8_t wifiDisconnectReason = 0;
// Stores our hostname
@@ -46,10 +53,10 @@ static WifiSleepObserver wifiSleepObserver;
static int32_t reconnectWiFi()
{
- if (radioConfig.has_preferences && needReconnect) {
+ const char *wifiName = radioConfig.preferences.wifi_ssid;
+ const char *wifiPsw = radioConfig.preferences.wifi_password;
- const char *wifiName = radioConfig.preferences.wifi_ssid;
- const char *wifiPsw = radioConfig.preferences.wifi_password;
+ if (radioConfig.has_preferences && needReconnect && !WiFi.isConnected()) {
if (!*wifiPsw) // Treat empty password as no password
wifiPsw = NULL;
@@ -60,6 +67,26 @@ static int32_t reconnectWiFi()
DEBUG_MSG("... Reconnecting to WiFi access point\n");
WiFi.mode(WIFI_MODE_STA);
WiFi.begin(wifiName, wifiPsw);
+
+
+ // Starting timeClient;
+ }
+ }
+
+ //if (*wifiName) {
+ if (WiFi.isConnected()) {
+ DEBUG_MSG("Updating NTP time\n");
+ if (timeClient.update()) {
+ DEBUG_MSG("NTP Request Success - Setting RTCQualityNTP if needed\n");
+
+ struct timeval tv;
+ tv.tv_sec = timeClient.getEpochTime();
+ tv.tv_usec = 0;
+
+ perhapsSetRTC(RTCQualityNTP, &tv);
+
+ } else {
+ DEBUG_MSG("NTP Update failed\n");
}
}
@@ -128,6 +155,10 @@ static void onNetworkConnected()
MDNS.addService("https", "tcp", 443);
}
+ DEBUG_MSG("Starting NTP time client\n");
+ timeClient.begin();
+ timeClient.setUpdateInterval(60*60); // Update once an hour
+
initWebServer();
initApiServer();