Improved time synch handling for GPS based time
This will update the time from GPS on first valid time received by GPS.
This commit is contained in:
parent
cbaf705c15
commit
0a510a0c33
@ -21,9 +21,6 @@ static uint16_t nmea_txDelay_ms =
|
||||
static uint16_t nmea_txDelay_ms = 0;
|
||||
#endif
|
||||
|
||||
// did the last packet contain a valid time?
|
||||
bool hasValidTime = false;
|
||||
|
||||
// initialize and configure GPS
|
||||
int gps_init(void) {
|
||||
|
||||
@ -163,16 +160,11 @@ void gps_loop(void *pvParameters) {
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !TIME_SYNC_LORASERVER && !TIME_SYNC_LORAWAN
|
||||
if (!hasValidTime) {
|
||||
if (gpstime.isUpdated() && gpstime.isValid()) {
|
||||
hasValidTime = true;
|
||||
if (timeSource == _unsynced) {
|
||||
calibrateTime();
|
||||
}
|
||||
}
|
||||
// if time hasn't been synchronised yet, and we have a valid GPS time,
|
||||
// update time from GPS.
|
||||
if (timeSource == _unsynced && gpstime.isUpdated() && gpstime.isValid()) {
|
||||
calibrateTime();
|
||||
}
|
||||
#endif
|
||||
|
||||
} // if
|
||||
|
||||
|
@ -488,11 +488,6 @@ void setup() {
|
||||
#warning you did not specify a time source, time will not be synched
|
||||
#endif
|
||||
|
||||
// initialize gps time
|
||||
#if (HAS_GPS)
|
||||
get_gpstime();
|
||||
#endif
|
||||
|
||||
#if (defined HAS_IF482 || defined HAS_DCF77)
|
||||
ESP_LOGI(TAG, "Starting Clock Controller...");
|
||||
clock_init();
|
||||
|
@ -32,7 +32,7 @@ void calibrateTime(void) {
|
||||
uint16_t t_msec = 0;
|
||||
|
||||
// kick off asychronous lora timesync if we have
|
||||
#if (HAS_LORA) && (TIME_SYNC_LORASERVER) || (TIME_SYNC_LORAWAN)
|
||||
#if (HAS_LORA) && ((TIME_SYNC_LORASERVER) || (TIME_SYNC_LORAWAN))
|
||||
timesync_request();
|
||||
#endif
|
||||
|
||||
@ -44,19 +44,17 @@ void calibrateTime(void) {
|
||||
// has RTC -> fallback to RTC time
|
||||
#ifdef HAS_RTC
|
||||
t = get_rtctime();
|
||||
timeSource = _rtc;
|
||||
// set time from RTC
|
||||
setMyTime((uint32_t)t, t_msec, _rtc);
|
||||
#endif
|
||||
|
||||
// no RTC -> fallback to GPS time
|
||||
#if (HAS_GPS)
|
||||
t = get_gpstime(&t_msec);
|
||||
if (t) {
|
||||
timeSource = _gps;
|
||||
}
|
||||
// set time from GPS - method will check if time is valid
|
||||
setMyTime((uint32_t)t, t_msec, _gps);
|
||||
#endif
|
||||
|
||||
setMyTime((uint32_t)t, t_msec, timeSource); // set time
|
||||
|
||||
} // fallback
|
||||
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user