@@ -79,7 +79,7 @@ namespace {
79
79
String _ntp_server = NTP_SERVER;
80
80
#endif
81
81
82
- void error (const ezError_t err) {
82
+ void triggerError (const ezError_t err) {
83
83
_last_error = err;
84
84
if (_last_error) {
85
85
err (F (" ERROR: " ));
@@ -132,9 +132,7 @@ namespace ezt {
132
132
}
133
133
}
134
134
135
-
136
-
137
- ezError_t error (const bool reset /* = false */ ) {
135
+ ezError_t error (const bool reset /* = false */ ) {
138
136
ezError_t tmp = _last_error;
139
137
if (reset) _last_error = NO_ERROR;
140
138
return tmp;
@@ -434,15 +432,12 @@ namespace ezt {
434
432
info (F (" ... " ));
435
433
436
434
#ifndef EZTIME_ETHERNET
437
- if (WiFi.status () != WL_CONNECTED) { error (NO_NETWORK); return false ; }
435
+ if (WiFi.status () != WL_CONNECTED) { triggerError (NO_NETWORK); return false ; }
438
436
WiFiUDP udp;
439
437
#else
440
438
EthernetUDP udp;
441
439
#endif
442
440
443
- udp.flush ();
444
- udp.begin (NTP_LOCAL_PORT);
445
-
446
441
// Send NTP packet
447
442
byte buffer[NTP_PACKET_SIZE];
448
443
memset (buffer, 0 , NTP_PACKET_SIZE);
@@ -454,19 +449,21 @@ namespace ezt {
454
449
buffer[12 ] = ' X' ; // "kiss code", see RFC5905
455
450
buffer[13 ] = ' E' ; // (codes starting with 'X' are not interpreted)
456
451
buffer[14 ] = ' Z' ;
457
- buffer[15 ] = ' T' ;
452
+ buffer[15 ] = ' T' ;
453
+
454
+ udp.flush ();
455
+ udp.begin (NTP_LOCAL_PORT);
456
+ unsigned long started = millis ();
458
457
udp.beginPacket (server.c_str (), 123 ); // NTP requests are to port 123
459
458
udp.write (buffer, NTP_PACKET_SIZE);
460
459
udp.endPacket ();
461
460
462
461
// Wait for packet or return false with timed out
463
- unsigned long started = millis ();
464
- uint16_t packetsize = 0 ;
465
462
while (!udp.parsePacket ()) {
466
463
delay (1 );
467
464
if (millis () - started > NTP_TIMEOUT) {
468
465
udp.stop ();
469
- error (TIMEOUT);
466
+ triggerError (TIMEOUT);
470
467
return false ;
471
468
}
472
469
}
@@ -504,7 +501,7 @@ namespace ezt {
504
501
if (WiFi.status () != WL_CONNECTED) {
505
502
info (F (" Waiting for WiFi ... " ));
506
503
while (WiFi.status () != WL_CONNECTED) {
507
- if ( timeout && (millis () - start) / 1000 > timeout ) { error (TIMEOUT); return false ;};
504
+ if ( timeout && (millis () - start) / 1000 > timeout ) { triggerError (TIMEOUT); return false ;};
508
505
events ();
509
506
delay (25 );
510
507
}
@@ -515,7 +512,7 @@ namespace ezt {
515
512
if (!_time_status != timeSet) {
516
513
infoln (F (" Waiting for time sync" ));
517
514
while (_time_status != timeSet) {
518
- if ( timeout && (millis () - start) / 1000 > timeout ) { error (TIMEOUT); return false ;};
515
+ if ( timeout && (millis () - start) / 1000 > timeout ) { triggerError (TIMEOUT); return false ;};
519
516
delay (250 );
520
517
events ();
521
518
}
@@ -551,7 +548,7 @@ Timezone::Timezone(const bool locked_to_UTC /* = false */) {
551
548
}
552
549
553
550
bool Timezone::setPosix (const String posix) {
554
- if (_locked_to_UTC) { error (LOCKED_TO_UTC); return false ; }
551
+ if (_locked_to_UTC) { triggerError (LOCKED_TO_UTC); return false ; }
555
552
_posix = posix;
556
553
#ifdef EZTIME_NETWORK_ENABLE
557
554
_olsen = " " ;
@@ -776,32 +773,30 @@ String Timezone::getPosix() { return _posix; }
776
773
bool Timezone::setLocation (const String location /* = "GeoIP" */ ) {
777
774
778
775
info (F (" Timezone lookup for: " ));
779
- infoln (location);
780
- if (_locked_to_UTC) { error (LOCKED_TO_UTC); return false ; }
776
+ info (location);
777
+ info (F (" ... " ));
778
+ if (_locked_to_UTC) { triggerError (LOCKED_TO_UTC); return false ; }
781
779
782
780
#ifndef EZTIME_ETHERNET
783
- if (WiFi.status () != WL_CONNECTED) { error (NO_NETWORK); return false ; }
781
+ if (WiFi.status () != WL_CONNECTED) { triggerError (NO_NETWORK); return false ; }
784
782
WiFiUDP udp;
785
783
#else
786
784
EthernetUDP udp;
787
785
#endif
788
-
786
+
789
787
udp.flush ();
790
788
udp.begin (TIMEZONED_LOCAL_PORT);
791
-
789
+ unsigned long started = millis ();
792
790
udp.beginPacket (TIMEZONED_REMOTE_HOST, TIMEZONED_REMOTE_PORT);
793
791
udp.write ((const uint8_t *)location.c_str (), location.length ());
794
792
udp.endPacket ();
795
793
796
794
// Wait for packet or return false with timed out
797
- unsigned long started = millis ();
798
- uint16_t packetsize = 0 ;
799
795
while (!udp.parsePacket ()) {
800
796
delay (1 );
801
797
if (millis () - started > TIMEZONED_TIMEOUT) {
802
798
udp.stop ();
803
- error (TIMEOUT);
804
- udp.stop ();
799
+ triggerError (TIMEOUT);
805
800
return false ;
806
801
}
807
802
}
@@ -810,9 +805,12 @@ String Timezone::getPosix() { return _posix; }
810
805
recv.reserve (60 );
811
806
while (udp.available ()) recv += (char )udp.read ();
812
807
udp.stop ();
808
+ info (F (" (round-trip " ));
809
+ info (millis () - started);
810
+ info (F (" ms) " ));
813
811
if (recv.substring (0 ,6 ) == " ERROR " ) {
814
812
_server_error = recv.substring (6 );
815
- error (SERVER_ERROR);
813
+ error (SERVER_ERROR);
816
814
return false ;
817
815
}
818
816
if (recv.substring (0 ,3 ) == " OK " ) {
@@ -852,7 +850,7 @@ String Timezone::getPosix() { return _posix; }
852
850
#ifdef EZTIME_CACHE_EEPROM
853
851
bool Timezone::setCache (const int16_t address) {
854
852
eepromBegin ();
855
- if (address + EEPROM_CACHE_LEN > eepromLength ()) { error (CACHE_TOO_SMALL); return false ; }
853
+ if (address + EEPROM_CACHE_LEN > eepromLength ()) { triggerError (CACHE_TOO_SMALL); return false ; }
856
854
_eeprom_address = address;
857
855
eepromEnd ();
858
856
return setCache ();
@@ -887,13 +885,13 @@ String Timezone::getPosix() { return _posix; }
887
885
888
886
#ifdef EZTIME_CACHE_EEPROM
889
887
eepromBegin ();
890
- if (_eeprom_address < 0 ) { error (NO_CACHE_SET); return ; }
888
+ if (_eeprom_address < 0 ) { triggerError (NO_CACHE_SET); return ; }
891
889
for (int16_t n = _eeprom_address; n < _eeprom_address + EEPROM_CACHE_LEN; n++) EEPROM.write (n, 0 );
892
890
eepromEnd ();
893
891
#endif
894
892
895
893
#ifdef EZTIME_CACHE_NVS
896
- if (_nvs_name == " " || _nvs_key == " " ) { error (NO_CACHE_SET); return ; }
894
+ if (_nvs_name == " " || _nvs_key == " " ) { triggerError (NO_CACHE_SET); return ; }
897
895
Preferences prefs;
898
896
prefs.begin (_nvs_name.c_str (), false );
899
897
if (delete_section) {
@@ -913,7 +911,7 @@ String Timezone::getPosix() { return _posix; }
913
911
if (_eeprom_address < 0 ) return false ;
914
912
915
913
info (F (" Caching timezone data " ));
916
- if (str.length () > MAX_CACHE_PAYLOAD) { error (CACHE_TOO_SMALL); return false ; }
914
+ if (str.length () > MAX_CACHE_PAYLOAD) { triggerError (CACHE_TOO_SMALL); return false ; }
917
915
918
916
uint16_t last_byte = _eeprom_address + EEPROM_CACHE_LEN - 1 ;
919
917
uint16_t addr = _eeprom_address;
@@ -984,7 +982,7 @@ String Timezone::getPosix() { return _posix; }
984
982
bool Timezone::readCache (String &olsen, String &posix, uint8_t &months_since_jan_2018) {
985
983
986
984
#ifdef EZTIME_CACHE_EEPROM
987
- if (_eeprom_address < 0 ) { error (NO_CACHE_SET); return false ; }
985
+ if (_eeprom_address < 0 ) { triggerError (NO_CACHE_SET); return false ; }
988
986
eepromBegin ();
989
987
uint16_t last_byte = _eeprom_address + EEPROM_CACHE_LEN - 1 ;
990
988
@@ -1049,7 +1047,7 @@ String Timezone::getPosix() { return _posix; }
1049
1047
#endif
1050
1048
1051
1049
#ifdef EZTIME_CACHE_NVS
1052
- if (_nvs_name == " " || _nvs_key == " " ) { error (NO_CACHE_SET); return false ; }
1050
+ if (_nvs_name == " " || _nvs_key == " " ) { triggerError (NO_CACHE_SET); return false ; }
1053
1051
1054
1052
Preferences prefs;
1055
1053
prefs.begin (_nvs_name.c_str (), true );
@@ -1121,7 +1119,7 @@ uint8_t Timezone::setEvent(void (*function)(), time_t t /* = TIME_NOW */, const
1121
1119
return n + 1 ;
1122
1120
}
1123
1121
}
1124
- error (TOO_MANY_EVENTS);
1122
+ triggerError (TOO_MANY_EVENTS);
1125
1123
return 0 ;
1126
1124
}
1127
1125
0 commit comments