Skip to content

Commit 1d770ad

Browse files
committed
Extend available callbacks by allowing to register a callback in case of failure to establish connection.
1 parent 6ec2ec0 commit 1d770ad

3 files changed

+12
-4
lines changed

src/Arduino_ConnectionHandler.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -107,9 +107,10 @@ void ConnectionHandler::addCallback(NetworkConnectionEvent const event, OnNetwor
107107
{
108108
switch (event)
109109
{
110-
case NetworkConnectionEvent::CONNECTED: _on_connect_event_callback = callback; break;
111-
case NetworkConnectionEvent::DISCONNECTED: _on_disconnect_event_callback = callback; break;
112-
case NetworkConnectionEvent::ERROR: _on_error_event_callback = callback; break;
110+
case NetworkConnectionEvent::CONNECTED: _on_connect_event_callback = callback; break;
111+
case NetworkConnectionEvent::DISCONNECTED: _on_disconnect_event_callback = callback; break;
112+
case NetworkConnectionEvent::ERROR: _on_error_event_callback = callback; break;
113+
case NetworkConnectionEvent::CONNECTION_FAILED: _on_connection_failed_event_callback = callback; break;
113114
}
114115
}
115116

src/Arduino_ConnectionHandler.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,8 @@ enum class NetworkConnectionState : unsigned int {
152152
enum class NetworkConnectionEvent {
153153
CONNECTED,
154154
DISCONNECTED,
155-
ERROR
155+
ERROR,
156+
CONNECTION_FAILED,
156157
};
157158

158159
typedef void (*OnNetworkEventCallback)();
@@ -218,6 +219,10 @@ class ConnectionHandler {
218219
virtual NetworkConnectionState update_handleDisconnecting() = 0;
219220
virtual NetworkConnectionState update_handleDisconnected () = 0;
220221

222+
protected:
223+
224+
OnNetworkEventCallback _on_connection_failed_event_callback = NULL;
225+
221226

222227
private:
223228

src/Arduino_WiFiConnectionHandler.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ NetworkConnectionState WiFiConnectionHandler::update_handleConnecting()
103103

104104
if (WiFi.status() != NETWORK_CONNECTED)
105105
{
106+
if (_on_connection_failed_event_callback)
107+
_on_connection_failed_event_callback();
106108
#if !defined(__AVR__)
107109
Debug.print(DBG_ERROR, F("Connection to \"%s\" failed"), _ssid);
108110
Debug.print(DBG_INFO, F("Retrying in \"%d\" milliseconds"), CHECK_INTERVAL_TABLE[static_cast<unsigned int>(NetworkConnectionState::CONNECTING)]);

0 commit comments

Comments
 (0)