@@ -125,6 +125,10 @@ enum class UpdatePolicy {
125125 OnChange, TimeInterval, OnDemand
126126};
127127
128+ enum class WritePolicy {
129+ Auto, Manual
130+ };
131+
128132typedef void (*UpdateCallbackFunc)(void );
129133typedef unsigned long (*GetTimeCallbackFunc)();
130134class Property ;
@@ -147,6 +151,8 @@ class Property
147151 Property & publishEvery (unsigned long const seconds);
148152 Property & publishOnDemand ();
149153 Property & encodeTimestamp ();
154+ Property & writeOnChange ();
155+ Property & writeOnDemand ();
150156
151157 inline String name () const {
152158 return _name;
@@ -160,6 +166,9 @@ class Property
160166 inline bool isWriteableByCloud () const {
161167 return (_permission == Permission::Write) || (_permission == Permission::ReadWrite);
162168 }
169+ inline bool isWritableOnChange () const {
170+ return _write_policy == WritePolicy::Auto;
171+ }
163172
164173 void setTimestamp (unsigned long const timestamp);
165174 bool shouldBeUpdated ();
@@ -209,6 +218,7 @@ class Property
209218
210219 private:
211220 Permission _permission;
221+ WritePolicy _write_policy;
212222 GetTimeCallbackFunc _get_time_func;
213223 UpdateCallbackFunc _update_callback_func;
214224 OnSyncCallbackFunc _on_sync_callback_func;
@@ -219,7 +229,7 @@ class Property
219229 _has_been_appended_but_not_sended;
220230 /* Variables used for UpdatePolicy::TimeInterval */
221231 unsigned long _last_updated_millis,
222- _update_interval_millis;
232+ _update_interval_millis;
223233 /* Variables used for reconnection sync*/
224234 unsigned long _last_local_change_timestamp;
225235 unsigned long _last_cloud_change_timestamp;
0 commit comments