@@ -36,7 +36,9 @@ class ArduinoCloudPropertyGeneric
36
36
virtual void append (CborObject& object) = 0;
37
37
virtual String& getName () = 0;
38
38
virtual void setName (String _name) = 0;
39
- virtual void setTag (int _tag) = 0;
39
+ virtual ArduinoCloudPropertyGeneric& setTag (int _tag) = 0;
40
+ virtual ArduinoCloudPropertyGeneric& readOnly () = 0;
41
+ virtual ArduinoCloudPropertyGeneric& writeOnly () = 0;
40
42
virtual int getTag () = 0;
41
43
virtual void setPermission (permissionType _permission) = 0;
42
44
virtual permissionType getPermission () = 0;
@@ -52,8 +54,8 @@ template <typename T>
52
54
class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
53
55
{
54
56
public:
55
- ArduinoCloudProperty (T& _property, String _name, permissionType _permission ) :
56
- property (_property), name(_name), permission(_permission) {}
57
+ ArduinoCloudProperty (T& _property, String _name) :
58
+ property (_property), name(_name) {}
57
59
58
60
bool write (T value) {
59
61
if (permission != READ) {
@@ -81,8 +83,9 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
81
83
name = _name;
82
84
}
83
85
84
- void setTag (int _tag) {
86
+ ArduinoCloudPropertyGeneric& setTag (int _tag) {
85
87
tag = _tag;
88
+ return *(reinterpret_cast <ArduinoCloudPropertyGeneric*>(this ));
86
89
}
87
90
88
91
int getTag () {
@@ -93,6 +96,16 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
93
96
permission = _permission;
94
97
}
95
98
99
+ ArduinoCloudPropertyGeneric& readOnly () {
100
+ permission = READ;
101
+ return *(reinterpret_cast <ArduinoCloudPropertyGeneric*>(this ));
102
+ }
103
+
104
+ ArduinoCloudPropertyGeneric& writeOnly () {
105
+ permission = WRITE;
106
+ return *(reinterpret_cast <ArduinoCloudPropertyGeneric*>(this ));
107
+ }
108
+
96
109
permissionType getPermission () {
97
110
return permission;
98
111
}
@@ -142,7 +155,7 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
142
155
int tag = -1 ;
143
156
long lastUpdated = 0 ;
144
157
long updatePolicy = ON_CHANGE;
145
- permissionType permission;
158
+ permissionType permission = READWRITE ;
146
159
static int tagIndex;
147
160
};
148
161
@@ -172,18 +185,18 @@ inline void ArduinoCloudProperty<char*>::appendValue(CborObject &cbor) {
172
185
};
173
186
174
187
#ifndef addProperty
175
- #define addProperty (prop, permission ) addPropertyReal(prop, #prop, permission )
188
+ #define addProperty (prop ) addPropertyReal(prop, #prop)
176
189
#endif
177
190
178
191
class ArduinoCloudThing {
179
192
public:
180
193
ArduinoCloudThing ();
181
194
void begin ();
182
- ArduinoCloudPropertyGeneric& addPropertyReal (int & property, String name, permissionType permission );
183
- ArduinoCloudPropertyGeneric& addPropertyReal (bool & property, String name, permissionType permission );
184
- ArduinoCloudPropertyGeneric& addPropertyReal (float & property, String name, permissionType permission );
185
- ArduinoCloudPropertyGeneric& addPropertyReal (void * property, String name, permissionType permission );
186
- ArduinoCloudPropertyGeneric& addPropertyReal (String property, String name, permissionType permission );
195
+ ArduinoCloudPropertyGeneric& addPropertyReal (int & property, String name);
196
+ ArduinoCloudPropertyGeneric& addPropertyReal (bool & property, String name);
197
+ ArduinoCloudPropertyGeneric& addPropertyReal (float & property, String name);
198
+ ArduinoCloudPropertyGeneric& addPropertyReal (void * property, String name);
199
+ ArduinoCloudPropertyGeneric& addPropertyReal (String property, String name);
187
200
// poll should return > 0 if something has changed
188
201
int poll (uint8_t * data);
189
202
void decode (uint8_t * payload, size_t length);
@@ -195,7 +208,7 @@ class ArduinoCloudThing {
195
208
int checkNewData ();
196
209
void compress (CborArray& object, CborBuffer& buffer);
197
210
198
- bool exists (String &name);
211
+ ArduinoCloudPropertyGeneric* exists (String &name);
199
212
200
213
bool status = OFF;
201
214
char uuid[33 ];
0 commit comments