Skip to content

Commit 9a3b4b3

Browse files
committed
Rewriting connection state machine for better readability
1 parent 2396468 commit 9a3b4b3

File tree

1 file changed

+44
-41
lines changed

1 file changed

+44
-41
lines changed

src/ArduinoIoTCloudTCP.cpp

Lines changed: 44 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -292,51 +292,54 @@ ArduinoIoTConnectionStatus ArduinoIoTCloudTCP::checkCloudConnection()
292292
{
293293
ArduinoIoTConnectionStatus next_iot_status = _iotStatus;
294294

295-
switch (_iotStatus) {
296-
case ArduinoIoTConnectionStatus::IDLE: {
297-
next_iot_status = ArduinoIoTConnectionStatus::CONNECTING;
298-
}
299-
break;
300-
case ArduinoIoTConnectionStatus::ERROR: {
301-
next_iot_status = ArduinoIoTConnectionStatus::RECONNECTING;
302-
}
303-
break;
304-
case ArduinoIoTConnectionStatus::CONNECTED: {
305-
if (!_mqttClient->connected()) {
306-
next_iot_status = ArduinoIoTConnectionStatus::DISCONNECTED;
307-
_mqtt_data_request_retransmit = true;
308-
execCloudEventCallback(ArduinoIoTCloudEvent::DISCONNECT);
309-
}
295+
switch (_iotStatus)
296+
{
297+
case ArduinoIoTConnectionStatus::IDLE: next_iot_status = ArduinoIoTConnectionStatus::CONNECTING; break;
298+
case ArduinoIoTConnectionStatus::ERROR: next_iot_status = ArduinoIoTConnectionStatus::RECONNECTING; break;
299+
case ArduinoIoTConnectionStatus::DISCONNECTED: next_iot_status = ArduinoIoTConnectionStatus::RECONNECTING; break;
300+
case ArduinoIoTConnectionStatus::CONNECTING:
301+
{
302+
Debug.print(DBG_INFO, "Arduino IoT Cloud connecting ...");
303+
int const ret = connect();
304+
if (ret == CONNECT_SUCCESS)
305+
{
306+
next_iot_status = ArduinoIoTConnectionStatus::CONNECTED;
307+
execCloudEventCallback(ArduinoIoTCloudEvent::CONNECT);
308+
309+
CloudSerial.begin(9600);
310+
CloudSerial.println("Hello from Cloud Serial!");
310311
}
311-
break;
312-
case ArduinoIoTConnectionStatus::DISCONNECTED: {
313-
next_iot_status = ArduinoIoTConnectionStatus::RECONNECTING;
312+
else if (ret == CONNECT_FAILURE_SUBSCRIBE)
313+
{
314+
Debug.print(DBG_ERROR, "ERROR - Please verify your THING ID");
314315
}
315-
break;
316-
case ArduinoIoTConnectionStatus::RECONNECTING: {
317-
int const ret_code_reconnect = reconnect();
318-
Debug.print(DBG_INFO, "ArduinoCloud.reconnect(): %d", ret_code_reconnect);
319-
if (ret_code_reconnect == CONNECT_SUCCESS) {
320-
next_iot_status = ArduinoIoTConnectionStatus::CONNECTED;
321-
execCloudEventCallback(ArduinoIoTCloudEvent::CONNECT);
322-
CloudSerial.begin(9600);
323-
CloudSerial.println("Hello from Cloud Serial!");
324-
}
316+
}
317+
break;
318+
319+
case ArduinoIoTConnectionStatus::RECONNECTING:
320+
{
321+
Debug.print(DBG_INFO, "Arduino IoT Cloud reconnecting ...");
322+
if (reconnect() == CONNECT_SUCCESS)
323+
{
324+
next_iot_status = ArduinoIoTConnectionStatus::CONNECTED;
325+
execCloudEventCallback(ArduinoIoTCloudEvent::CONNECT);
326+
327+
CloudSerial.begin(9600);
328+
CloudSerial.println("Hello from Cloud Serial!");
325329
}
326-
break;
327-
case ArduinoIoTConnectionStatus::CONNECTING: {
328-
int const ret_code_connect = connect();
329-
Debug.print(DBG_VERBOSE, "ArduinoCloud.connect(): %d", ret_code_connect);
330-
if (ret_code_connect == CONNECT_SUCCESS) {
331-
next_iot_status = ArduinoIoTConnectionStatus::CONNECTED;
332-
execCloudEventCallback(ArduinoIoTCloudEvent::CONNECT);
333-
CloudSerial.begin(9600);
334-
CloudSerial.println("Hello from Cloud Serial!");
335-
} else if (ret_code_connect == CONNECT_FAILURE_SUBSCRIBE) {
336-
Debug.print(DBG_INFO, "ERROR - Please verify your THING ID");
337-
}
330+
}
331+
break;
332+
333+
case ArduinoIoTConnectionStatus::CONNECTED:
334+
{
335+
if (!_mqttClient->connected())
336+
{
337+
next_iot_status = ArduinoIoTConnectionStatus::DISCONNECTED;
338+
_mqtt_data_request_retransmit = true;
339+
execCloudEventCallback(ArduinoIoTCloudEvent::DISCONNECT);
338340
}
339-
break;
341+
}
342+
break;
340343
}
341344

342345
if(next_iot_status != _iotStatus)

0 commit comments

Comments
 (0)