3 #include "../SinricProRequest.h"
4 #include "../EventLimiter.h"
5 #include "../SinricProStrings.h"
7 #include "../SinricProNamespace.h"
8 namespace SINRICPRO_NAMESPACE {
10 FSTR(BRIGHTNESS, setBrightness);
11 FSTR(BRIGHTNESS, brightness);
12 FSTR(BRIGHTNESS, adjustBrightness);
13 FSTR(BRIGHTNESS, brightnessDelta);
59 bool handleBrightnessController(SinricProRequest &request);
62 EventLimiter event_limiter;
69 : event_limiter (EVENT_LIMIT_STATE) {
70 T* device =
static_cast<T*
>(
this);
83 brightnessCallback = cb;
95 adjustBrightnessCallback = cb;
107 template <
typename T>
109 if (event_limiter)
return false;
110 T* device =
static_cast<T*
>(
this);
112 JsonDocument eventMessage = device->prepareEvent(FSTR_BRIGHTNESS_setBrightness, cause.c_str());
113 JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
114 event_value[FSTR_BRIGHTNESS_brightness] = brightness;
115 return device->sendEvent(eventMessage);
118 template <
typename T>
120 T* device =
static_cast<T*
>(
this);
121 bool success =
false;
123 if (brightnessCallback && request.action == FSTR_BRIGHTNESS_setBrightness) {
124 int brightness = request.request_value[FSTR_BRIGHTNESS_brightness];
125 success = brightnessCallback(device->deviceId, brightness);
126 request.response_value[FSTR_BRIGHTNESS_brightness] = brightness;
129 if (adjustBrightnessCallback && request.action == FSTR_BRIGHTNESS_adjustBrightness) {
130 int brightnessDelta = request.request_value[FSTR_BRIGHTNESS_brightnessDelta];
131 success = adjustBrightnessCallback(device->deviceId, brightnessDelta);
132 request.response_value[FSTR_BRIGHTNESS_brightness] = brightnessDelta;
140 template <
typename T>
141 using BrightnessController = SINRICPRO_NAMESPACE::BrightnessController<T>;
BrightnessController.
Definition: BrightnessController.h:50
void onAdjustBrightness(AdjustBrightnessCallback cb)
Set callback function for adjustBrightness request.
Definition: BrightnessController.h:94
bool sendBrightnessEvent(int brightness, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setBrightness event to SinricPro Server indicating actual brightness.
Definition: BrightnessController.h:108
void onBrightness(BrightnessCallback cb)
Set callback function for setBrightness request.
Definition: BrightnessController.h:82
std::function< bool(const String &, int &)> AdjustBrightnessCallback
Callback definition for onAdjustBrightness function.
Definition: BrightnessController.h:43
std::function< bool(const String &, int &)> BrightnessCallback
Callback definition for onBrightness function.
Definition: BrightnessController.h:28