Skip to content

Commit 9828845

Browse files
authored
Merge pull request #343 from pennam/reorder-addPropertyReal
Reorder and simplify addPropertyReal methods
2 parents 8ba8037 + f137056 commit 9828845

File tree

3 files changed

+82
-163
lines changed

3 files changed

+82
-163
lines changed

src/ArduinoIoTCloud.cpp

Lines changed: 65 additions & 140 deletions
Original file line numberDiff line numberDiff line change
@@ -66,207 +66,131 @@ void ArduinoIoTCloudClass::addCallback(ArduinoIoTCloudEvent const event, OnCloud
6666
_cloud_event_callback[static_cast<size_t>(event)] = callback;
6767
}
6868

69-
void ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
70-
{
71-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
72-
}
73-
74-
void ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
75-
{
76-
Permission permission = Permission::ReadWrite;
77-
if (permission_type == READ) {
78-
permission = Permission::Read;
79-
} else if (permission_type == WRITE) {
80-
permission = Permission::Write;
81-
} else {
82-
permission = Permission::ReadWrite;
83-
}
84-
85-
if (seconds == ON_CHANGE) {
86-
addPropertyToContainer(_thing_property_container, property, name, permission, tag).publishOnChange(minDelta, Property::DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(synFn);
87-
} else {
88-
addPropertyToContainer(_thing_property_container, property, name, permission, tag).publishEvery(seconds).onUpdate(fn).onSync(synFn);
89-
}
90-
}
91-
92-
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, Permission const permission)
93-
{
94-
return addPropertyToContainer(_thing_property_container, property, name, permission);
95-
}
96-
97-
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, int tag, Permission const permission)
69+
/* The following methods are used for non-LoRa boards */
70+
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, Permission const permission)
9871
{
99-
return addPropertyToContainer(_thing_property_container, property, name, permission, tag);
72+
return addPropertyReal(property, name, -1, permission);
10073
}
101-
102-
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, PropertyContainer &prop_cont, String name, Permission const permission)
74+
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, Permission const permission)
10375
{
104-
return addPropertyToContainer(prop_cont, property, name, permission, -1);
76+
return addPropertyReal(property, name, -1, permission);
10577
}
106-
107-
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
78+
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, Permission const permission)
10879
{
109-
return addPropertyToContainer(prop_cont, property, name, permission, tag);
80+
return addPropertyReal(property, name, -1, permission);
11081
}
111-
112-
void ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
82+
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, Permission const permission)
11383
{
114-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
84+
return addPropertyReal(property, name, -1, permission);
11585
}
116-
117-
void ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
86+
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, Permission const permission)
11887
{
119-
Property* p = new CloudWrapperBool(property);
120-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
88+
return addPropertyReal(property, name, -1, permission);
12189
}
122-
123-
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, Permission const permission)
90+
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, Permission const permission)
12491
{
125-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
92+
return addPropertyReal(property, name, -1, permission);
12693
}
12794

95+
/* The following methods are used for both LoRa and non-Lora boards */
12896
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, int tag, Permission const permission)
129-
{
130-
return addPropertyReal(property, _thing_property_container, name, tag, permission);
131-
}
132-
133-
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, PropertyContainer &prop_cont, String name, Permission const permission)
134-
{
135-
return addPropertyReal(property, prop_cont, name, -1, permission);
136-
}
137-
138-
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
13997
{
14098
Property* p = new CloudWrapperBool(property);
141-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
142-
}
143-
144-
void ArduinoIoTCloudClass::addPropertyReal(float& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
145-
{
146-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
99+
return addPropertyReal(*p, name, tag, permission);
147100
}
148-
149-
void ArduinoIoTCloudClass::addPropertyReal(float& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
101+
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, int tag, Permission const permission)
150102
{
151103
Property* p = new CloudWrapperFloat(property);
152-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
104+
return addPropertyReal(*p, name, tag, permission);
153105
}
154-
155-
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, Permission const permission)
106+
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, int tag, Permission const permission)
156107
{
157-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
108+
Property* p = new CloudWrapperInt(property);
109+
return addPropertyReal(*p, name, tag, permission);
158110
}
159-
160-
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, int tag, Permission const permission)
111+
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, int tag, Permission const permission)
161112
{
162-
return addPropertyReal(property, _thing_property_container, name, tag, permission);
113+
Property* p = new CloudWrapperUnsignedInt(property);
114+
return addPropertyReal(*p, name, tag, permission);
163115
}
164-
165-
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, PropertyContainer &prop_cont, String name, Permission const permission)
116+
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, int tag, Permission const permission)
166117
{
167-
return addPropertyReal(property, prop_cont, name, -1, permission);
118+
Property* p = new CloudWrapperString(property);
119+
return addPropertyReal(*p, name, tag, permission);
168120
}
169-
170-
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
121+
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, int tag, Permission const permission)
171122
{
172-
Property* p = new CloudWrapperFloat(property);
173-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
123+
return addPropertyToContainer(_thing_property_container, property, name, permission, tag);
174124
}
175125

176-
void ArduinoIoTCloudClass::addPropertyReal(int& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
126+
/* The following methods are deprecated but still used for non-LoRa boards */
127+
void ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
177128
{
178129
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
179130
}
180-
181-
void ArduinoIoTCloudClass::addPropertyReal(int& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
182-
{
183-
Property* p = new CloudWrapperInt(property);
184-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
185-
}
186-
187-
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, Permission const permission)
131+
void ArduinoIoTCloudClass::addPropertyReal(float& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
188132
{
189-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
133+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
190134
}
191-
192-
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, int tag, Permission const permission)
135+
void ArduinoIoTCloudClass::addPropertyReal(int& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
193136
{
194-
return addPropertyReal(property, _thing_property_container, name, tag, permission);
137+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
195138
}
196-
197-
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, PropertyContainer &prop_cont, String name, Permission const permission)
139+
void ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
198140
{
199-
return addPropertyReal(property, prop_cont, name, -1, permission);
141+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
200142
}
201-
202-
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
143+
void ArduinoIoTCloudClass::addPropertyReal(String& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
203144
{
204-
Property* p = new CloudWrapperInt(property);
205-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
145+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
206146
}
207-
208-
void ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
147+
void ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
209148
{
210149
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
211150
}
212151

213-
void ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
152+
/* The following methods are deprecated but still used for both LoRa and non-LoRa boards */
153+
void ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
214154
{
215-
Property* p = new CloudWrapperUnsignedInt(property);
155+
Property* p = new CloudWrapperBool(property);
216156
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
217157
}
218-
219-
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, Permission const permission)
220-
{
221-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
222-
}
223-
224-
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, int tag, Permission const permission)
158+
void ArduinoIoTCloudClass::addPropertyReal(float& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
225159
{
226-
return addPropertyReal(property, _thing_property_container, name, tag, permission);
160+
Property* p = new CloudWrapperFloat(property);
161+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
227162
}
228-
229-
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, PropertyContainer &prop_cont, String name, Permission const permission)
163+
void ArduinoIoTCloudClass::addPropertyReal(int& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
230164
{
231-
return addPropertyReal(property, prop_cont, name, -1, permission);
165+
Property* p = new CloudWrapperInt(property);
166+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
232167
}
233-
234-
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
168+
void ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
235169
{
236170
Property* p = new CloudWrapperUnsignedInt(property);
237-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
238-
}
239-
240-
void ArduinoIoTCloudClass::addPropertyReal(String& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
241-
{
242-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
171+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
243172
}
244-
245173
void ArduinoIoTCloudClass::addPropertyReal(String& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
246174
{
247175
Property* p = new CloudWrapperString(property);
248176
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
249177
}
250-
251-
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, Permission const permission)
252-
{
253-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
254-
}
255-
256-
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, int tag, Permission const permission)
257-
{
258-
return addPropertyReal(property, _thing_property_container, name, tag, permission);
259-
}
260-
261-
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, PropertyContainer &prop_cont, String name, Permission const permission)
178+
void ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
262179
{
263-
return addPropertyReal(property, prop_cont, name, -1, permission);
264-
}
180+
Permission permission = Permission::ReadWrite;
181+
if (permission_type == READ) {
182+
permission = Permission::Read;
183+
} else if (permission_type == WRITE) {
184+
permission = Permission::Write;
185+
} else {
186+
permission = Permission::ReadWrite;
187+
}
265188

266-
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
267-
{
268-
Property* p = new CloudWrapperString(property);
269-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
189+
if (seconds == ON_CHANGE) {
190+
addPropertyToContainer(_thing_property_container, property, name, permission, tag).publishOnChange(minDelta, Property::DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(synFn);
191+
} else {
192+
addPropertyToContainer(_thing_property_container, property, name, permission, tag).publishEvery(seconds).onUpdate(fn).onSync(synFn);
193+
}
270194
}
271195

272196
/******************************************************************************
@@ -285,3 +209,4 @@ __attribute__((weak)) void setDebugMessageLevel(int const /* level */)
285209
{
286210
/* do nothing */
287211
}
212+

src/ArduinoIoTCloud.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -130,20 +130,6 @@ class ArduinoIoTCloudClass
130130
Property& addPropertyReal(unsigned int& property, String name, Permission const permission);
131131
Property& addPropertyReal(String& property, String name, Permission const permission);
132132

133-
Property& addPropertyReal(Property& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission);
134-
Property& addPropertyReal(bool& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission);
135-
Property& addPropertyReal(float& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission);
136-
Property& addPropertyReal(int& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission);
137-
Property& addPropertyReal(unsigned int& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission);
138-
Property& addPropertyReal(String& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission);
139-
140-
Property& addPropertyReal(Property& property, PropertyContainer &prop_cont, String name, Permission const permission);
141-
Property& addPropertyReal(bool& property, PropertyContainer &prop_cont, String name, Permission const permission);
142-
Property& addPropertyReal(float& property, PropertyContainer &prop_cont, String name, Permission const permission);
143-
Property& addPropertyReal(int& property, PropertyContainer &prop_cont, String name, Permission const permission);
144-
Property& addPropertyReal(unsigned int& property, PropertyContainer &prop_cont, String name, Permission const permission);
145-
Property& addPropertyReal(String& property, PropertyContainer &prop_cont, String name, Permission const permission);
146-
147133
/* The following methods are for MKR WAN 1300/1310 LoRa boards since
148134
* they use a number to identify a given property within a CBOR message.
149135
* This approach reduces the required amount of data which is of great

0 commit comments

Comments
 (0)