Skip to content

Commit b60bafc

Browse files
committed
Proposal: add minimumDelta API
Accepts a pointer to the actual value
1 parent c226bde commit b60bafc

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

ArduinoCloudThing.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class ArduinoCloudPropertyGeneric
3939
virtual ArduinoCloudPropertyGeneric& setTag(int _tag) = 0;
4040
virtual ArduinoCloudPropertyGeneric& readOnly() = 0;
4141
virtual ArduinoCloudPropertyGeneric& writeOnly() = 0;
42+
virtual ArduinoCloudPropertyGeneric& minimumDelta(void* delta) = 0;
4243
virtual int getTag() = 0;
4344
virtual ArduinoCloudPropertyGeneric& setPermission(permissionType _permission) = 0;
4445
virtual permissionType getPermission() = 0;
@@ -119,6 +120,11 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
119120
return *(reinterpret_cast<ArduinoCloudPropertyGeneric*>(this));
120121
}
121122

123+
ArduinoCloudPropertyGeneric& minimumDelta(void* delta) {
124+
minDelta = *(T*)delta;
125+
return *(reinterpret_cast<ArduinoCloudPropertyGeneric*>(this));
126+
}
127+
122128
permissionType getPermission() {
123129
return permission;
124130
}
@@ -150,7 +156,7 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
150156
}
151157

152158
bool newData() {
153-
return (property != shadow_property);
159+
return (property != shadow_property && abs(property - shadow_property) > minDelta );
154160
}
155161

156162
bool shouldBeUpdated() {
@@ -171,6 +177,7 @@ class ArduinoCloudProperty : public ArduinoCloudPropertyGeneric
171177
int tag = -1;
172178
long lastUpdated = 0;
173179
long updatePolicy = ON_CHANGE;
180+
T minDelta = 0;
174181
permissionType permission = READWRITE;
175182
static int tagIndex;
176183
};

0 commit comments

Comments
 (0)