Skip to content

Commit 5920147

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

File tree

4 files changed

+16
-1
lines changed

4 files changed

+16
-1
lines changed

src/ConnectionHandlerInterface.cpp

Lines changed: 10 additions & 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

@@ -88,6 +88,15 @@ NetworkConnectionState ConnectionHandler::updateConnectionState() {
8888
return next_net_connection_state;
8989
}
9090

91+
NetworkConnectionState ConnectionHandler::update_handleError()
92+
{
93+
if (_keep_alive) {
94+
return NetworkConnectionState::INIT;
95+
}
96+
97+
return NetworkConnectionState::ERROR;
98+
}
99+
91100
void ConnectionHandler::updateCallback(NetworkConnectionState next_net_connection_state) {
92101

93102
/* Check the next state to determine the kind of state conversion which has occurred (and call the appropriate callback) */

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 ();
127128

128129
models::NetworkSetting _settings;
129130

src/GenericConnectionHandler.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,7 @@ NetworkConnectionState GenericConnectionHandler::update_handleDisconnecting() {
180180
NetworkConnectionState GenericConnectionHandler::update_handleDisconnected() {
181181
return _ch != nullptr ? _ch->update_handleDisconnected() : NetworkConnectionState::INIT;
182182
}
183+
184+
NetworkConnectionState GenericConnectionHandler::update_handleError() {
185+
return _ch != nullptr ? _ch->update_handleError() : NetworkConnectionState::INIT;
186+
}

src/GenericConnectionHandler.h

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

7374
private:
7475

0 commit comments

Comments
 (0)