SinricPro Library
BrightnessController.h
1 #ifndef _BRIGHTNESSCONTROLLER_H_
2 #define _BRIGHTNESSCONTROLLER_H_
3 
4 #include "SinricProRequest.h"
5 
10 template <typename T>
12  public:
13  BrightnessController() { static_cast<T &>(*this).requestHandlers.push_back(std::bind(&BrightnessController<T>::handleBrightnessController, this, std::placeholders::_1)); }
27  using BrightnessCallback = std::function<bool(const String &, int &)>;
28 
42  using AdjustBrightnessCallback = std::function<bool(const String &, int &)>;
43 
46 
47  bool sendBrightnessEvent(int brightness, String cause = "PHYSICAL_INTERACTION");
48  protected:
49  bool handleBrightnessController(SinricProRequest &request);
50 
51  private:
52  BrightnessCallback brightnessCallback;
53  AdjustBrightnessCallback adjustBrightnessCallback;
54 };
55 
56 
64 template <typename T>
66  brightnessCallback = cb;
67 }
68 
76 template <typename T>
78  adjustBrightnessCallback = cb;
79 }
80 
90 template <typename T>
91 bool BrightnessController<T>::sendBrightnessEvent(int brightness, String cause) {
92  T& device = static_cast<T&>(*this);
93 
94  DynamicJsonDocument eventMessage = device.prepareEvent("setBrightness", cause.c_str());
95  JsonObject event_value = eventMessage["payload"]["value"];
96  event_value["brightness"] = brightness;
97  return device.sendEvent(eventMessage);
98 }
99 
100 template <typename T>
101 bool BrightnessController<T>::handleBrightnessController(SinricProRequest &request) {
102  T &device = static_cast<T &>(*this);
103  bool success = false;
104 
105  if (brightnessCallback && request.action == "setBrightness") {
106  int brightness = request.request_value["brightness"];
107  success = brightnessCallback(device.deviceId, brightness);
108  request.response_value["brightness"] = brightness;
109  }
110 
111  if (adjustBrightnessCallback && request.action == "adjustBrightness") {
112  int brightnessDelta = request.request_value["brightnessDelta"];
113  success = adjustBrightnessCallback(device.deviceId, brightnessDelta);
114  request.response_value["brightness"] = brightnessDelta;
115  }
116 
117  return success;
118 }
119 
120 #endif
BrightnessController.
Definition: BrightnessController.h:11
void onAdjustBrightness(AdjustBrightnessCallback cb)
Set callback function for adjustBrightness request.
Definition: BrightnessController.h:77
std::function< bool(const String &, int &)> AdjustBrightnessCallback
Callback definition for onAdjustBrightness function.
Definition: BrightnessController.h:42
bool sendBrightnessEvent(int brightness, String cause="PHYSICAL_INTERACTION")
Send setBrightness event to SinricPro Server indicating actual brightness.
Definition: BrightnessController.h:91
void onBrightness(BrightnessCallback cb)
Set callback function for setBrightness request.
Definition: BrightnessController.h:65
std::function< bool(const String &, int &)> BrightnessCallback
Callback definition for onBrightness function.
Definition: BrightnessController.h:27