Skip to content

Commit cd4b745

Browse files
committed
Eliminate function to check connection to the cloud since we simply can't know if there really is a connection to the cloud since this is conceptually impossible if we have only a connection to the gateway
1 parent 3f189bf commit cd4b745

File tree

2 files changed

+19
-53
lines changed

2 files changed

+19
-53
lines changed

src/ArduinoIoTCloudLPWAN.cpp

+19-52
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ ArduinoIoTCloudLPWAN::ArduinoIoTCloudLPWAN()
4949

5050
int ArduinoIoTCloudLPWAN::connect() {
5151
_connection->connect();
52-
const int state = _connection->getStatus() == NetworkConnectionState::INIT ? 1 : 0;
53-
return state;
52+
return 1;
5453
}
5554

5655
bool ArduinoIoTCloudLPWAN::disconnect() {
@@ -74,8 +73,24 @@ void ArduinoIoTCloudLPWAN::update() {
7473
// Check if a primitive property wrapper is locally changed
7574
_thing.updateTimestampOnLocallyChangedProperties();
7675

77-
if(checkPhyConnection() != NetworkConnectionState::CONNECTED) return;
78-
if(checkCloudConnection() != ArduinoIoTConnectionStatus::CONNECTED) return;
76+
ArduinoIoTConnectionStatus next_iot_status = _iotStatus;
77+
78+
/* Since we do not have a direct connection to the Arduino IoT Cloud servers
79+
* there is no such thing is a 'cloud connection state' since the LoRa
80+
* board connection state to the gateway is all the information we have.
81+
*/
82+
NetworkConnectionState const net_con_state = checkPhyConnection();
83+
if (net_con_state == NetworkConnectionState::CONNECTED) { next_iot_status = ArduinoIoTConnectionStatus::CONNECTED; execCloudEventCallback(ArduinoIoTCloudEvent::CONNECT); }
84+
else if(net_con_state == NetworkConnectionState::CONNECTING) { next_iot_status = ArduinoIoTConnectionStatus::CONNECTING; }
85+
else if(net_con_state == NetworkConnectionState::DISCONNECTED) { next_iot_status = ArduinoIoTConnectionStatus::DISCONNECTED; execCloudEventCallback(ArduinoIoTCloudEvent::DISCONNECT); }
86+
87+
if(next_iot_status != _iotStatus)
88+
{
89+
printConnectionStatus(next_iot_status);
90+
_iotStatus = next_iot_status;
91+
}
92+
93+
if(net_con_state != NetworkConnectionState::CONNECTED) return;
7994

8095
if (_connection->available()) {
8196
uint8_t msgBuf[CBOR_LORA_MSG_MAX_SIZE];
@@ -120,54 +135,6 @@ int ArduinoIoTCloudLPWAN::writeProperties(const byte data[], int length) {
120135
return 1;
121136
}
122137

123-
ArduinoIoTConnectionStatus ArduinoIoTCloudLPWAN::checkCloudConnection()
124-
{
125-
ArduinoIoTConnectionStatus next_iot_status = _iotStatus;
126-
127-
switch (_iotStatus)
128-
{
129-
case ArduinoIoTConnectionStatus::IDLE: next_iot_status = ArduinoIoTConnectionStatus::CONNECTING; break;
130-
case ArduinoIoTConnectionStatus::ERROR: next_iot_status = ArduinoIoTConnectionStatus::RECONNECTING; break;
131-
case ArduinoIoTConnectionStatus::DISCONNECTED: next_iot_status = ArduinoIoTConnectionStatus::RECONNECTING; break;
132-
case ArduinoIoTConnectionStatus::CONNECTING:
133-
{
134-
Debug.print(DBG_INFO, "Arduino IoT Cloud connecting ...");
135-
if (connected())
136-
{
137-
next_iot_status = ArduinoIoTConnectionStatus::CONNECTED;
138-
}
139-
}
140-
break;
141-
142-
case ArduinoIoTConnectionStatus::RECONNECTING:
143-
{
144-
Debug.print(DBG_INFO, "Arduino IoT Cloud reconnecting ...");
145-
if (connect()) next_iot_status = ArduinoIoTConnectionStatus::IDLE;
146-
else next_iot_status = ArduinoIoTConnectionStatus::ERROR;
147-
}
148-
break;
149-
150-
case ArduinoIoTConnectionStatus::CONNECTED:
151-
{
152-
if (_connection->getStatus() != NetworkConnectionState::CONNECTED)
153-
{
154-
next_iot_status = ArduinoIoTConnectionStatus::DISCONNECTED;
155-
}
156-
}
157-
break;
158-
}
159-
160-
if(next_iot_status != _iotStatus)
161-
{
162-
printConnectionStatus(next_iot_status);
163-
if (next_iot_status == ArduinoIoTConnectionStatus::DISCONNECTED) execCloudEventCallback(ArduinoIoTCloudEvent::DISCONNECT);
164-
else if(next_iot_status == ArduinoIoTConnectionStatus::CONNECTED) execCloudEventCallback(ArduinoIoTCloudEvent::CONNECT);
165-
_iotStatus = next_iot_status;
166-
}
167-
168-
return _iotStatus;
169-
}
170-
171138
/******************************************************************************
172139
* EXTERN DEFINITION
173140
******************************************************************************/

src/ArduinoIoTCloudLPWAN.h

-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,6 @@ class ArduinoIoTCloudLPWAN : public ArduinoIoTCloudClass {
5959

6060
void sendPropertiesToCloud();
6161
int writeProperties(const byte data[], int length);
62-
ArduinoIoTConnectionStatus checkCloudConnection();
6362
};
6463

6564
/******************************************************************************

0 commit comments

Comments
 (0)