1 #ifndef _MODECONTROLLER_H_
2 #define _MODECONTROLLER_H_
4 #include "./../SinricProDeviceInterface.h"
28 using ModeCallback = std::function<bool(
const String &, String &)>;
32 bool sendModeEvent(String mode, String cause =
"PHYSICAL_INTERACTION");
35 bool handleRequest(
const char *action, JsonObject &request_value, JsonObject &response_value);
38 SinricProDeviceInterface *device;
42 ModeController::ModeController(SinricProDeviceInterface *device) : device(device) {}
63 DynamicJsonDocument eventMessage = device->prepareEvent(
"setMode", cause.c_str());
64 JsonObject event_value = eventMessage[
"payload"][
"value"];
65 event_value[
"mode"] = mode;
66 return device->sendEvent(eventMessage);
69 bool ModeController::handleRequest(
const char *action, JsonObject &request_value, JsonObject &response_value) {
71 String actionString = String(action);
73 if (setModeCallback && actionString ==
"setMode") {
74 String mode = request_value[
"mode"] |
"";
75 success = setModeCallback(device->getDeviceId(), mode);
76 response_value[
"mode"] = mode;