Skip to content

Commit e18c499

Browse files
committed
Fix write-only properties
1 parent 32e8d8d commit e18c499

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

ArduinoCloudThing.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ void ArduinoCloudThing::compress(CborArray& object, CborBuffer& buffer) {
8787

8888
for (int i = 0; i < list.size(); i++) {
8989
ArduinoCloudPropertyGeneric *p = list.get(i);
90-
if (p->shouldBeUpdated()) {
90+
if (p->shouldBeUpdated() && p->canRead()) {
9191
CborObject child = CborObject(buffer);
9292
p->append(child);
9393
CborVariant variant = CborVariant(buffer, child);

ArduinoCloudThing.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class ArduinoCloudPropertyGeneric
4545
virtual bool newData() = 0;
4646
virtual bool shouldBeUpdated() = 0;
4747
virtual void updateShadow() = 0;
48+
virtual bool canRead();
4849
virtual ArduinoCloudPropertyGeneric& onUpdate(void(*fn)(void)) = 0;
4950
virtual ArduinoCloudPropertyGeneric& publishEvery(long seconds) = 0;
5051
void(*callback)(void) = NULL;
@@ -58,7 +59,8 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
5859
property(_property), name(_name) {}
5960

6061
bool write(T value) {
61-
if (permission != READ) {
62+
/* permissions are intended as seen from cloud */
63+
if (permission & WRITE) {
6264
property = value;
6365
return true;
6466
}
@@ -70,11 +72,16 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
7072
}
7173

7274
T read() {
73-
if (permission != WRITE) {
75+
/* permissions are intended as seen from cloud */
76+
if (permission & READ) {
7477
return property;
7578
}
7679
}
7780

81+
bool canRead() {
82+
return (permission & READ);
83+
}
84+
7885
String& getName() {
7986
return name;
8087
}
@@ -118,6 +125,9 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
118125
void appendValue(CborObject &cbor);
119126

120127
void append(CborObject &cbor) {
128+
if (!canRead()) {
129+
return;
130+
}
121131
if (tag != -1) {
122132
cbor.set("t", tag);
123133
} else {

0 commit comments

Comments
 (0)