@@ -123,37 +123,34 @@ int ArduinoIoTCloudLPWAN::writeProperties(const byte data[], int length) {
123
123
124
124
ArduinoIoTConnectionStatus ArduinoIoTCloudLPWAN::checkCloudConnection ()
125
125
{
126
+ ArduinoIoTConnectionStatus next_iot_status = _iotStatus;
127
+
126
128
switch (_iotStatus) {
127
129
case ArduinoIoTConnectionStatus::IDLE: {
128
- _iotStatus = ArduinoIoTConnectionStatus::CONNECTING;
129
- printConnectionStatus (_iotStatus);
130
+ next_iot_status = ArduinoIoTConnectionStatus::CONNECTING;
130
131
}
131
132
break ;
132
133
case ArduinoIoTConnectionStatus::ERROR: {
133
- _iotStatus = ArduinoIoTConnectionStatus::RECONNECTING;
134
- printConnectionStatus (_iotStatus);
134
+ next_iot_status = ArduinoIoTConnectionStatus::RECONNECTING;
135
135
}
136
136
break ;
137
137
case ArduinoIoTConnectionStatus::CONNECTED: {
138
138
if (_connection->getStatus () != NetworkConnectionState::CONNECTED) {
139
- _iotStatus = ArduinoIoTConnectionStatus::DISCONNECTED;
140
- printConnectionStatus (_iotStatus);
141
- execCloudEventCallback (ArduinoIoTCloudEvent::DISCONNECT);
139
+ next_iot_status = ArduinoIoTConnectionStatus::DISCONNECTED;
142
140
}
143
141
}
144
142
break ;
145
143
case ArduinoIoTConnectionStatus::DISCONNECTED: {
146
- _iotStatus = ArduinoIoTConnectionStatus::RECONNECTING;
147
- printConnectionStatus (_iotStatus);
144
+ next_iot_status = ArduinoIoTConnectionStatus::RECONNECTING;
148
145
}
149
146
break ;
150
147
case ArduinoIoTConnectionStatus::RECONNECTING: {
151
148
int const ret_code = connect ();
152
149
Debug.print (DBG_INFO, " ArduinoCloud.reconnect()" );
153
150
if (ret_code == 1 ) {
154
- _iotStatus = ArduinoIoTConnectionStatus::IDLE;
151
+ next_iot_status = ArduinoIoTConnectionStatus::IDLE;
155
152
} else {
156
- _iotStatus = ArduinoIoTConnectionStatus::ERROR;
153
+ next_iot_status = ArduinoIoTConnectionStatus::ERROR;
157
154
}
158
155
159
156
}
@@ -162,15 +159,21 @@ ArduinoIoTConnectionStatus ArduinoIoTCloudLPWAN::checkCloudConnection()
162
159
NetworkConnectionState net_status = _connection->getStatus ();
163
160
Debug.print (DBG_VERBOSE, " ArduinoCloud.connect(): %d" , net_status);
164
161
if (net_status == NetworkConnectionState::CONNECTED) {
165
- _iotStatus = ArduinoIoTConnectionStatus::CONNECTED;
166
- printConnectionStatus (_iotStatus);
167
- execCloudEventCallback (ArduinoIoTCloudEvent::CONNECT);
162
+ next_iot_status = ArduinoIoTConnectionStatus::CONNECTED;
168
163
}
169
164
170
165
}
171
166
break ;
172
167
}
173
168
169
+ if (next_iot_status != _iotStatus)
170
+ {
171
+ printConnectionStatus (next_iot_status);
172
+ if (next_iot_status == ArduinoIoTConnectionStatus::DISCONNECTED) execCloudEventCallback (ArduinoIoTCloudEvent::DISCONNECT);
173
+ else if (next_iot_status == ArduinoIoTConnectionStatus::CONNECTED) execCloudEventCallback (ArduinoIoTCloudEvent::CONNECT);
174
+ _iotStatus = next_iot_status;
175
+ }
176
+
174
177
return _iotStatus;
175
178
}
176
179
0 commit comments