Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 0773524

Browse files
committedNov 14, 2022
Reorder methods to make more clear calls dependency
1 parent a0566e5 commit 0773524

File tree

1 file changed

+109
-129
lines changed

1 file changed

+109
-129
lines changed
 

‎src/ArduinoIoTCloud.cpp

Lines changed: 109 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -66,222 +66,202 @@ 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))
69+
/* The following methods are used for non-LoRa boards */
70+
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, Permission const permission)
7071
{
71-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
72+
return addPropertyReal(property, _thing_property_container, name, -1, permission);
7273
}
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))
74+
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, Permission const permission)
7575
{
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-
}
76+
return addPropertyReal(property, _thing_property_container, name, -1, permission);
9077
}
91-
92-
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, Permission const permission)
78+
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, Permission const permission)
9379
{
94-
return addPropertyToContainer(_thing_property_container, property, name, permission);
80+
return addPropertyReal(property, _thing_property_container, name, -1, permission);
9581
}
96-
97-
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, int tag, Permission const permission)
82+
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, Permission const permission)
9883
{
99-
return addPropertyToContainer(_thing_property_container, property, name, permission, tag);
84+
return addPropertyReal(property, _thing_property_container, name, -1, permission);
10085
}
101-
102-
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, PropertyContainer &prop_cont, String name, Permission const permission)
86+
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, Permission const permission)
10387
{
104-
return addPropertyToContainer(prop_cont, property, name, permission, -1);
88+
return addPropertyReal(property, _thing_property_container, name, -1, permission);
10589
}
106-
107-
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
90+
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, Permission const permission)
10891
{
109-
return addPropertyToContainer(prop_cont, property, name, permission, tag);
92+
return addPropertyReal(property, _thing_property_container, name, -1, permission);
11093
}
11194

112-
void ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
95+
/* The following methods are used for LoRa boards */
96+
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, int tag, Permission const permission)
11397
{
114-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
98+
return addPropertyReal(property, _thing_property_container, name, tag, permission);
11599
}
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))
100+
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, int tag, Permission const permission)
118101
{
119-
Property* p = new CloudWrapperBool(property);
120-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
102+
return addPropertyReal(property, _thing_property_container, name, tag, permission);
121103
}
122-
123-
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, Permission const permission)
104+
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, int tag, Permission const permission)
124105
{
125-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
106+
return addPropertyReal(property, _thing_property_container, name, tag, permission);
126107
}
127-
128-
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, int tag, Permission const permission)
108+
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, int tag, Permission const permission)
129109
{
130110
return addPropertyReal(property, _thing_property_container, name, tag, permission);
131111
}
132-
133-
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, PropertyContainer &prop_cont, String name, Permission const permission)
112+
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, int tag, Permission const permission)
134113
{
135-
return addPropertyReal(property, prop_cont, name, -1, permission);
114+
return addPropertyReal(property, _thing_property_container, name, tag, permission);
136115
}
137-
138-
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
116+
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, int tag, Permission const permission)
139117
{
140-
Property* p = new CloudWrapperBool(property);
141-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
118+
return addPropertyReal(property, _thing_property_container, name, tag, permission);
142119
}
143120

121+
/* The following methods are deprecated but still used for non-LoRa boards */
122+
void ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
123+
{
124+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
125+
}
144126
void ArduinoIoTCloudClass::addPropertyReal(float& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
145127
{
146128
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
147129
}
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))
130+
void ArduinoIoTCloudClass::addPropertyReal(int& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
150131
{
151-
Property* p = new CloudWrapperFloat(property);
152-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
132+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
153133
}
154-
155-
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, Permission const permission)
134+
void ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
156135
{
157-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
136+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
158137
}
159-
160-
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, String name, int tag, Permission const permission)
138+
void ArduinoIoTCloudClass::addPropertyReal(String& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
161139
{
162-
return addPropertyReal(property, _thing_property_container, name, tag, permission);
140+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
163141
}
164-
165-
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, PropertyContainer &prop_cont, String name, Permission const permission)
142+
void ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
166143
{
167-
return addPropertyReal(property, prop_cont, name, -1, permission);
144+
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
168145
}
169146

170-
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
147+
/* The following methods are deprecated but still used for both LoRa and non-LoRa boards */
148+
void ArduinoIoTCloudClass::addPropertyReal(bool& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
171149
{
172-
Property* p = new CloudWrapperFloat(property);
173-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
150+
Property* p = new CloudWrapperBool(property);
151+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
174152
}
175-
176-
void ArduinoIoTCloudClass::addPropertyReal(int& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
153+
void ArduinoIoTCloudClass::addPropertyReal(float& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
177154
{
178-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
155+
Property* p = new CloudWrapperFloat(property);
156+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
179157
}
180-
181158
void ArduinoIoTCloudClass::addPropertyReal(int& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
182159
{
183160
Property* p = new CloudWrapperInt(property);
184161
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
185162
}
186-
187-
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, Permission const permission)
163+
void ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
188164
{
189-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
165+
Property* p = new CloudWrapperUnsignedInt(property);
166+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
190167
}
191-
192-
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, String name, int tag, Permission const permission)
168+
void ArduinoIoTCloudClass::addPropertyReal(String& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
193169
{
194-
return addPropertyReal(property, _thing_property_container, name, tag, permission);
170+
Property* p = new CloudWrapperString(property);
171+
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
195172
}
196-
197-
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, PropertyContainer &prop_cont, String name, Permission const permission)
173+
void ArduinoIoTCloudClass::addPropertyReal(Property& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
198174
{
199-
return addPropertyReal(property, prop_cont, name, -1, permission);
175+
Permission permission = Permission::ReadWrite;
176+
if (permission_type == READ) {
177+
permission = Permission::Read;
178+
} else if (permission_type == WRITE) {
179+
permission = Permission::Write;
180+
} else {
181+
permission = Permission::ReadWrite;
182+
}
183+
184+
if (seconds == ON_CHANGE) {
185+
addPropertyToContainer(_thing_property_container, property, name, permission, tag).publishOnChange(minDelta, Property::DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(synFn);
186+
} else {
187+
addPropertyToContainer(_thing_property_container, property, name, permission, tag).publishEvery(seconds).onUpdate(fn).onSync(synFn);
188+
}
200189
}
201190

202-
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
191+
/******************************************************************************
192+
* PROTECTED MEMBER FUNCTIONS
193+
******************************************************************************/
194+
195+
void ArduinoIoTCloudClass::execCloudEventCallback(ArduinoIoTCloudEvent const event)
203196
{
204-
Property* p = new CloudWrapperInt(property);
205-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
197+
OnCloudEventCallback callback = _cloud_event_callback[static_cast<size_t>(event)];
198+
if (callback) {
199+
(*callback)();
200+
}
206201
}
207202

208-
void ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
203+
__attribute__((weak)) void setDebugMessageLevel(int const /* level */)
209204
{
210-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
205+
/* do nothing */
211206
}
212207

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))
208+
/* The following methods are used internally to handle hidden thing and device properties */
209+
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, PropertyContainer &prop_cont, String name, Permission const permission)
214210
{
215-
Property* p = new CloudWrapperUnsignedInt(property);
216-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
211+
return addPropertyReal(property, prop_cont, name, -1, permission);
217212
}
218-
219-
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, Permission const permission)
213+
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, PropertyContainer &prop_cont, String name, Permission const permission)
220214
{
221-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
215+
return addPropertyReal(property, prop_cont, name, -1, permission);
222216
}
223-
224-
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, String name, int tag, Permission const permission)
217+
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, PropertyContainer &prop_cont, String name, Permission const permission)
225218
{
226-
return addPropertyReal(property, _thing_property_container, name, tag, permission);
219+
return addPropertyReal(property, prop_cont, name, -1, permission);
227220
}
228-
229221
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, PropertyContainer &prop_cont, String name, Permission const permission)
230222
{
231223
return addPropertyReal(property, prop_cont, name, -1, permission);
232224
}
233-
234-
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
225+
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, PropertyContainer &prop_cont, String name, Permission const permission)
235226
{
236-
Property* p = new CloudWrapperUnsignedInt(property);
237-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
227+
return addPropertyReal(property, prop_cont, name, -1, permission);
238228
}
239-
240-
void ArduinoIoTCloudClass::addPropertyReal(String& property, String name, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
229+
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, PropertyContainer &prop_cont, String name, Permission const permission)
241230
{
242-
addPropertyReal(property, name, -1, permission_type, seconds, fn, minDelta, synFn);
231+
return addPropertyReal(property, prop_cont, name, -1, permission);
243232
}
244233

245-
void ArduinoIoTCloudClass::addPropertyReal(String& property, String name, int tag, permissionType permission_type, long seconds, void(*fn)(void), float minDelta, void(*synFn)(Property & property))
234+
/******************************************************************************
235+
* PRIVATE MEMBER FUNCTIONS
236+
******************************************************************************/
237+
238+
/* The following methods are used for both LoRa and non-LoRa boards */
239+
Property& ArduinoIoTCloudClass::addPropertyReal(bool& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
246240
{
247-
Property* p = new CloudWrapperString(property);
248-
addPropertyReal(*p, name, tag, permission_type, seconds, fn, minDelta, synFn);
241+
Property* p = new CloudWrapperBool(property);
242+
return addPropertyReal(*p, prop_cont, name, tag, permission);
249243
}
250-
251-
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, Permission const permission)
244+
Property& ArduinoIoTCloudClass::addPropertyReal(float& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
252245
{
253-
return addPropertyReal(property, _thing_property_container, name, -1, permission);
246+
Property* p = new CloudWrapperFloat(property);
247+
return addPropertyReal(*p, prop_cont, name, tag, permission);
254248
}
255-
256-
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, String name, int tag, Permission const permission)
249+
Property& ArduinoIoTCloudClass::addPropertyReal(int& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
257250
{
258-
return addPropertyReal(property, _thing_property_container, name, tag, permission);
251+
Property* p = new CloudWrapperInt(property);
252+
return addPropertyReal(*p, prop_cont, name, tag, permission);
259253
}
260-
261-
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, PropertyContainer &prop_cont, String name, Permission const permission)
254+
Property& ArduinoIoTCloudClass::addPropertyReal(unsigned int& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
262255
{
263-
return addPropertyReal(property, prop_cont, name, -1, permission);
256+
Property* p = new CloudWrapperUnsignedInt(property);
257+
return addPropertyReal(*p, prop_cont, name, tag, permission);
264258
}
265-
266259
Property& ArduinoIoTCloudClass::addPropertyReal(String& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
267260
{
268261
Property* p = new CloudWrapperString(property);
269-
return addPropertyToContainer(prop_cont, *p, name, permission, tag);
262+
return addPropertyReal(*p, prop_cont, name, tag, permission);
270263
}
271-
272-
/******************************************************************************
273-
* PROTECTED MEMBER FUNCTIONS
274-
******************************************************************************/
275-
276-
void ArduinoIoTCloudClass::execCloudEventCallback(ArduinoIoTCloudEvent const event)
277-
{
278-
OnCloudEventCallback callback = _cloud_event_callback[static_cast<size_t>(event)];
279-
if (callback) {
280-
(*callback)();
281-
}
282-
}
283-
284-
__attribute__((weak)) void setDebugMessageLevel(int const /* level */)
264+
Property& ArduinoIoTCloudClass::addPropertyReal(Property& property, PropertyContainer &prop_cont, String name, int tag, Permission const permission)
285265
{
286-
/* do nothing */
287-
}
266+
return addPropertyToContainer(prop_cont, property, name, permission, tag);
267+
}

0 commit comments

Comments
 (0)
Please sign in to comment.