SinricPro Library
Loading...
Searching...
No Matches
ColorTemperatureController.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(COLORTEMPERATURE, colorTemperature); // "colorTemperature"
11FSTR(COLORTEMPERATURE, setColorTemperature); // "setColorTemperature"
12FSTR(COLORTEMPERATURE, increaseColorTemperature); // "increaseColorTemperature"
13FSTR(COLORTEMPERATURE, decreaseColorTemperature); // "decreaseColorTemperature"
14
28using ColorTemperatureCallback = std::function<bool(const String &, int &)>;
29
43using IncreaseColorTemperatureCallback = std::function<bool(const String &, int &)>;
44
58using DecreaseColorTemperatureCallback = std::function<bool(const String &, int &)>;
59
60
65template <typename T>
67 public:
69
73
75
76 protected:
77 bool handleColorTemperatureController(SinricProRequest &request);
78
79 private:
80 EventLimiter event_limiter;
81// SinricProDeviceInterface *device;
82 ColorTemperatureCallback colorTemperatureCallback;
83 IncreaseColorTemperatureCallback increaseColorTemperatureCallback;
84 DecreaseColorTemperatureCallback decreaseColorTemperatureCallback;
85};
86
87template <typename T>
89: event_limiter(EVENT_LIMIT_STATE) {
90 T* device = static_cast<T*>(this);
91 device->registerRequestHandler(std::bind(&ColorTemperatureController<T>::handleColorTemperatureController, this, std::placeholders::_1));
92}
93
101template <typename T>
105
113template <typename T>
117
125template <typename T>
129
139template <typename T>
149
150template <typename T>
152 T* device = static_cast<T*>(this);
153
154 bool success = false;
155
156 if (colorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_setColorTemperature) {
158 success = colorTemperatureCallback(device->deviceId, colorTemperature);
160 }
161
162 if (increaseColorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_increaseColorTemperature) {
163 int colorTemperature = 1;
164 success = increaseColorTemperatureCallback(device->deviceId, colorTemperature);
165 request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
166 }
167
168 if (decreaseColorTemperatureCallback && request.action == FSTR_COLORTEMPERATURE_decreaseColorTemperature) {
169 int colorTemperature = -1;
170 success = decreaseColorTemperatureCallback(device->deviceId, colorTemperature);
171 request.response_value[FSTR_COLORTEMPERATURE_colorTemperature] = colorTemperature;
172 }
173
174 return success;
175}
176
177} // SINRICPRO_NAMESPACE
178
179template <typename T>
180using ColorTemperatureController = SINRICPRO_NAMESPACE::ColorTemperatureController<T>;
AirQuality.
Definition AirQualitySensor.h:19
ColorTemperatureController.
Definition ColorTemperatureController.h:66
bool sendColorTemperatureEvent(int colorTemperature, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setColorTemperature event to SinricPro Server indicating actual color temperature.
Definition ColorTemperatureController.h:140
void onDecreaseColorTemperature(DecreaseColorTemperatureCallback cb)
Set callback function for decreaseColorTemperature request.
Definition ColorTemperatureController.h:126
void onIncreaseColorTemperature(IncreaseColorTemperatureCallback cb)
Set callback function for increaseColorTemperature request.
Definition ColorTemperatureController.h:114
void onColorTemperature(ColorTemperatureCallback cb)
Set callback function for setColorTemperature request.
Definition ColorTemperatureController.h:102
std::function< bool(const String &, int &)> ColorTemperatureCallback
Callback definition for onColorTemperature function.
Definition ColorTemperatureController.h:28
std::function< bool(const String &, int &)> DecreaseColorTemperatureCallback
Callback definition for onDecreaseColorTemperature function.
Definition ColorTemperatureController.h:58
std::function< bool(const String &, int &)> IncreaseColorTemperatureCallback
Callback definition for onIncreaseColorTemperature function.
Definition ColorTemperatureController.h:43