22
22
#include < ArduinoIoTCloudBearSSL.h>
23
23
#include < ArduinoCloudThing.h>
24
24
#include " ConnectionManager.h"
25
+ #include " types/CloudWrapperBool.h"
26
+ #include " types/CloudWrapperFloat.h"
27
+ #include " types/CloudWrapperInt.h"
28
+ #include " types/CloudWrapperString.h"
29
+
25
30
26
31
#include " CloudSerial.h"
27
32
@@ -113,10 +118,7 @@ class ArduinoIoTCloudClass {
113
118
114
119
static unsigned long const DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS = 500 ; /* Data rate throttled to 2 Hz */
115
120
116
-
117
-
118
- template <typename T, typename N = T>
119
- void addPropertyReal (T & property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void (*fn)(void ) = NULL, N minDelta = N(0 ), void(*synFn)(ArduinoCloudProperty<T> property) = CLOUD_WINS) {
121
+ 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) {
120
122
Permission permission = Permission::ReadWrite;
121
123
if (permission_type == READ) {
122
124
permission = Permission::Read;
@@ -127,15 +129,42 @@ class ArduinoIoTCloudClass {
127
129
}
128
130
129
131
if (seconds == ON_CHANGE) {
130
- Thing.addPropertyReal (property, name, permission).publishOnChange ((T) minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate (fn).onSync (synFn);
132
+ Thing.addPropertyReal (property, name, permission).publishOnChange (minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate (fn).onSync (synFn);
131
133
} else {
132
134
Thing.addPropertyReal (property, name, permission).publishEvery (seconds).onUpdate (fn).onSync (synFn);
133
135
}
134
136
}
135
-
136
- template <typename T>
137
- ArduinoCloudProperty<T> addPropertyReal (T & property, String const & name, Permission const permission) {
138
- return Thing.addPropertyReal (property, name, permission);
137
+ 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) {
138
+ ArduinoCloudProperty *p = new CloudWrapperBool (property);
139
+ addPropertyReal (*p, name, permission_type, seconds, fn, minDelta, synFn);
140
+ }
141
+ ArduinoCloudProperty& addPropertyReal (bool & property, String name, Permission const permission) {
142
+ ArduinoCloudProperty *p = new CloudWrapperBool (property);
143
+ return Thing.addPropertyReal (*p, name, permission);
144
+ }
145
+ 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) {
146
+ ArduinoCloudProperty *p = new CloudWrapperFloat (property);
147
+ addPropertyReal (*p, name, permission_type, seconds, fn, minDelta, synFn);
148
+ }
149
+ ArduinoCloudProperty& addPropertyReal (float & property, String name, Permission const permission) {
150
+ ArduinoCloudProperty *p = new CloudWrapperFloat (property);
151
+ return Thing.addPropertyReal (*p, name, permission);
152
+ }
153
+ 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) {
154
+ ArduinoCloudProperty *p = new CloudWrapperInt (property);
155
+ addPropertyReal (*p, name, permission_type, seconds, fn, minDelta, synFn);
156
+ }
157
+ ArduinoCloudProperty& addPropertyReal (int & property, String name, Permission const permission) {
158
+ ArduinoCloudProperty *p = new CloudWrapperInt (property);
159
+ return Thing.addPropertyReal (*p, name, permission);
160
+ }
161
+ 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) {
162
+ ArduinoCloudProperty *p = new CloudWrapperString (property);
163
+ addPropertyReal (*p, name, permission_type, seconds, fn, minDelta, synFn);
164
+ }
165
+ ArduinoCloudProperty& addPropertyReal (String& property, String name, Permission const permission) {
166
+ ArduinoCloudProperty *p = new CloudWrapperString (property);
167
+ return Thing.addPropertyReal (*p, name, permission);
139
168
}
140
169
141
170
void connectionCheck ();
@@ -146,7 +175,6 @@ class ArduinoIoTCloudClass {
146
175
return _brokerPort;
147
176
}
148
177
void printDebugInfo ();
149
-
150
178
void addCallback (ArduinoIoTCloudEvent const event, OnCloudEventCallback callback);
151
179
152
180
protected:
@@ -201,7 +229,6 @@ class ArduinoIoTCloudClass {
201
229
_on_disconnect_event_callback;
202
230
203
231
static void execCloudEventCallback (OnCloudEventCallback & callback, void * callback_arg);
204
-
205
232
};
206
233
207
234
extern ArduinoIoTCloudClass ArduinoCloud;
0 commit comments