Skip to content

Commit c226324

Browse files
committed
Fixed: value limitation
- SinricProBlinds - SinricProDimSwitch - SinricProFan - SinricProLight - SinricProSpeaker
1 parent 9e7bde3 commit c226324

File tree

6 files changed

+23
-17
lines changed

6 files changed

+23
-17
lines changed

src/SinricProBlinds.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,14 @@ bool SinricProBlinds::handleRequest(const char* deviceId, const char* action, Js
8181
if (actionString == "setRangeValue" && setPositionCallback) {
8282
int position = request_value["rangeValue"] | 0;
8383
success = setPositionCallback(String(deviceId), position);
84-
response_value["rangeValue"] = position;
84+
response_value["rangeValue"] = limitValue(position, 0, 100);
8585
return success;
8686
}
8787

8888
if (actionString == "adjustRangeValue" && adjustPositionCallback) {
8989
int positionDelta = request_value["rangeValueDelta"] | 0;
9090
success = adjustPositionCallback(String(deviceId), positionDelta);
91-
response_value["rangeValue"] = positionDelta;
91+
response_value["rangeValue"] = limitValue(positionDelta, 0, 100);
9292
return success;
9393
}
9494

src/SinricProDevice.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ class SinricProDevice : public SinricProDeviceInterface {
6060
unsigned long getTimestamp();
6161
char* deviceId;
6262
PowerStateCallback powerStateCallback;
63+
template <typename T>
64+
T limitValue(T value, T minValue, T maxValue);
6365
private:
6466
SinricProInterface* eventSender;
6567
unsigned long eventWaitTime;
@@ -135,6 +137,14 @@ unsigned long SinricProDevice::getTimestamp() {
135137
return 0;
136138
}
137139

140+
template <typename T>
141+
T SinricProDevice::limitValue(T value, T minValue, T maxValue) {
142+
T newValue = value;
143+
if (value > maxValue) newValue = maxValue;
144+
if (value < minValue) newValue = minValue;
145+
return newValue;
146+
}
147+
138148
/**
139149
* @brief Set callback function for `powerState` request
140150
*

src/SinricProDimSwitch.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ bool SinricProDimSwitch::handleRequest(const char* deviceId, const char* action,
7878
if (setPowerLevelCallback && actionString == "setPowerLevel") {
7979
int powerLevel = request_value["powerLevel"];
8080
success = setPowerLevelCallback(String(deviceId), powerLevel);
81-
response_value["powerLevel"] = powerLevel;
81+
response_value["powerLevel"] = limitValue(powerLevel, 0, 100);
8282
}
8383

8484
if (adjustPowerLevelCallback && actionString == "adjustPowerLevel") {
8585
int powerLevelDelta = request_value["powerLevelDelta"];
8686
success = adjustPowerLevelCallback(String(deviceId), powerLevelDelta);
87-
response_value["powerLevel"] = powerLevelDelta;
87+
response_value["powerLevel"] = limitValue(powerLevelDelta, 0, 100);
8888
}
8989
return success;
9090
}

src/SinricProFanUS.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,18 +78,14 @@ bool SinricProFanUS::handleRequest(const char* deviceId, const char* action, Jso
7878
if (actionString == "setRangeValue" && setRangeValueCallback) {
7979
int rangeValue = request_value["rangeValue"] | 0;
8080
success = setRangeValueCallback(String(deviceId), rangeValue);
81-
if (rangeValue < 1) rangeValue = 1;
82-
if (rangeValue > 3) rangeValue = 3;
83-
response_value["rangeValue"] = rangeValue;
81+
response_value["rangeValue"] = limitValue(rangeValue, 1, 3);
8482
return success;
8583
}
8684

8785
if (actionString == "adjustRangeValue" && adjustRangeValueCallback) {
8886
int rangeValueDelta = request_value["rangeValueDelta"] | 0;
8987
success = adjustRangeValueCallback(String(deviceId), rangeValueDelta);
90-
if (rangeValueDelta < 1) rangeValueDelta = 1;
91-
if (rangeValueDelta > 3) rangeValueDelta = 3;
92-
response_value["rangeValue"] = rangeValueDelta;
88+
response_value["rangeValue"] = limitValue(rangeValueDelta, 1, 3);
9389
return success;
9490
}
9591

src/SinricProLight.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,13 @@ bool SinricProLight::handleRequest(const char* deviceId, const char* action, Jso
160160
if (brightnessCallback && actionString == "setBrightness") {
161161
int brightness = request_value["brightness"];
162162
success = brightnessCallback(String(deviceId), brightness);
163-
response_value["brightness"] = brightness;
163+
response_value["brightness"] = limitValue(brightness, 0, 100);
164164
}
165165

166166
if (adjustBrightnessCallback && actionString == "adjustBrightness") {
167167
int brightnessDelta = request_value["brightnessDelta"];
168168
success = adjustBrightnessCallback(String(deviceId), brightnessDelta);
169-
response_value["brightness"] = brightnessDelta;
169+
response_value["brightness"] = limitValue(brightnessDelta, 0, 100);
170170
}
171171

172172
if (colorCallback && actionString == "setColor") {

src/SinricProSpeaker.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,14 @@ bool SinricProSpeaker::handleRequest(const char* deviceId, const char* action, J
216216
if (volumeCallback && actionString == "setVolume") {
217217
int volume = request_value["volume"];
218218
success = volumeCallback(String(deviceId), volume);
219-
response_value["volume"] = volume;
219+
response_value["volume"] = limitValue(volume, 0, 100);
220220
return success;
221221
}
222222

223223
if (adjustVolumeCallback && actionString == "adjustVolume") {
224224
int volume = request_value["volume"];
225225
success = adjustVolumeCallback(String(deviceId), volume);
226-
response_value["volume"] = volume;
226+
response_value["volume"] = limitValue(volume, 0, 100);
227227
return success;
228228
}
229229

@@ -258,7 +258,7 @@ bool SinricProSpeaker::handleRequest(const char* deviceId, const char* action, J
258258
success = setBandsCallback(deviceId, bandsName, level);
259259
JsonObject response_value_bands_i = response_value_bands.createNestedObject();
260260
response_value_bands_i["name"] = bandsName;
261-
response_value_bands_i["level"] = level;
261+
response_value_bands_i["level"] = limitValue(level, 0, 100);
262262
}
263263
return success;
264264
}
@@ -275,7 +275,7 @@ bool SinricProSpeaker::handleRequest(const char* deviceId, const char* action, J
275275
success = adjustBandsCallback(deviceId, bandsName, levelDelta);
276276
JsonObject response_value_bands_i = response_value_bands.createNestedObject();
277277
response_value_bands_i["name"] = bandsName;
278-
response_value_bands_i["level"] = levelDelta;
278+
response_value_bands_i["level"] = limitValue(levelDelta, 0, 100);
279279
}
280280
return success;
281281
}
@@ -290,7 +290,7 @@ bool SinricProSpeaker::handleRequest(const char* deviceId, const char* action, J
290290
success = adjustBandsCallback(deviceId, bandsName, level);
291291
JsonObject response_value_bands_i = response_value_bands.createNestedObject();
292292
response_value_bands_i["name"] = bandsName;
293-
response_value_bands_i["level"] = level;
293+
response_value_bands_i["level"] = limitValue(level, 0, 100);
294294
}
295295
return success;
296296
}

0 commit comments

Comments
 (0)