Skip to content

Commit 15881a0

Browse files
authored
Merge pull request #41 from arduino-libraries/optimize-get-time-management
Optimized getTime management
2 parents 061b4c7 + 221c922 commit 15881a0

6 files changed

+9
-66
lines changed

src/ArduinoIoTCloud.cpp

+3-5
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ static unsigned long getTime() {
3939
debugMessage("Bogus NTP time from API, fallback to UDP method", 0);
4040
time = NTPUtils(getTimeConnection->getUDP()).getTime();
4141
}
42+
#ifdef ARDUINO_ARCH_SAMD
43+
rtc.setEpoch(time);
44+
#endif
4245
return time;
4346
}
4447

@@ -411,11 +414,6 @@ void ArduinoIoTCloudClass::connectionCheck()
411414
CloudSerial.begin(9600);
412415
CloudSerial.println("Hello from Cloud Serial!");
413416
}
414-
#ifdef ARDUINO_ARCH_SAMD
415-
unsigned long const epoch = getTime();
416-
if (epoch!=0)
417-
rtc.setEpoch(epoch);
418-
#endif
419417
break;
420418
}
421419
}

src/GSMConnectionManager.cpp

+2-26
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ GSMConnectionManager::GSMConnectionManager(const char *pin, const char *apn, con
3939
login(login),
4040
pass(pass),
4141
lastConnectionTickTime(millis()),
42-
connectionTickTimeInterval(CHECK_INTERVAL_IDLE),
43-
getTimeRetries(MAX_GETTIME_RETRIES) {
42+
connectionTickTimeInterval(CHECK_INTERVAL_IDLE) {
4443
}
4544

4645
/******************************************************************************
@@ -96,24 +95,8 @@ void GSMConnectionManager::check() {
9695
} else {
9796
sprintf(msgBuffer, "Connected to GPRS Network");
9897
debugMessage(msgBuffer, 2);
99-
changeConnectionState(CONNECTION_STATE_GETTIME);
100-
return;
101-
}
102-
break;
103-
case CONNECTION_STATE_GETTIME:
104-
debugMessage("Acquiring Time from Network", 3);
105-
unsigned long networkTime;
106-
networkTime = getTime();
107-
debugMessage(".", 3, false, false);
108-
if(networkTime > lastValidTimestamp){
109-
lastValidTimestamp = networkTime;
110-
sprintf(msgBuffer, "Network Time: %u", networkTime);
111-
debugMessage(msgBuffer, 3);
11298
changeConnectionState(CONNECTION_STATE_CONNECTED);
113-
}else if(gsmAccess.isAccessAlive() != 1){
114-
changeConnectionState(CONNECTION_STATE_DISCONNECTED);
115-
}else if (!getTimeRetries--) {
116-
changeConnectionState(CONNECTION_STATE_DISCONNECTED);
99+
return;
117100
}
118101
break;
119102
case CONNECTION_STATE_CONNECTED:
@@ -152,20 +135,13 @@ void GSMConnectionManager::changeConnectionState(NetworkConnectionState _newStat
152135
debugMessage(msgBuffer, 2);
153136
newInterval = CHECK_INTERVAL_CONNECTING;
154137
break;
155-
case CONNECTION_STATE_GETTIME:
156-
debugMessage("Acquiring Time from Network", 3);
157-
newInterval = CHECK_INTERVAL_GETTIME;
158-
getTimeRetries = MAX_GETTIME_RETRIES;
159-
break;
160138
case CONNECTION_STATE_CONNECTED:
161139
newInterval = CHECK_INTERVAL_CONNECTED;
162140
break;
163141
case CONNECTION_STATE_DISCONNECTED:
164142
if(netConnectionState == CONNECTION_STATE_CONNECTED){
165143
debugMessage("Disconnected from Cellular Network", 0);
166144
debugMessage("Attempting reconnection", 0);
167-
}else if(netConnectionState == CONNECTION_STATE_GETTIME){
168-
debugMessage("Connection to Cellular Network lost during Time acquisition.\nAttempting reconnection", 0);
169145
}
170146
newInterval = CHECK_INTERVAL_DISCONNECTED;
171147
break;

src/GSMConnectionManager.h

+1-5
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,17 @@ class GSMConnectionManager : public ConnectionManager {
5252
const int CHECK_INTERVAL_IDLE = 100;
5353
const int CHECK_INTERVAL_INIT = 100;
5454
const int CHECK_INTERVAL_CONNECTING = 500;
55-
const int CHECK_INTERVAL_GETTIME = 666;
5655
const int CHECK_INTERVAL_CONNECTED = 10000;
5756
const int CHECK_INTERVAL_RETRYING = 5000;
5857
const int CHECK_INTERVAL_DISCONNECTED = 1000;
5958
const int CHECK_INTERVAL_ERROR = 500;
6059

61-
const int MAX_GETTIME_RETRIES = 30;
62-
6360
const char *pin, *apn, *login, *pass;
6461
unsigned long lastConnectionTickTime;
65-
unsigned long getTimeRetries;
6662
int connectionTickTimeInterval;
6763

6864
};
6965

7066
#endif /* #ifdef BOARD_HAS_GSM */
7167

72-
#endif /* GSM_CONNECTION_MANAGER_H_ */
68+
#endif /* GSM_CONNECTION_MANAGER_H_ */

src/WiFiConnectionManager.cpp

+2-24
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ WiFiConnectionManager::WiFiConnectionManager(const char *ssid, const char *pass)
3737
ssid(ssid),
3838
pass(pass),
3939
lastConnectionTickTime(millis()),
40-
connectionTickTimeInterval(CHECK_INTERVAL_IDLE),
41-
getTimeRetries(MAX_GETTIME_RETRIES) {
40+
connectionTickTimeInterval(CHECK_INTERVAL_IDLE) {
4241
}
4342

4443
/******************************************************************************
@@ -92,26 +91,10 @@ void WiFiConnectionManager::check() {
9291
} else {
9392
sprintf(msgBuffer, "Connected to \"%s\"", ssid);
9493
debugMessage(msgBuffer, 2);
95-
changeConnectionState(CONNECTION_STATE_GETTIME);
94+
changeConnectionState(CONNECTION_STATE_CONNECTED);
9695
return;
9796
}
9897
break;
99-
case CONNECTION_STATE_GETTIME:
100-
unsigned long networkTime;
101-
networkTime = getTime();
102-
debugMessage(".", 3, false, false);
103-
if(networkTime > lastValidTimestamp){
104-
debugMessage("", 3, false, true);
105-
lastValidTimestamp = networkTime;
106-
sprintf(msgBuffer, "Network Time: %u", networkTime);
107-
debugMessage(msgBuffer, 3);
108-
changeConnectionState(CONNECTION_STATE_CONNECTED);
109-
} else if (WiFi.status() != WL_CONNECTED) {
110-
changeConnectionState(CONNECTION_STATE_DISCONNECTED);
111-
} else if (!getTimeRetries--) {
112-
changeConnectionState(CONNECTION_STATE_DISCONNECTED);
113-
}
114-
break;
11598
case CONNECTION_STATE_CONNECTED:
11699
// keep testing connection
117100
networkStatus = WiFi.status();
@@ -149,11 +132,6 @@ void WiFiConnectionManager::changeConnectionState(NetworkConnectionState _newSta
149132
debugMessage(msgBuffer, 2);
150133
newInterval = CHECK_INTERVAL_CONNECTING;
151134
break;
152-
case CONNECTION_STATE_GETTIME:
153-
newInterval = CHECK_INTERVAL_GETTIME;
154-
debugMessage("Acquiring Time from Network", 3);
155-
getTimeRetries = MAX_GETTIME_RETRIES;
156-
break;
157135
case CONNECTION_STATE_CONNECTED:
158136
newInterval = CHECK_INTERVAL_CONNECTED;
159137
break;

src/WiFiConnectionManager.h

+1-5
Original file line numberDiff line numberDiff line change
@@ -51,22 +51,18 @@ class WiFiConnectionManager : public ConnectionManager {
5151
const int CHECK_INTERVAL_IDLE = 100;
5252
const int CHECK_INTERVAL_INIT = 100;
5353
const int CHECK_INTERVAL_CONNECTING = 500;
54-
const int CHECK_INTERVAL_GETTIME = 666;
5554
const int CHECK_INTERVAL_CONNECTED = 10000;
5655
const int CHECK_INTERVAL_RETRYING = 5000;
5756
const int CHECK_INTERVAL_DISCONNECTED = 1000;
5857
const int CHECK_INTERVAL_ERROR = 500;
5958

60-
const int MAX_GETTIME_RETRIES = 30;
61-
6259
const char *ssid, *pass;
6360
unsigned long lastConnectionTickTime;
64-
unsigned long getTimeRetries;
6561

6662
WiFiClient wifiClient;
6763
int connectionTickTimeInterval;
6864
};
6965

7066
#endif /* #ifdef BOARD_HAS_WIFI */
7167

72-
#endif /* WIFI_CONNECTION_MANAGER_H_ */
68+
#endif /* WIFI_CONNECTION_MANAGER_H_ */

src/utility/NTPUtils.cpp

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ static time_t cvt_TIME(char const *time) {
2929
NTPUtils::NTPUtils(UDP& Udp) : Udp(Udp) {}
3030

3131
bool NTPUtils::isTimeValid(unsigned long time) {
32-
Serial.println("Compile time: " + String(cvt_TIME(__DATE__)));
3332
return (time > cvt_TIME(__DATE__));
3433
}
3534

0 commit comments

Comments
 (0)