Skip to content

Commit 9bf4fca

Browse files
ilcatoilcato
authored andcommitted
Changed the API of syncmode
1 parent b7292cc commit 9bf4fca

File tree

1 file changed

+27
-42
lines changed

1 file changed

+27
-42
lines changed

src/ArduinoIoTCloud.h

Lines changed: 27 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,11 @@ enum ArduinoIoTConnectionStatus {
5151
IOT_STATUS_CLOUD_ERROR,
5252
};
5353

54-
template<typename T, typename N=T>
54+
#define AUTO_SYNC onAutoSync
55+
template<typename T>
5556
void onAutoSync(ArduinoCloudProperty<T> property) {
56-
Serial.println("Executing the AUTO sync");
57+
Serial.print("Executing the AUTO sync on: ");
58+
Serial.println(property.getPropertyName());
5759
if( property.getLastCloudChangeTimestamp() > property.getLastLocalChangeTimestamp()){
5860
property.setPropertyValue(property.getCloudShadowValue());
5961
if( property.getLastCloudChangeTimestamp() > property.getLastCloudSyncTimestamp()){
@@ -62,18 +64,22 @@ void onAutoSync(ArduinoCloudProperty<T> property) {
6264
}
6365
}
6466

65-
template<typename T, typename N=T>
67+
#define FORCE_CLOUD_SYNC onForceCloudSync
68+
template<typename T>
6669
void onForceCloudSync(ArduinoCloudProperty<T> property) {
67-
Serial.println("Executing the FORCE_CLOUD sync");
70+
Serial.print("Executing the FORCE_CLOUD sync on: ");
71+
Serial.println(property.getPropertyName());
6872
property.setPropertyValue(property.getCloudShadowValue());
6973
if( property.getLastCloudChangeTimestamp() > property.getLastCloudSyncTimestamp()){
7074
property.forceCallbackOnChange();
7175
}
7276
}
7377

74-
template<typename T, typename N=T>
78+
#define FORCE_DEVICE_SYNC onForceDeviceSync
79+
template<typename T>
7580
void onForceDeviceSync(ArduinoCloudProperty<T> property) {
76-
Serial.println("Executing the FORCE_DEVICE sync");
81+
Serial.print("Executing the FORCE_DEVICE sync on: ");
82+
Serial.println(property.getPropertyName());
7783
}
7884

7985
class ArduinoIoTCloudClass {
@@ -120,47 +126,26 @@ class ArduinoIoTCloudClass {
120126

121127

122128
template<typename T, typename N=T>
123-
void addPropertyReal(T & property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, SyncMode syncMode = PROPERTIES_SYNC_FORCE_DEVICE, void(*synFn)(ArduinoCloudProperty<T> property) = NULL, N minDelta = N(0)) {
129+
void addPropertyReal(T & property, String name, permissionType permission_type = READWRITE, long seconds = ON_CHANGE, void(*fn)(void) = NULL, N minDelta = N(0), void(*synFn)(ArduinoCloudProperty<T> property) = FORCE_CLOUD_SYNC) {
124130
Permission permission = Permission::ReadWrite;
125131
if (permission_type == READ ) permission = Permission::Read;
126132
else if(permission_type == WRITE) permission = Permission::Write;
127133
else permission = Permission::ReadWrite;
128134

129-
switch (syncMode){
130-
case PROPERTIES_SYNC_AUTO:
131-
if(seconds == ON_CHANGE) {
132-
Thing.addPropertyReal(property, name, permission).publishOnChange((T)minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(onAutoSync);
133-
} else {
134-
Thing.addPropertyReal(property, name, permission).publishEvery(seconds).onUpdate(fn).onSync(onAutoSync);
135-
}
136-
break;
137-
case PROPERTIES_SYNC_FORCE_CLOUD:
138-
if(seconds == ON_CHANGE) {
139-
Thing.addPropertyReal(property, name, permission).publishOnChange((T)minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(onForceCloudSync);
140-
} else {
141-
Thing.addPropertyReal(property, name, permission).publishEvery(seconds).onUpdate(fn).onSync(onForceCloudSync);
142-
}
143-
break;
144-
case PROPERTIES_SYNC_FORCE_DEVICE:
145-
if(seconds == ON_CHANGE) {
146-
Thing.addPropertyReal(property, name, permission).publishOnChange((T)minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(onForceDeviceSync);
147-
} else {
148-
Thing.addPropertyReal(property, name, permission).publishEvery(seconds).onUpdate(fn).onSync(onForceDeviceSync);
149-
}
150-
break;
151-
case PROPERTIES_SYNC_CUSTOM:
152-
if(seconds == ON_CHANGE) {
153-
Thing.addPropertyReal(property, name, permission).publishOnChange((T)minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(synFn);
154-
} else {
155-
Thing.addPropertyReal(property, name, permission).publishEvery(seconds).onUpdate(fn).onSync(synFn);
156-
}
157-
break;
158-
default:
159-
if(seconds == ON_CHANGE) {
160-
Thing.addPropertyReal(property, name, permission).publishOnChange((T)minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(onForceCloudSync);
161-
} else {
162-
Thing.addPropertyReal(property, name, permission).publishEvery(seconds).onUpdate(fn).onSync(onForceCloudSync);
163-
}
135+
SyncMode syncMode = PROPERTIES_SYNC_FORCE_CLOUD;
136+
if (synFn == (void(*)(ArduinoCloudProperty<T> property))AUTO_SYNC)
137+
syncMode = PROPERTIES_SYNC_AUTO;
138+
else if (synFn == (void(*)(ArduinoCloudProperty<T> property))FORCE_CLOUD_SYNC)
139+
syncMode = PROPERTIES_SYNC_FORCE_CLOUD;
140+
else if (synFn == (void(*)(ArduinoCloudProperty<T> property))FORCE_DEVICE_SYNC)
141+
syncMode = PROPERTIES_SYNC_FORCE_DEVICE;
142+
else
143+
syncMode = PROPERTIES_SYNC_CUSTOM;
144+
145+
if(seconds == ON_CHANGE) {
146+
Thing.addPropertyReal(property, name, permission).publishOnChange((T)minDelta, DEFAULT_MIN_TIME_BETWEEN_UPDATES_MILLIS).onUpdate(fn).onSync(synFn);
147+
} else {
148+
Thing.addPropertyReal(property, name, permission).publishEvery(seconds).onUpdate(fn).onSync(synFn);
164149
}
165150
}
166151

0 commit comments

Comments
 (0)