SinricPro Library
Loading...
Searching...
No Matches
BrightnessController.h
1#pragma once
2
3#include "../SinricProRequest.h"
4#include "../EventLimiter.h"
5#include "../SinricProStrings.h"
6
7#include "../SinricProNamespace.h"
8namespace SINRICPRO_NAMESPACE {
9
10FSTR(BRIGHTNESS, setBrightness); // "setBrightness"
11FSTR(BRIGHTNESS, brightness); // "brightness"
12FSTR(BRIGHTNESS, adjustBrightness); // "adjustBrightness"
13FSTR(BRIGHTNESS, brightnessDelta); // "brightnessDelta"
14
28using BrightnessCallback = std::function<bool(const String &, int &)>;
29
43using AdjustBrightnessCallback = std::function<bool(const String &, int &)>;
44
49template <typename T>
51 public:
53
56
58 protected:
59 bool handleBrightnessController(SinricProRequest &request);
60
61 private:
62 EventLimiter event_limiter;
63 BrightnessCallback brightnessCallback;
64 AdjustBrightnessCallback adjustBrightnessCallback;
65};
66
67template <typename T>
69: event_limiter (EVENT_LIMIT_STATE) {
70 T* device = static_cast<T*>(this);
71 device->registerRequestHandler(std::bind(&BrightnessController<T>::handleBrightnessController, this, std::placeholders::_1));
72}
73
81template <typename T>
85
93template <typename T>
97
107template <typename T>
109 if (event_limiter) return false;
110 T* device = static_cast<T*>(this);
111
115 return device->sendEvent(eventMessage);
116}
117
118template <typename T>
120 T* device = static_cast<T*>(this);
121 bool success = false;
122
123 if (brightnessCallback && request.action == FSTR_BRIGHTNESS_setBrightness) {
124 int brightness = request.request_value[FSTR_BRIGHTNESS_brightness];
125 success = brightnessCallback(device->deviceId, brightness);
127 }
128
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;
133 }
134
135 return success;
136}
137
138} // SINRICPRO_NAMESPACE
139
140template <typename T>
141using BrightnessController = SINRICPRO_NAMESPACE::BrightnessController<T>;
AirQuality.
Definition AirQualitySensor.h:19
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