Skip to content

Commit d405789

Browse files
authored
Merge pull request #11 from mirkokurt/lora-support
Adding LoRa support to Arduino_ConnectionHandler.
2 parents 67d5ab4 + 5ff90a5 commit d405789

13 files changed

+504
-154
lines changed

library.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,4 @@ paragraph=Originally part of ArduinoIoTCloud
77
category=Communication
88
url=https://github.com/arduino-libraries/Arduino_ConnectionHandler
99
architectures=samd,esp32,esp8266
10-
depends=Arduino_DebugUtils, WiFi101, WiFiNINA, MKRGSM, MKRNB
10+
depends=Arduino_DebugUtils, WiFi101, WiFiNINA, MKRGSM, MKRNB, MKRWAN

src/Arduino_ConnectionHandler.cpp

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
/*
2+
This file is part of ArduinoIoTCloud.
3+
4+
Copyright 2019 ARDUINO SA (http://www.arduino.cc/)
5+
6+
This software is released under the GNU General Public License version 3,
7+
which covers the main part of arduino-cli.
8+
The terms of this license can be found at:
9+
https://www.gnu.org/licenses/gpl-3.0.en.html
10+
11+
You can be released from the requirements of the above licenses by purchasing
12+
a commercial license. Buying such a license is mandatory if you want to modify or
13+
otherwise use the software for commercial activities involving the Arduino
14+
software without disclosing the source code of your own applications. To purchase
15+
a commercial license, send an email to license@arduino.cc.
16+
*/
17+
18+
/******************************************************************************
19+
INCLUDE
20+
******************************************************************************/
21+
22+
#include "Arduino_ConnectionHandler.h"
23+
24+
/******************************************************************************
25+
PUBLIC MEMBER FUNCTIONS
26+
******************************************************************************/
27+
28+
void ConnectionHandler::addCallback(NetworkConnectionEvent const event, OnNetworkEventCallback callback) {
29+
switch (event) {
30+
case NetworkConnectionEvent::CONNECTED: _on_connect_event_callback = callback; break;
31+
case NetworkConnectionEvent::DISCONNECTED: _on_disconnect_event_callback = callback; break;
32+
case NetworkConnectionEvent::ERROR: _on_error_event_callback = callback; break;
33+
case NetworkConnectionEvent::INIT: ; break;
34+
case NetworkConnectionEvent::CONNECTING: ; break;
35+
case NetworkConnectionEvent::DISCONNECTING: ; break;
36+
case NetworkConnectionEvent::CLOSED: ; break;
37+
}
38+
}
39+
40+
void ConnectionHandler::addConnectCallback(OnNetworkEventCallback callback) {
41+
_on_connect_event_callback = callback;
42+
}
43+
void ConnectionHandler::addDisconnectCallback(OnNetworkEventCallback callback) {
44+
_on_disconnect_event_callback = callback;
45+
}
46+
void ConnectionHandler::addErrorCallback(OnNetworkEventCallback callback) {
47+
_on_error_event_callback = callback;
48+
}
49+
50+
void ConnectionHandler::execNetworkEventCallback(OnNetworkEventCallback & callback, void * callback_arg) {
51+
if (callback) {
52+
(*callback)(callback_arg);
53+
}
54+
}
55+

src/Arduino_ConnectionHandler.h

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@
2222
INCLUDES
2323
******************************************************************************/
2424

25-
#include <Client.h>
26-
#include <Udp.h>
27-
2825
#include <Arduino_DebugUtils.h>
2926

3027
/******************************************************************************
@@ -57,30 +54,27 @@ class ConnectionHandler {
5754
virtual void init() = 0;
5855
virtual void check() = 0;
5956
virtual void update() = 0;
60-
virtual unsigned long getTime() = 0;
61-
virtual Client &getClient();
62-
virtual UDP &getUDP();
6357

6458
virtual NetworkConnectionState getStatus() {
6559
return netConnectionState;
6660
}
6761
virtual void connect();
6862
virtual void disconnect();
69-
virtual void addCallback(NetworkConnectionEvent const event, OnNetworkEventCallback callback);
70-
virtual void addConnectCallback(OnNetworkEventCallback callback);
71-
virtual void addDisconnectCallback(OnNetworkEventCallback callback);
72-
virtual void addErrorCallback(OnNetworkEventCallback callback);
73-
74-
private:
75-
OnNetworkEventCallback _on_connect_event_callback,
76-
_on_disconnect_event_callback,
77-
_on_error_event_callback;
63+
void addCallback(NetworkConnectionEvent const event, OnNetworkEventCallback callback);
64+
void addConnectCallback(OnNetworkEventCallback callback);
65+
void addDisconnectCallback(OnNetworkEventCallback callback);
66+
void addErrorCallback(OnNetworkEventCallback callback);
7867

7968
protected:
69+
OnNetworkEventCallback _on_connect_event_callback = NULL,
70+
_on_disconnect_event_callback = NULL,
71+
_on_error_event_callback = NULL;
8072

8173
unsigned long lastValidTimestamp = 0; /* UNUSED */
8274
NetworkConnectionState netConnectionState = NetworkConnectionState::DISCONNECTED;
8375

76+
static void execNetworkEventCallback(OnNetworkEventCallback & callback, void * callback_arg);
77+
8478
};
8579

8680
#ifdef ARDUINO_SAMD_MKR1000
@@ -121,6 +115,11 @@ class ConnectionHandler {
121115
#define NETWORK_CONNECTED NB_NetworkStatus_t::GPRS_READY
122116
#endif
123117

118+
#if defined(ARDUINO_SAMD_MKRWAN1300) || defined(ARDUINO_SAMD_MKRWAN1310)
119+
#include <MKRWAN.h>
120+
#define BOARD_HAS_LORA
121+
#endif
122+
124123
#if defined(ARDUINO_ESP8266_ESP12) \
125124
|| defined(ESP8266) \
126125
|| defined(ESP8266_ESP01) \
@@ -163,12 +162,13 @@ class ConnectionHandler {
163162
#define WIFI_FIRMWARE_VERSION_REQUIRED WIFI_FIRMWARE_REQUIRED
164163
#endif
165164

166-
#ifdef BOARD_HAS_WIFI
167-
#include "Arduino_WiFiConnectionHandler.h"
168-
#elif defined(BOARD_HAS_GSM)
169-
#include "Arduino_GSMConnectionHandler.h"
170-
#elif defined(BOARD_HAS_NB)
171-
#include "Arduino_NBConnectionHandler.h"
165+
166+
#if defined(BOARD_HAS_WIFI) || defined(BOARD_HAS_GSM) || defined(BOARD_HAS_NB)
167+
#include "Arduino_TcpIpConnectionHandler.h"
168+
#endif
169+
170+
#if defined(ARDUINO_SAMD_MKRWAN1300) || defined(ARDUINO_SAMD_MKRWAN1310)
171+
#include "Arduino_LPWANConnectionHandler.h"
172172
#endif
173173

174174
#endif /* CONNECTION_HANDLER_H_ */

src/Arduino_GSMConnectionHandler.cpp

Lines changed: 1 addition & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,7 @@ GSMConnectionHandler::GSMConnectionHandler(const char *pin, const char *apn, con
4949
pass(pass),
5050
lastConnectionTickTime(millis()),
5151
connectionTickTimeInterval(CHECK_INTERVAL_IDLE),
52-
keepAlive(_keepAlive),
53-
_on_connect_event_callback(NULL),
54-
_on_disconnect_event_callback(NULL),
55-
_on_error_event_callback(NULL) {
52+
keepAlive(_keepAlive) {
5653
}
5754

5855
/******************************************************************************
@@ -71,34 +68,6 @@ void GSMConnectionHandler::init() {
7168
}
7269
}
7370

74-
void GSMConnectionHandler::addCallback(NetworkConnectionEvent const event, OnNetworkEventCallback callback) {
75-
switch (event) {
76-
case NetworkConnectionEvent::CONNECTED: _on_connect_event_callback = callback; break;
77-
case NetworkConnectionEvent::DISCONNECTED: _on_disconnect_event_callback = callback; break;
78-
case NetworkConnectionEvent::ERROR: _on_error_event_callback = callback; break;
79-
case NetworkConnectionEvent::INIT: ; break;
80-
case NetworkConnectionEvent::CONNECTING: ; break;
81-
case NetworkConnectionEvent::DISCONNECTING: ; break;
82-
case NetworkConnectionEvent::CLOSED: ; break;
83-
}
84-
}
85-
86-
void GSMConnectionHandler::addConnectCallback(OnNetworkEventCallback callback) {
87-
_on_connect_event_callback = callback;
88-
}
89-
void GSMConnectionHandler::addDisconnectCallback(OnNetworkEventCallback callback) {
90-
_on_disconnect_event_callback = callback;
91-
}
92-
void GSMConnectionHandler::addErrorCallback(OnNetworkEventCallback callback) {
93-
_on_error_event_callback = callback;
94-
}
95-
96-
void GSMConnectionHandler::execNetworkEventCallback(OnNetworkEventCallback & callback, void * callback_arg) {
97-
if (callback) {
98-
(*callback)(callback_arg);
99-
}
100-
}
101-
10271
unsigned long GSMConnectionHandler::getTime() {
10372
return gsmAccess.getTime();
10473
}

src/Arduino_GSMConnectionHandler.h

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,16 @@
2222
INCLUDE
2323
******************************************************************************/
2424

25-
#include "Arduino_ConnectionHandler.h"
25+
#include "Arduino_TcpIpConnectionHandler.h"
26+
2627

2728
#ifdef BOARD_HAS_GSM /* Only compile if this is a board with GSM */
2829

2930
/******************************************************************************
3031
CLASS DECLARATION
3132
******************************************************************************/
3233

33-
class GSMConnectionHandler : public ConnectionHandler {
34+
class GSMConnectionHandler : public TcpIpConnectionHandler {
3435
public:
3536
GSMConnectionHandler(const char *pin, const char *apn, const char *login, const char *pass, const bool keepAlive = true);
3637

@@ -55,11 +56,6 @@ class GSMConnectionHandler : public ConnectionHandler {
5556
virtual void disconnect();
5657
virtual void connect();
5758

58-
virtual void addCallback(NetworkConnectionEvent const event, OnNetworkEventCallback callback);
59-
virtual void addConnectCallback(OnNetworkEventCallback callback);
60-
virtual void addDisconnectCallback(OnNetworkEventCallback callback);
61-
virtual void addErrorCallback(OnNetworkEventCallback callback);
62-
6359
private:
6460

6561
void changeConnectionState(NetworkConnectionState _newState);
@@ -79,11 +75,6 @@ class GSMConnectionHandler : public ConnectionHandler {
7975

8076
bool keepAlive;
8177

82-
OnNetworkEventCallback _on_connect_event_callback,
83-
_on_disconnect_event_callback,
84-
_on_error_event_callback;
85-
86-
static void execNetworkEventCallback(OnNetworkEventCallback & callback, void * callback_arg);
8778
};
8879

8980
#endif /* #ifdef BOARD_HAS_GSM */

src/Arduino_LPWANConnectionHandler.h

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
This file is part of ArduinoIoTCloud.
3+
4+
Copyright 2019 ARDUINO SA (http://www.arduino.cc/)
5+
6+
This software is released under the GNU General Public License version 3,
7+
which covers the main part of arduino-cli.
8+
The terms of this license can be found at:
9+
https://www.gnu.org/licenses/gpl-3.0.en.html
10+
11+
You can be released from the requirements of the above licenses by purchasing
12+
a commercial license. Buying such a license is mandatory if you want to modify or
13+
otherwise use the software for commercial activities involving the Arduino
14+
software without disclosing the source code of your own applications. To purchase
15+
a commercial license, send an email to license@arduino.cc.
16+
*/
17+
18+
#ifndef ARDUINO_LPWAN_CONNECTION_HANDLER_H_
19+
#define ARDUINO_LPWAN_CONNECTION_HANDLER_H_
20+
21+
/******************************************************************************
22+
INCLUDES
23+
******************************************************************************/
24+
25+
#include <Arduino_DebugUtils.h>
26+
#include <Arduino_ConnectionHandler.h>
27+
28+
/******************************************************************************
29+
CLASS DECLARATION
30+
******************************************************************************/
31+
32+
class LPWANConnectionHandler : public ConnectionHandler {
33+
public:
34+
virtual void init() = 0;
35+
virtual void check() = 0;
36+
virtual void update() = 0;
37+
virtual unsigned long getTime() = 0;
38+
39+
virtual int write(const uint8_t *buf, size_t size) = 0;
40+
virtual int read() = 0;
41+
virtual bool available() = 0;
42+
43+
virtual void connect() = 0;
44+
virtual void disconnect() = 0;
45+
46+
};
47+
48+
#if defined(ARDUINO_SAMD_MKRWAN1300) || defined(ARDUINO_SAMD_MKRWAN1310)
49+
#include "Arduino_LoRaConnectionHandler.h"
50+
#endif
51+
52+
53+
#endif /* LPWAN_CONNECTION_HANDLER_H_ */

0 commit comments

Comments
 (0)