1 #ifndef _TOGGLECONTROLLER_H_
2 #define _TOGGLECONTROLLER_H_
4 #include "SinricProRequest.h"
31 bool sendToggleStateEvent(
const String &instance,
bool state, String cause =
"PHYSICAL_INTERACTION");
34 bool handleToggleController(SinricProRequest &request);
37 std::map<String, GenericToggleStateCallback> genericToggleStateCallback;
51 genericToggleStateCallback[instance] = cb;
66 T& device =
static_cast<T&
>(*this);
68 DynamicJsonDocument eventMessage = device.prepareEvent(
"setToggleState", cause.c_str());
69 eventMessage[
"payload"][
"instanceId"] = instance;
70 JsonObject event_value = eventMessage[
"payload"][
"value"];
71 event_value[
"state"] = state ?
"On" :
"Off";
72 return device.sendEvent(eventMessage);
77 T &device =
static_cast<T &
>(*this);
81 if (request.action ==
"setToggleState") {
82 bool powerState = request.request_value[
"state"] ==
"On" ? true :
false;
83 if (genericToggleStateCallback.find(request.instance) != genericToggleStateCallback.end())
84 success = genericToggleStateCallback[request.instance](device.deviceId, request.instance, powerState);
85 request.response_value[
"state"] = powerState ?
"On" :
"Off";
ToggleController.
Definition: ToggleController.h:11
void onToggleState(const String &instance, GenericToggleStateCallback cb)
Set callback function for toggleState request.
Definition: ToggleController.h:50
std::function< bool(const String &, const String &, bool &)> GenericToggleStateCallback
Callback definition for onToggleState function.
Definition: ToggleController.h:28
bool sendToggleStateEvent(const String &instance, bool state, String cause="PHYSICAL_INTERACTION")
Send setToggleState event to SinricPro Server indicating actual toggle state.
Definition: ToggleController.h:65