SinricPro Library
GenericModeController.h
1 #ifndef _MODECONTROLLER_H_
2 #define _MODECONTROLLER_H_
3 
4 #include "./../SinricProDeviceInterface.h"
5 
11  public:
12  ModeController(SinricProDeviceInterface *device);
13 
28  using ModeCallback = std::function<bool(const String &, String &)>;
29 
30  void onSetMode(ModeCallback cb);
31 
32  bool sendModeEvent(String mode, String cause = "PHYSICAL_INTERACTION");
33 
34  protected:
35  bool handleRequest(const char *action, JsonObject &request_value, JsonObject &response_value);
36 
37  private:
38  SinricProDeviceInterface *device;
39  ModeCallback setModeCallback;
40 };
41 
42 ModeController::ModeController(SinricProDeviceInterface *device) : device(device) {}
43 
51 void ModeController::onSetMode(ModeCallback cb) { setModeCallback = cb; }
52 
62 bool ModeController::sendModeEvent(String mode, String cause) {
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);
67 }
68 
69 bool ModeController::handleRequest(const char *action, JsonObject &request_value, JsonObject &response_value) {
70  bool success = false;
71  String actionString = String(action);
72 
73  if (setModeCallback && actionString == "setMode") {
74  String mode = request_value["mode"] | "";
75  success = setModeCallback(device->getDeviceId(), mode);
76  response_value["mode"] = mode;
77  return success;
78  }
79 
80  return success;
81 }
82 
83 #endif
ModeController::ModeCallback
std::function< bool(const String &, String &)> ModeCallback
Callback definition for onSetMode function.
Definition: GenericModeController.h:28
ModeController::onSetMode
void onSetMode(ModeCallback cb)
Set callback function for setMode request.
Definition: GenericModeController.h:51
ModeController
ModeController.
Definition: GenericModeController.h:10
ModeController::sendModeEvent
bool sendModeEvent(String mode, String cause="PHYSICAL_INTERACTION")
Send setMode event to SinricPro Server indicating the mode has changed.
Definition: GenericModeController.h:62