1 #ifndef _RANGECONTROLLER_H_
2 #define _RANGECONTROLLER_H_
4 #include "SinricProRequest.h"
87 bool sendRangeValueEvent(
const String& instance,
int rangeValue, String cause =
"PHYSICAL_INTERACTION");
90 bool handleRangeController(SinricProRequest &request);
94 std::map<String, GenericSetRangeValueCallback> genericSetRangeValueCallback;
96 std::map<String, GenericAdjustRangeValueCallback> genericAdjustRangeValueCallback;
105 template <
typename T>
107 setRangeValueCallback = cb;
117 template <
typename T>
119 genericSetRangeValueCallback[instance] = cb;
128 template <
typename T>
130 adjustRangeValueCallback = cb;
133 template <
typename T>
135 genericAdjustRangeValueCallback[instance] = cb;
148 template <
typename T>
150 T& device =
static_cast<T&
>(*this);
152 DynamicJsonDocument eventMessage = device.prepareEvent(
"setRangeValue", cause.c_str());
153 JsonObject event_value = eventMessage[
"payload"][
"value"];
154 event_value[
"rangeValue"] = rangeValue;
155 return device.sendEvent(eventMessage);
168 template <
typename T>
170 T &device =
static_cast<T &
>(*this);
172 DynamicJsonDocument eventMessage = device.prepareEvent(
"setRangeValue", cause.c_str());
173 eventMessage[
"payload"][
"instanceId"] = instance;
175 JsonObject event_value = eventMessage[
"payload"][
"value"];
176 event_value[
"rangeValue"] = rangeValue;
177 return device.sendEvent(eventMessage);
180 template <
typename T>
182 T &device =
static_cast<T &
>(*this);
184 bool success =
false;
186 if (request.action ==
"setRangeValue") {
187 int rangeValue = request.request_value[
"rangeValue"] | 0;
188 if (request.instance !=
"") {
189 if (genericSetRangeValueCallback.find(request.instance) != genericSetRangeValueCallback.end())
190 success = genericSetRangeValueCallback[request.instance](device.deviceId, request.instance, rangeValue);
192 if (setRangeValueCallback) success = setRangeValueCallback(device.deviceId, rangeValue);
194 request.response_value[
"rangeValue"] = rangeValue;
198 if (request.action ==
"adjustRangeValue") {
199 int rangeValueDelta = request.request_value[
"rangeValueDelta"] | 0;
200 if (request.instance !=
"") {
201 if (genericAdjustRangeValueCallback.find(request.instance) != genericAdjustRangeValueCallback.end())
202 success = genericAdjustRangeValueCallback[request.instance](device.deviceId, request.instance, rangeValueDelta);
204 if (adjustRangeValueCallback)
205 success = adjustRangeValueCallback(device.deviceId, rangeValueDelta);
208 request.response_value[
"rangeValue"] = rangeValueDelta;
RangeController.
Definition: RangeController.h:11
bool sendRangeValueEvent(const String &instance, int rangeValue, String cause="PHYSICAL_INTERACTION")
Send rangeValue event to report curent rangeValue to SinricPro server for a specific instance (custom...
Definition: RangeController.h:169
std::function< bool(const String &, const String &, int &)> GenericAdjustRangeValueCallback
Callback definition for onAdjustRangeValue function on a specific instance for custom devices.
Definition: RangeController.h:78
void onRangeValue(SetRangeValueCallback cb)
Set callback function for setRangeValue request.
Definition: RangeController.h:106
std::function< bool(const String &, int &)> AdjustRangeValueCallback
Callback definition for onAdjustRangeValue function.
Definition: RangeController.h:61
void onRangeValue(const String &instance, GenericSetRangeValueCallback cb)
Set callback function for setRangeValue request on a specific instance (custom device)
Definition: RangeController.h:118
std::function< bool(const String &, int &)> SetRangeValueCallback
Callback definition for onRangeValue function.
Definition: RangeController.h:28
void onAdjustRangeValue(AdjustRangeValueCallback cb)
Set callback function for adjustRangeValue request.
Definition: RangeController.h:129
std::function< bool(const String &, const String &, int &)> GenericSetRangeValueCallback
Callback definition for onRangeValue function on a specific instance.
Definition: RangeController.h:45
bool sendRangeValueEvent(int rangeValue, String cause="PHYSICAL_INTERACTION")
Send rangeValue event to report curent rangeValue to SinricPro server.
Definition: RangeController.h:149