Skip to content

Commit 5cf8e50

Browse files
committed
refactor addpropertyReal methods
1 parent fa7ae71 commit 5cf8e50

File tree

3 files changed

+160
-105
lines changed

3 files changed

+160
-105
lines changed

src/ArduinoIoTCloud.cpp

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
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 [email protected].
16+
*/
17+
18+
#include <ArduinoIoTCloud.h>
19+
20+
void ArduinoIoTCloudClass::addPropertyReal(ArduinoCloudProperty& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
21+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
22+
}
23+
24+
void ArduinoIoTCloudClass::addPropertyReal(ArduinoCloudProperty& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
25+
Permission permission = Permission::ReadWrite;
26+
if (permission_type == READ) {
27+
permission = Permission::Read;
28+
} else if (permission_type == WRITE) {
29+
permission = Permission::Write;
30+
} else {
31+
permission = Permission::ReadWrite;
32+
}
33+
34+
if (seconds == ON_CHANGE) {
35+
Thing.addPropertyReal(property, name, permission, tag).publishOnChange(minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(synFn);
36+
} else {
37+
Thing.addPropertyReal(property, name, permission, tag).publishEvery(seconds).onUpdate(fn).onSync(synFn);
38+
}
39+
}
40+
41+
void ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
42+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
43+
}
44+
45+
void ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
46+
ArduinoCloudProperty* p = new CloudWrapperBool(property);
47+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
48+
}
49+
ArduinoCloudProperty& ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, Permission const permission) {
50+
return addPropertyReal(property, name, -1, permission);
51+
}
52+
ArduinoCloudProperty& ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, int tag, Permission const permission) {
53+
ArduinoCloudProperty* p = new CloudWrapperBool(property);
54+
return Thing.addPropertyReal(*p, name, permission, tag);
55+
}
56+
57+
void ArduinoIoTCloudClass::addPropertyReal(float& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
58+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
59+
}
60+
61+
void ArduinoIoTCloudClass::addPropertyReal(float& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
62+
ArduinoCloudProperty* p = new CloudWrapperFloat(property);
63+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
64+
}
65+
66+
ArduinoCloudProperty& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, Permission const permission) {
67+
return addPropertyReal(property, name, -1, permission);
68+
}
69+
70+
ArduinoCloudProperty& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, int tag, Permission const permission) {
71+
ArduinoCloudProperty* p = new CloudWrapperFloat(property);
72+
return Thing.addPropertyReal(*p, name, permission, tag);
73+
}
74+
75+
void ArduinoIoTCloudClass::addPropertyReal(int& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
76+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
77+
}
78+
79+
void ArduinoIoTCloudClass::addPropertyReal(int& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
80+
ArduinoCloudProperty* p = new CloudWrapperInt(property);
81+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
82+
}
83+
84+
ArduinoCloudProperty& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, Permission const permission) {
85+
return addPropertyReal(property, name, -1, permission);
86+
}
87+
88+
ArduinoCloudProperty& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, int tag, Permission const permission) {
89+
ArduinoCloudProperty* p = new CloudWrapperInt(property);
90+
return Thing.addPropertyReal(*p, name, permission, tag);
91+
}
92+
93+
void ArduinoIoTCloudClass::addPropertyReal(String& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
94+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
95+
}
96+
97+
void ArduinoIoTCloudClass::addPropertyReal(String& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(ArduinoCloudProperty & property)) {
98+
ArduinoCloudProperty* p = new CloudWrapperString(property);
99+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
100+
}
101+
102+
ArduinoCloudProperty& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, Permission const permission) {
103+
return addPropertyReal(property, name, -1, permission);
104+
}
105+
106+
ArduinoCloudProperty& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, int tag, Permission const permission) {
107+
ArduinoCloudProperty* p = new CloudWrapperString(property);
108+
return Thing.addPropertyReal(*p, name, permission, tag);
109+
}
110+
111+
void ArduinoIoTCloudClass::addCallback(ArduinoIoTCloudEvent const event, OnCloudEventCallback callback) {
112+
switch (event) {
113+
case ArduinoIoTCloudEvent::SYNC: _on_sync_event_callback = callback; break;
114+
case ArduinoIoTCloudEvent::CONNECT: _on_connect_event_callback = callback; break;
115+
case ArduinoIoTCloudEvent::DISCONNECT: _on_disconnect_event_callback = callback; break;
116+
}
117+
};
118+
119+
void ArduinoIoTCloudClass::execCloudEventCallback(OnCloudEventCallback& callback, void* callback_arg) {
120+
if (callback) {
121+
(*callback)(callback_arg);
122+
}
123+
}
124+
void ArduinoIoTCloudClass::printConnectionStatus(ArduinoIoTConnectionStatus status) {
125+
switch (status) {
126+
case ArduinoIoTConnectionStatus::IDLE: Debug.print(DBG_INFO, "Arduino IoT Cloud Connection status: IDLE"); break;
127+
case ArduinoIoTConnectionStatus::ERROR: Debug.print(DBG_ERROR, "Arduino IoT Cloud Connection status: ERROR"); break;
128+
case ArduinoIoTConnectionStatus::CONNECTING: Debug.print(DBG_INFO, "Arduino IoT Cloud Connection status: CONNECTING"); break;
129+
case ArduinoIoTConnectionStatus::RECONNECTING: Debug.print(DBG_INFO, "Arduino IoT Cloud Connection status: RECONNECTING"); break;
130+
case ArduinoIoTConnectionStatus::CONNECTED: Debug.print(DBG_INFO, "Arduino IoT Cloud Connection status: CONNECTED"); break;
131+
case ArduinoIoTConnectionStatus::DISCONNECTED: Debug.print(DBG_ERROR, "Arduino IoT Cloud Connection status: DISCONNECTED"); break;
132+
}
133+
}

src/ArduinoIoTCloud.h

Lines changed: 21 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -100,104 +100,39 @@ class ArduinoIoTCloudClass {
100100

101101
static unsigned long const DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS = 500; /* Data rate throttled to 2 Hz */
102102

103-
void addPropertyReal(ArduinoCloudProperty & property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS) {
104-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
105-
}
103+
void addPropertyReal(ArduinoCloudProperty& property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
106104

107-
void addPropertyReal(ArduinoCloudProperty& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty& property) = CLOUD_WINS) {
108-
Permission permission = Permission::ReadWrite;
109-
if (permission_type == READ) {
110-
permission = Permission::Read;
111-
} else if (permission_type == WRITE) {
112-
permission = Permission::Write;
113-
} else {
114-
permission = Permission::ReadWrite;
115-
}
116-
117-
if (seconds == ON_CHANGE) {
118-
Thing.addPropertyReal(property, name, permission, tag).publishOnChange(minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(synFn);
119-
} else {
120-
Thing.addPropertyReal(property, name, permission, tag).publishEvery(seconds).onUpdate(fn).onSync(synFn);
121-
}
122-
}
105+
void addPropertyReal(ArduinoCloudProperty& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
123106

124-
void addPropertyReal(bool& property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS) {
125-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
126-
}
107+
void addPropertyReal(bool& property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
108+
void addPropertyReal(bool& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
109+
ArduinoCloudProperty& addPropertyReal(bool& property, String name, Permission const permission);
110+
ArduinoCloudProperty& addPropertyReal(bool& property, String name, int tag, Permission const permission);
127111

128-
void addPropertyReal(bool& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS) {
129-
ArduinoCloudProperty *p = new CloudWrapperBool(property);
130-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
131-
}
132-
ArduinoCloudProperty& addPropertyReal(bool& property, String name, Permission const permission) {
133-
return addPropertyReal(property, name, -1, permission);
134-
}
135-
ArduinoCloudProperty& addPropertyReal(bool& property, String name, int tag, Permission const permission) {
136-
ArduinoCloudProperty *p = new CloudWrapperBool(property);
137-
return Thing.addPropertyReal(*p, name, permission, tag);
138-
}
112+
void addPropertyReal(float& property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
139113

140-
void addPropertyReal(float& property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS) {
141-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
142-
}
114+
void addPropertyReal(float& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
143115

144-
void addPropertyReal(float& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS) {
145-
ArduinoCloudProperty *p = new CloudWrapperFloat(property);
146-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
147-
}
116+
ArduinoCloudProperty& addPropertyReal(float& property, String name, Permission const permission);
148117

149-
ArduinoCloudProperty& addPropertyReal(float& property, String name, Permission const permission) {
150-
return addPropertyReal(property, name, -1, permission);
151-
}
118+
ArduinoCloudProperty& addPropertyReal(float& property, String name, int tag, Permission const permission);
152119

153-
ArduinoCloudProperty& addPropertyReal(float& property, String name, int tag, Permission const permission) {
154-
ArduinoCloudProperty *p = new CloudWrapperFloat(property);
155-
return Thing.addPropertyReal(*p, name, permission, tag);
156-
}
120+
void addPropertyReal(int& property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
157121

158-
void addPropertyReal(int& property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS) {
159-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
160-
}
122+
void addPropertyReal(int& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
161123

162-
void addPropertyReal(int& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS) {
163-
ArduinoCloudProperty *p = new CloudWrapperInt(property);
164-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
165-
}
124+
ArduinoCloudProperty& addPropertyReal(int& property, String name, Permission const permission);
166125

167-
ArduinoCloudProperty& addPropertyReal(int& property, String name, Permission const permission) {
168-
return addPropertyReal(property, name, -1, permission);
169-
}
126+
ArduinoCloudProperty& addPropertyReal(int& property, String name, int tag, Permission const permission);
170127

171-
ArduinoCloudProperty& addPropertyReal(int& property, String name, int tag, Permission const permission) {
172-
ArduinoCloudProperty *p = new CloudWrapperInt(property);
173-
return Thing.addPropertyReal(*p, name, permission, tag);
174-
}
128+
void addPropertyReal(String& property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
129+
void addPropertyReal(String& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS);
130+
ArduinoCloudProperty& addPropertyReal(String& property, String name, Permission const permission);
175131

176-
void addPropertyReal(String& property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS) {
177-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
178-
}
132+
ArduinoCloudProperty& addPropertyReal(String& property, String name, int tag, Permission const permission);
179133

180-
void addPropertyReal(String& property, String name, int tag, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, float minDelta = 0.0f, void(*synFn)(ArduinoCloudProperty & property) = CLOUD_WINS) {
181-
ArduinoCloudProperty *p = new CloudWrapperString(property);
182-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
183-
}
134+
void addCallback(ArduinoIoTCloudEvent const event, OnCloudEventCallback callback);
184135

185-
ArduinoCloudProperty& addPropertyReal(String& property, String name, Permission const permission) {
186-
return addPropertyReal(property, name, -1, permission);
187-
}
188-
189-
ArduinoCloudProperty& addPropertyReal(String& property, String name, int tag, Permission const permission) {
190-
ArduinoCloudProperty *p = new CloudWrapperString(property);
191-
return Thing.addPropertyReal(*p, name, permission, tag);
192-
}
193-
194-
void addCallback(ArduinoIoTCloudEvent const event, OnCloudEventCallback callback) {
195-
switch (event) {
196-
case ArduinoIoTCloudEvent::SYNC: _on_sync_event_callback = callback; break;
197-
case ArduinoIoTCloudEvent::CONNECT: _on_connect_event_callback = callback; break;
198-
case ArduinoIoTCloudEvent::DISCONNECT: _on_disconnect_event_callback = callback; break;
199-
}
200-
};
201136

202137
protected:
203138

@@ -231,21 +166,8 @@ class ArduinoIoTCloudClass {
231166
OnCloudEventCallback _on_connect_event_callback = NULL;
232167
OnCloudEventCallback _on_disconnect_event_callback = NULL;
233168

234-
static void execCloudEventCallback(OnCloudEventCallback & callback, void * callback_arg) {
235-
if (callback) {
236-
(*callback)(callback_arg);
237-
}
238-
}
239-
static void printConnectionStatus(ArduinoIoTConnectionStatus status) {
240-
switch (status) {
241-
case ArduinoIoTConnectionStatus::IDLE: Debug.print(DBG_INFO, "Arduino IoT Cloud Connection status: IDLE"); break;
242-
case ArduinoIoTConnectionStatus::ERROR: Debug.print(DBG_ERROR, "Arduino IoT Cloud Connection status: ERROR"); break;
243-
case ArduinoIoTConnectionStatus::CONNECTING: Debug.print(DBG_INFO, "Arduino IoT Cloud Connection status: CONNECTING"); break;
244-
case ArduinoIoTConnectionStatus::RECONNECTING: Debug.print(DBG_INFO, "Arduino IoT Cloud Connection status: RECONNECTING"); break;
245-
case ArduinoIoTConnectionStatus::CONNECTED: Debug.print(DBG_INFO, "Arduino IoT Cloud Connection status: CONNECTED"); break;
246-
case ArduinoIoTConnectionStatus::DISCONNECTED: Debug.print(DBG_ERROR, "Arduino IoT Cloud Connection status: DISCONNECTED"); break;
247-
}
248-
}
169+
static void execCloudEventCallback(OnCloudEventCallback& callback, void* callback_arg);
170+
static void printConnectionStatus(ArduinoIoTConnectionStatus status);
249171
};
250172

251173
#if defined(ARDUINO_SAMD_MKRGSM1400) || defined(ARDUINO_SAMD_MKRWIFI1010) || defined(ARDUINO_SAMD_MKR1000) || defined(ARDUINO_SAMD_NANO_33_IOT)

src/ArduinoIoTCloudTCP.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@
2929
#endif
3030

3131
#ifdef BOARD_HAS_ECCX08
32-
const static int keySlot = 0;
33-
const static int compressedCertSlot = 10;
32+
const static int keySlot = 0;
33+
const static int compressedCertSlot = 10;
3434
const static int serialNumberAndAuthorityKeyIdentifierSlot = 11;
35-
const static int deviceIdSlot = 12;
35+
const static int deviceIdSlot = 12;
3636
#endif
3737

38-
const static int CONNECT_SUCCESS = 1;
39-
const static int CONNECT_FAILURE = 0;
40-
const static int CONNECT_FAILURE_SUBSCRIBE = -1;
38+
const static int CONNECT_SUCCESS = 1;
39+
const static int CONNECT_FAILURE = 0;
40+
const static int CONNECT_FAILURE_SUBSCRIBE = -1;
4141

4242
static unsigned long getTime() {
4343
if (!ArduinoCloud.getConnection()) {

0 commit comments

Comments
 (0)