Skip to content

Commit 920cc4a

Browse files
committed
Moving implementation of connect/disconnect into base class Arduino_ConnectionHandler
1 parent af63002 commit 920cc4a

10 files changed

+44
-81
lines changed

src/Arduino_ConnectionHandler.cpp

+26
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,36 @@
2121

2222
#include "Arduino_ConnectionHandler.h"
2323

24+
/******************************************************************************
25+
CONSTRUCTOR/DESTRUCTOR
26+
******************************************************************************/
27+
28+
ConnectionHandler::ConnectionHandler(bool const keep_alive)
29+
: _keep_alive{keep_alive}
30+
, _netConnectionState{NetworkConnectionState::INIT}
31+
{
32+
33+
}
34+
2435
/******************************************************************************
2536
PUBLIC MEMBER FUNCTIONS
2637
******************************************************************************/
2738

39+
void ConnectionHandler::connect()
40+
{
41+
if (_netConnectionState != NetworkConnectionState::INIT && _netConnectionState != NetworkConnectionState::CONNECTING)
42+
{
43+
_keep_alive = true;
44+
_netConnectionState = NetworkConnectionState::INIT;
45+
}
46+
}
47+
48+
void ConnectionHandler::disconnect()
49+
{
50+
_keep_alive = false;
51+
_netConnectionState = NetworkConnectionState::DISCONNECTING;
52+
}
53+
2854
void ConnectionHandler::addCallback(NetworkConnectionEvent const event, OnNetworkEventCallback callback) {
2955
switch (event) {
3056
case NetworkConnectionEvent::CONNECTED: _on_connect_event_callback = callback; break;

src/Arduino_ConnectionHandler.h

+10-3
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ typedef void (*OnNetworkEventCallback)();
136136

137137
class ConnectionHandler {
138138
public:
139+
140+
ConnectionHandler(bool const keep_alive);
141+
142+
139143
virtual NetworkConnectionState check() = 0;
140144

141145
#if defined(BOARD_HAS_WIFI) || defined(BOARD_HAS_GSM) || defined(BOARD_HAS_NB)
@@ -153,16 +157,19 @@ class ConnectionHandler {
153157
virtual NetworkConnectionState getStatus() __attribute__((deprecated)) {
154158
return _netConnectionState;
155159
}
156-
virtual void connect() = 0;
157-
virtual void disconnect() = 0;
160+
161+
void connect();
162+
void disconnect();
163+
158164
void addCallback(NetworkConnectionEvent const event, OnNetworkEventCallback callback);
159165
void addConnectCallback(OnNetworkEventCallback callback) __attribute__((deprecated));
160166
void addDisconnectCallback(OnNetworkEventCallback callback) __attribute__((deprecated));
161167
void addErrorCallback(OnNetworkEventCallback callback) __attribute__((deprecated));
162168

163169
protected:
164170

165-
NetworkConnectionState _netConnectionState = NetworkConnectionState::INIT;
171+
bool _keep_alive;
172+
NetworkConnectionState _netConnectionState;
166173

167174
void execCallback(NetworkConnectionEvent const event);
168175

src/Arduino_GSMConnectionHandler.cpp

+2-17
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ static unsigned int const CHECK_INTERVAL_TABLE[] =
5555
******************************************************************************/
5656

5757
GSMConnectionHandler::GSMConnectionHandler(const char * pin, const char * apn, const char * login, const char * pass, bool const keep_alive)
58-
: _pin(pin)
58+
: ConnectionHandler{keep_alive}
59+
, _pin(pin)
5960
, _apn(apn)
6061
, _login(login)
6162
, _pass(pass)
62-
, _keep_alive(keep_alive)
6363
, _lastConnectionTickTime(millis())
6464
{
6565

@@ -99,21 +99,6 @@ NetworkConnectionState GSMConnectionHandler::check()
9999
return _netConnectionState;
100100
}
101101

102-
void GSMConnectionHandler::disconnect()
103-
{
104-
_keep_alive = false;
105-
_netConnectionState = NetworkConnectionState::DISCONNECTING;
106-
}
107-
108-
void GSMConnectionHandler::connect()
109-
{
110-
if (_netConnectionState != NetworkConnectionState::INIT && _netConnectionState != NetworkConnectionState::CONNECTING)
111-
{
112-
_keep_alive = true;
113-
_netConnectionState = NetworkConnectionState::INIT;
114-
}
115-
}
116-
117102
/******************************************************************************
118103
PRIVATE MEMBER FUNCTIONS
119104
******************************************************************************/

src/Arduino_GSMConnectionHandler.h

-3
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ class GSMConnectionHandler : public ConnectionHandler
4242
virtual NetworkConnectionState check() override;
4343
virtual Client & getClient() override { return _gsm_client; };
4444
virtual UDP & getUDP() override { return _gsm_udp; };
45-
virtual void disconnect() override;
46-
virtual void connect() override;
4745

4846

4947
private:
@@ -52,7 +50,6 @@ class GSMConnectionHandler : public ConnectionHandler
5250
const char * _apn;
5351
const char * _login;
5452
const char * _pass;
55-
bool _keep_alive;
5653
unsigned long _lastConnectionTickTime;
5754

5855
GSM _gsm;

src/Arduino_LoRaConnectionHandler.cpp

+2-15
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,12 @@ static unsigned int const CHECK_INTERVAL_TABLE[] =
6161
******************************************************************************/
6262

6363
LoRaConnectionHandler::LoRaConnectionHandler(char const * appeui, char const * appkey, _lora_band const band, _lora_class const device_class)
64-
: _appeui(appeui)
64+
: ConnectionHandler{false}
65+
, _appeui(appeui)
6566
, _appkey(appkey)
6667
, _band(band)
6768
, _device_class(device_class)
6869
, _lastConnectionTickTime(millis())
69-
, _keep_alive(false)
7070
{
7171

7272
}
@@ -137,19 +137,6 @@ bool LoRaConnectionHandler::available()
137137
return _modem.available();
138138
}
139139

140-
void LoRaConnectionHandler::connect()
141-
{
142-
if (_netConnectionState != NetworkConnectionState::INIT && _netConnectionState != NetworkConnectionState::CONNECTING)
143-
{
144-
_keep_alive = true;
145-
_netConnectionState = NetworkConnectionState::INIT;
146-
}
147-
}
148-
void LoRaConnectionHandler::disconnect()
149-
{
150-
/* Do nothing */
151-
}
152-
153140
/******************************************************************************
154141
PRIVATE MEMBER FUNCTIONS
155142
******************************************************************************/

src/Arduino_LoRaConnectionHandler.h

-3
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ class LoRaConnectionHandler : public ConnectionHandler
3939
virtual int write(const uint8_t *buf, size_t size) override;
4040
virtual int read() override;
4141
virtual bool available() override;
42-
virtual void disconnect() override;
43-
virtual void connect() override;
4442

4543

4644
private:
@@ -50,7 +48,6 @@ class LoRaConnectionHandler : public ConnectionHandler
5048
_lora_band _band;
5149
_lora_class _device_class;
5250
unsigned long _lastConnectionTickTime;
53-
bool _keep_alive;
5451
LoRaModem _modem;
5552

5653
NetworkConnectionState update_handleInit();

src/Arduino_NBConnectionHandler.cpp

+2-17
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,12 @@ NBConnectionHandler::NBConnectionHandler(char const * pin, char const * apn, boo
6666
}
6767

6868
NBConnectionHandler::NBConnectionHandler(char const * pin, char const * apn, char const * login, char const * pass, bool const keep_alive)
69-
: _pin(pin)
69+
: ConnectionHandler{keep_alive}
70+
, _pin(pin)
7071
, _apn(apn)
7172
, _login(login)
7273
, _pass(pass)
7374
, _lastConnectionTickTime(millis())
74-
, _keep_alive(keep_alive)
7575
{
7676

7777
}
@@ -110,21 +110,6 @@ NetworkConnectionState NBConnectionHandler::check()
110110
return _netConnectionState;
111111
}
112112

113-
void NBConnectionHandler::connect()
114-
{
115-
if (_netConnectionState != NetworkConnectionState::INIT && _netConnectionState != NetworkConnectionState::CONNECTING)
116-
{
117-
_keep_alive = true;
118-
_netConnectionState = NetworkConnectionState::INIT;
119-
}
120-
}
121-
122-
void NBConnectionHandler::disconnect()
123-
{
124-
_keep_alive = false;
125-
_netConnectionState = NetworkConnectionState::DISCONNECTING;
126-
}
127-
128113
/******************************************************************************
129114
PRIVATE MEMBER FUNCTIONS
130115
******************************************************************************/

src/Arduino_NBConnectionHandler.h

-3
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ class NBConnectionHandler : public ConnectionHandler
4343
virtual NetworkConnectionState check() override;
4444
virtual Client & getClient() override { return _nb_client; };
4545
virtual UDP & getUDP() override { return _nb_udp; };
46-
virtual void disconnect() override;
47-
virtual void connect() override;
4846

4947

5048
private:
@@ -56,7 +54,6 @@ class NBConnectionHandler : public ConnectionHandler
5654
char const * _login;
5755
char const * _pass;
5856
unsigned long _lastConnectionTickTime;
59-
bool _keep_alive;
6057

6158
NB _nb;
6259
GPRS _nb_gprs;

src/Arduino_WiFiConnectionHandler.cpp

+2-17
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,10 @@ static unsigned int const CHECK_INTERVAL_TABLE[] =
4444
******************************************************************************/
4545

4646
WiFiConnectionHandler::WiFiConnectionHandler(char const * ssid, char const * pass, bool const keep_alive)
47-
: _ssid{ssid}
47+
: ConnectionHandler{keep_alive}
48+
, _ssid{ssid}
4849
, _pass{pass}
4950
, _lastConnectionTickTime{millis()}
50-
, _keep_alive{keep_alive}
5151
{
5252

5353
}
@@ -94,21 +94,6 @@ NetworkConnectionState WiFiConnectionHandler::check()
9494
PRIVATE MEMBER FUNCTIONS
9595
******************************************************************************/
9696

97-
void WiFiConnectionHandler::connect()
98-
{
99-
if (_netConnectionState != NetworkConnectionState::INIT && _netConnectionState != NetworkConnectionState::CONNECTING)
100-
{
101-
_keep_alive = true;
102-
_netConnectionState = NetworkConnectionState::INIT;
103-
}
104-
}
105-
106-
void WiFiConnectionHandler::disconnect()
107-
{
108-
_keep_alive = false;
109-
_netConnectionState = NetworkConnectionState::DISCONNECTING;
110-
}
111-
11297
NetworkConnectionState WiFiConnectionHandler::update_handleInit()
11398
{
11499
#ifndef BOARD_ESP8266

src/Arduino_WiFiConnectionHandler.h

-3
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,12 @@ class WiFiConnectionHandler : public ConnectionHandler
4141
virtual NetworkConnectionState check() override;
4242
virtual Client & getClient() override{ return _wifi_client; }
4343
virtual UDP & getUDP() override { return _wifi_udp; }
44-
virtual void disconnect() override;
45-
virtual void connect() override;
4644

4745

4846
private:
4947

5048
char const * _ssid;
5149
char const * _pass;
52-
bool _keep_alive;
5350
unsigned long _lastConnectionTickTime;
5451

5552
WiFiUDP _wifi_udp;

0 commit comments

Comments
 (0)