2222#include < ArduinoIoTCloudBearSSL.h>
2323#include < ArduinoCloudThing.h>
2424#include " ConnectionManager.h"
25+ #include " types/CloudWrapperBool.h"
26+ #include " types/CloudWrapperFloat.h"
27+ #include " types/CloudWrapperInt.h"
28+ #include " types/CloudWrapperString.h"
29+
2530
2631#include " CloudSerial.h"
2732
@@ -113,10 +118,7 @@ class ArduinoIoTCloudClass {
113118
114119 static unsigned long const DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS = 500 ; /* Data rate throttled to 2 Hz */
115120
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) {
120122 Permission permission = Permission::ReadWrite;
121123 if (permission_type == READ) {
122124 permission = Permission::Read;
@@ -127,15 +129,42 @@ class ArduinoIoTCloudClass {
127129 }
128130
129131 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);
131133 } else {
132134 Thing.addPropertyReal (property, name, permission).publishEvery (seconds).onUpdate (fn).onSync (synFn);
133135 }
134136 }
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);
139168 }
140169
141170 void connectionCheck ();
@@ -146,7 +175,6 @@ class ArduinoIoTCloudClass {
146175 return _brokerPort;
147176 }
148177 void printDebugInfo ();
149-
150178 void addCallback (ArduinoIoTCloudEvent const event, OnCloudEventCallback callback);
151179
152180 protected:
@@ -201,7 +229,6 @@ class ArduinoIoTCloudClass {
201229 _on_disconnect_event_callback;
202230
203231 static void execCloudEventCallback (OnCloudEventCallback & callback, void * callback_arg);
204-
205232};
206233
207234extern ArduinoIoTCloudClass ArduinoCloud;
0 commit comments