-
Notifications
You must be signed in to change notification settings - Fork 82
Add GSM and Ethernet conn_manager + add fallback UDP based getTime() #31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
db14c67
68d2c3c
1324ac6
19c688e
e0abeb8
75ddfcc
da7179b
e01a981
4014095
a243573
096022a
98efd08
e905238
8646505
8eefcc0
e4e11e5
20cbb75
7fc775b
bff994e
ae7dae9
f86f04f
961a71c
fb161bd
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,15 @@ | ||
/* | ||
Fill in your login credentials: | ||
|
||
The following lines are used for WiFi enabled boards (MKR1000, MKR WiFi 1010) | ||
*/ | ||
#define SECRET_SSID "YOUR_WIFI_NETWORK_NAME" | ||
#define SECRET_PASS "YOUR_WIFI_PASSWORD" | ||
|
||
/* | ||
If you prefer using a MKR GSM 1400 comment the lines above and uncommet the following. | ||
PIN, APN, Login and Password are supplied by your Cellular Data provider. | ||
*/ | ||
//#define SECRET_PIN "" | ||
//#define SECRET_APN "" | ||
//#define SECRET_LOGIN "" | ||
//#define SECRET_PASS "" |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -1,9 +1,13 @@ | ||||||
#include <ArduinoIoTCloud.h> | ||||||
/* | ||||||
The following include line is used for WiFi enabled boards (MKR1000, MKR WiFi 1010) | ||||||
*/ | ||||||
#include <WiFiConnectionManager.h> | ||||||
/* | ||||||
If you prefer using a MKR GSM 1400 comment the line above and uncommet the following. | ||||||
*/ | ||||||
//#include <GSMConnectionManager.h> | ||||||
|
||||||
|
||||||
char ssid[] = SECRET_SSID; // your network SSID (name) | ||||||
char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP) | ||||||
// Your THING_ID | ||||||
#define THING_ID "ARDUINO_IOT_CLOUD_THING_ID" | ||||||
|
||||||
|
@@ -18,4 +22,11 @@ void initProperties() { | |||||
ArduinoCloud.addProperty(potentiometer, READ, ON_CHANGE); | ||||||
} | ||||||
|
||||||
ConnectionManager *ArduinoIoTPreferredConnection = new WiFiConnectionManager(SECRET_SSID, SECRET_PASS); | ||||||
/* | ||||||
The following include line is used for WiFi enabled boards (MKR1000, MKR WiFi 1010) | ||||||
*/ | ||||||
ConnectionManager *ArduinoIoTPreferredConnection = new WiFiConnectionManager(SECRET_SSID, SECRET_PASS); | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. A quick side note: Everything that follows is a suggestion for improvement and must not necessarily implemented within this PR. We can (and probably should) do cleanups in further PRs after this is merged. A misconception, for which I've fallen myself until quite recently, is that if you instantiate derived classes with virtual functions in it (C++ runtime polymorphism) you always need to use the keyword
Suggested change
Doing it this way the memory for the object is allocated on the stack and not on the heap (static memory allocation vs dynamic memory allocation - prefer the former whenever possible/feasible). The reason above statement works is because of a C++ "feature" called object slicing. Now object slicing has some pitfalls to it but it can be used effectively in this scenario where we have an abstract base class (= one or more pure virtual functions in it) When passing the connection around to various classes you then have to use pass-by-reference. void myFunc(ConnectionManager & connection_mgr) { ... It´s also possible to store a reference of it as a class member variable. class MyClass {
public:
void MyClass(ConnectionManager & connection_mgr) : _connection_mgr(connection_mgr) { ... }
void myMemberFunc();
private:
ConnectionManager & _connection_mgr;
}; The void MyClass:myMemberFunc() {
_connection_mgr.check();
} Furthermore I'd also suggest to keep variable names in lowercase so to not confuse them with class/type names. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. interesting... I'll proceed to merge this PR in :) |
||||||
/* | ||||||
If you prefer using a MKR GSM 1400 comment the line above and uncommet the following. | ||||||
*/ | ||||||
//ConnectionManager *ArduinoIoTPreferredConnection = new GSMConnectionManager(SECRET_PIN, SECRET_APN, SECRET_LOGIN, SECRET_PASS); |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
name=ArduinoIoTCloud | ||
version=0.5.0 | ||
version=0.5.1 | ||
author=Arduino | ||
maintainer=Arduino <[email protected]> | ||
sentence=This library allows to connect to the Arduino IoT Cloud service. | ||
|
Original file line number | Diff line number | Diff line change | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -43,14 +43,12 @@ typedef struct { | |||||||||||||
extern ConnectionManager *ArduinoIoTPreferredConnection; | ||||||||||||||
|
||||||||||||||
enum ArduinoIoTConnectionStatus { | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe it would be an idea to convert the enum into a enum class?
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @lxrobotics |
||||||||||||||
IOT_STATUS_IDLE,/* only at start */ | ||||||||||||||
IOT_STATUS_CLOUD_IDLE, | ||||||||||||||
IOT_STATUS_CLOUD_CONNECTING, | ||||||||||||||
IOT_STATUS_CLOUD_CONNECTED, | ||||||||||||||
IOT_STATUS_CLOUD_DISCONNECTED, | ||||||||||||||
IOT_STATUS_CLOUD_RECONNECTING, | ||||||||||||||
IOT_STATUS_CLOUD_ERROR, | ||||||||||||||
IOT_STATUS_ERROR_GENERIC | ||||||||||||||
}; | ||||||||||||||
|
||||||||||||||
class ArduinoIoTCloudClass { | ||||||||||||||
|
@@ -130,7 +128,7 @@ class ArduinoIoTCloudClass { | |||||||||||||
ArduinoIoTConnectionStatus getIoTStatus() { return iotStatus; } | ||||||||||||||
void setIoTConnectionState(ArduinoIoTConnectionStatus _newState); | ||||||||||||||
private: | ||||||||||||||
ArduinoIoTConnectionStatus iotStatus = IOT_STATUS_IDLE; | ||||||||||||||
ArduinoIoTConnectionStatus iotStatus = IOT_STATUS_CLOUD_IDLE; | ||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. In case you want to go ahead with an enum class:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same as above |
||||||||||||||
ConnectionManager *connection; | ||||||||||||||
static void onMessage(int length); | ||||||||||||||
void handleMessage(int length); | ||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.