Skip to content

Commit 194bd07

Browse files
committed
Splitting method connectionCheck into two methods (one for checking the state of the physical connection (WiFi, GSM, ...) - checkPhyConnection - and one for checking the status of the connection to the cloud - checkCloudConnection
1 parent 45806d9 commit 194bd07

File tree

3 files changed

+17
-15
lines changed

3 files changed

+17
-15
lines changed

src/ArduinoIoTCloud.h

-2
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,6 @@ class ArduinoIoTCloudClass {
7878

7979
virtual int connected() = 0;
8080

81-
virtual ArduinoIoTConnectionStatus connectionCheck() = 0;
82-
8381
virtual void printDebugInfo() = 0;
8482

8583
inline void setThingId(String const thing_id) {

src/ArduinoIoTCloudTCP.cpp

+15-12
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,8 @@ void ArduinoIoTCloudTCP::update() {
202202
// Check if a primitive property wrapper is locally changed
203203
Thing.updateTimestampOnLocallyChangedProperties();
204204

205-
if(connectionCheck() != ArduinoIoTConnectionStatus::CONNECTED) return;
205+
if(checkPhyConnection() != NetworkConnectionState::CONNECTED) return;
206+
if(checkCloudConnection() != ArduinoIoTConnectionStatus::CONNECTED) return;
206207

207208
if(_mqtt_data_request_retransmit && (_mqtt_data_len > 0)) {
208209
writeProperties(_mqtt_data_buf, _mqtt_data_len);
@@ -346,21 +347,23 @@ void ArduinoIoTCloudTCP::requestLastValue() {
346347
writeShadowOut(CBOR_REQUEST_LAST_VALUE_MSG, sizeof(CBOR_REQUEST_LAST_VALUE_MSG));
347348
}
348349

349-
ArduinoIoTConnectionStatus ArduinoIoTCloudTCP::connectionCheck() {
350+
NetworkConnectionState ArduinoIoTCloudTCP::checkPhyConnection()
351+
{
352+
NetworkConnectionState const connect_state = _connection->check();
350353

351-
if (_connection != NULL) {
352-
353-
_connection->check();
354-
355-
if (_connection->getStatus() != NetworkConnectionState::CONNECTED) {
356-
if (_iotStatus == ArduinoIoTConnectionStatus::CONNECTED) {
357-
_iotStatus = ArduinoIoTConnectionStatus::DISCONNECTED;
358-
printConnectionStatus(_iotStatus);
359-
}
360-
return _iotStatus;
354+
if (_connection->check() != NetworkConnectionState::CONNECTED)
355+
{
356+
if (_iotStatus == ArduinoIoTConnectionStatus::CONNECTED)
357+
{
358+
disconnect();
361359
}
362360
}
363361

362+
return connect_state;
363+
}
364+
365+
ArduinoIoTConnectionStatus ArduinoIoTCloudTCP::checkCloudConnection()
366+
{
364367
switch (_iotStatus) {
365368
case ArduinoIoTConnectionStatus::IDLE: {
366369
_iotStatus = ArduinoIoTConnectionStatus::CONNECTING;

src/ArduinoIoTCloudTCP.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass {
4444
bool disconnect();
4545
int connected();
4646
void update();
47-
ArduinoIoTConnectionStatus connectionCheck();
4847
void printDebugInfo();
4948
#ifdef BOARD_HAS_ECCX08
5049
int begin(ConnectionHandler & connection, String brokerAddress = DEFAULT_BROKER_ADDRESS_SECURE_AUTH, uint16_t brokerPort = DEFAULT_BROKER_PORT_SECURE_AUTH);
@@ -122,6 +121,8 @@ class ArduinoIoTCloudTCP: public ArduinoIoTCloudClass {
122121
void handleMessage(int length);
123122

124123
void sendPropertiesToCloud();
124+
NetworkConnectionState checkPhyConnection();
125+
ArduinoIoTConnectionStatus checkCloudConnection();
125126
};
126127

127128
extern ArduinoIoTCloudTCP ArduinoCloud;

0 commit comments

Comments
 (0)