Skip to content

Commit 13f5954

Browse files
committed
fix: GSMConnectionHandler stuck in ERROR state if connection lost (out of range)
1 parent 6da5f87 commit 13f5954

18 files changed

+51
-1
lines changed

src/CatM1ConnectionHandler.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,8 @@ NetworkConnectionState CatM1ConnectionHandler::update_handleDisconnected()
153153
}
154154
}
155155

156+
NetworkConnectionState CatM1ConnectionHandler::update_handleError() {
157+
return NetworkConnectionState::ERROR;
158+
}
159+
156160
#endif /* #ifdef BOARD_HAS_CATM1_NBIOT */

src/CatM1ConnectionHandler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class CatM1ConnectionHandler : public ConnectionHandler
5151
virtual NetworkConnectionState update_handleConnected () override;
5252
virtual NetworkConnectionState update_handleDisconnecting() override;
5353
virtual NetworkConnectionState update_handleDisconnected () override;
54+
virtual NetworkConnectionState update_handleError () override;
5455

5556

5657
private:

src/CellularConnectionHandler.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,8 @@ NetworkConnectionState CellularConnectionHandler::update_handleDisconnected()
123123
return NetworkConnectionState::CLOSED;
124124
}
125125

126+
NetworkConnectionState CellularConnectionHandler::update_handleError() {
127+
return NetworkConnectionState::ERROR;
128+
}
129+
126130
#endif /* #ifdef BOARD_HAS_CELLULAR */

src/CellularConnectionHandler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ class CellularConnectionHandler : public ConnectionHandler
5151
virtual NetworkConnectionState update_handleConnected () override;
5252
virtual NetworkConnectionState update_handleDisconnecting() override;
5353
virtual NetworkConnectionState update_handleDisconnected () override;
54+
virtual NetworkConnectionState update_handleError () override;
5455

5556

5657
private:

src/ConnectionHandlerInterface.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ NetworkConnectionState ConnectionHandler::updateConnectionState() {
7878
case NetworkConnectionState::CONNECTED: next_net_connection_state = update_handleConnected (); break;
7979
case NetworkConnectionState::DISCONNECTING: next_net_connection_state = update_handleDisconnecting(); break;
8080
case NetworkConnectionState::DISCONNECTED: next_net_connection_state = update_handleDisconnected (); break;
81-
case NetworkConnectionState::ERROR: break;
81+
case NetworkConnectionState::ERROR: next_net_connection_state = update_handleError (); break;
8282
case NetworkConnectionState::CLOSED: break;
8383
}
8484

src/ConnectionHandlerInterface.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ class ConnectionHandler {
124124
virtual NetworkConnectionState update_handleConnected () = 0;
125125
virtual NetworkConnectionState update_handleDisconnecting() = 0;
126126
virtual NetworkConnectionState update_handleDisconnected () = 0;
127+
virtual NetworkConnectionState update_handleError () = 0;
127128

128129
models::NetworkSetting _settings;
129130

src/EthernetConnectionHandler.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,4 +186,8 @@ NetworkConnectionState EthernetConnectionHandler::update_handleDisconnected()
186186
}
187187
}
188188

189+
NetworkConnectionState EthernetConnectionHandler::update_handleError() {
190+
return NetworkConnectionState::ERROR;
191+
}
192+
189193
#endif /* #ifdef BOARD_HAS_ETHERNET */

src/EthernetConnectionHandler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ class EthernetConnectionHandler : public ConnectionHandler
6969
virtual NetworkConnectionState update_handleConnected () override;
7070
virtual NetworkConnectionState update_handleDisconnecting() override;
7171
virtual NetworkConnectionState update_handleDisconnected () override;
72+
virtual NetworkConnectionState update_handleError () override;
7273

7374
private:
7475

src/GSMConnectionHandler.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,4 +160,14 @@ NetworkConnectionState GSMConnectionHandler::update_handleDisconnected()
160160
}
161161
}
162162

163+
NetworkConnectionState GSMConnectionHandler::update_handleError()
164+
{
165+
if (_keep_alive) {
166+
return NetworkConnectionState::INIT;
167+
}
168+
169+
return NetworkConnectionState::ERROR;
170+
171+
}
172+
163173
#endif /* #ifdef BOARD_HAS_GSM */

src/GSMConnectionHandler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ class GSMConnectionHandler : public ConnectionHandler
5050
virtual NetworkConnectionState update_handleConnected () override;
5151
virtual NetworkConnectionState update_handleDisconnecting() override;
5252
virtual NetworkConnectionState update_handleDisconnected () override;
53+
virtual NetworkConnectionState update_handleError () override;
5354

5455

5556
private:

0 commit comments

Comments
 (0)