3 #include "../SinricProRequest.h"
4 #include "../EventLimiter.h"
5 #include "../SinricProStrings.h"
7 #include "../SinricProNamespace.h"
8 namespace SINRICPRO_NAMESPACE {
10 FSTR(EQUALIZER, setBands);
11 FSTR(EQUALIZER, bands);
12 FSTR(EQUALIZER, name);
13 FSTR(EQUALIZER, value);
14 FSTR(EQUALIZER, level);
15 FSTR(EQUALIZER, adjustBands);
16 FSTR(EQUALIZER, levelDelta);
17 FSTR(EQUALIZER, levelDirection);
18 FSTR(EQUALIZER, DOWN);
19 FSTR(EQUALIZER, resetBands);
87 bool sendBandsEvent(String bands,
int level, String cause =
"PHYSICAL_INTERACTION");
90 bool handleEqualizerController(SinricProRequest &request);
93 EventLimiter event_limiter;
101 : event_limiter(EVENT_LIMIT_STATE) {
102 T* device =
static_cast<T*
>(
this);
113 template <
typename T>
123 template <
typename T>
133 template <
typename T>
146 template <
typename T>
148 if (event_limiter)
return false;
149 T* device =
static_cast<T*
>(
this);
151 JsonDocument eventMessage = device->prepareEvent(FSTR_EQUALIZER_setBands, cause.c_str());
152 JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
153 JsonArray event_value_bands = event_value.createNestedArray(FSTR_EQUALIZER_bands);
154 JsonObject event_bands = event_value_bands.add<JsonObject>();
155 event_bands[FSTR_EQUALIZER_name] = bands;
156 event_bands[FSTR_EQUALIZER_value] = level;
157 return device->sendEvent(eventMessage);
160 template <
typename T>
162 T* device =
static_cast<T*
>(
this);
163 bool success =
false;
165 if (setBandsCallback && request.action == FSTR_EQUALIZER_setBands) {
166 JsonArray bands_array = request.request_value[FSTR_EQUALIZER_bands];
167 JsonArray response_value_bands = request.response_value[FSTR_EQUALIZER_bands].to<JsonArray>();
169 for (
size_t i = 0; i < bands_array.size(); i++) {
170 int level = bands_array[i][FSTR_EQUALIZER_level] | 0;
171 String bandsName = bands_array[i][FSTR_EQUALIZER_name] |
"";
172 success = setBandsCallback(device->deviceId, bandsName, level);
173 JsonObject response_value_bands_i = response_value_bands.add<JsonObject>();
174 response_value_bands_i[FSTR_EQUALIZER_name] = bandsName;
175 response_value_bands_i[FSTR_EQUALIZER_level] = level;
180 if (adjustBandsCallback && request.action == FSTR_EQUALIZER_adjustBands) {
181 JsonArray bands_array = request.request_value[FSTR_EQUALIZER_bands];
182 JsonArray response_value_bands = request.response_value[FSTR_EQUALIZER_bands].to<JsonArray>();
184 for (
size_t i = 0; i < bands_array.size(); i++) {
185 int levelDelta = bands_array[i][FSTR_EQUALIZER_levelDelta] | 1;
186 String direction = bands_array[i][FSTR_EQUALIZER_levelDirection];
187 if (direction == FSTR_EQUALIZER_DOWN)
189 String bandsName = bands_array[i][FSTR_EQUALIZER_name] |
"";
190 success = adjustBandsCallback(device->deviceId, bandsName, levelDelta);
191 JsonObject response_value_bands_i = response_value_bands.add<JsonObject>();
192 response_value_bands_i[FSTR_EQUALIZER_name] = bandsName;
193 response_value_bands_i[FSTR_EQUALIZER_level] = levelDelta;
198 if (resetBandsCallback && request.action == FSTR_EQUALIZER_resetBands) {
199 JsonArray bands_array = request.request_value[FSTR_EQUALIZER_bands];
200 JsonArray response_value_bands = request.response_value[FSTR_EQUALIZER_bands].to<JsonArray>();
202 for (
size_t i = 0; i < bands_array.size(); i++) {
204 String bandsName = bands_array[i][FSTR_EQUALIZER_name] |
"";
205 success = adjustBandsCallback(device->deviceId, bandsName, level);
206 JsonObject response_value_bands_i = response_value_bands.add<JsonObject>();
207 response_value_bands_i[FSTR_EQUALIZER_name] = bandsName;
208 response_value_bands_i[FSTR_EQUALIZER_level] = level;
218 template <
typename T>
219 using EqualizerController = SINRICPRO_NAMESPACE::EqualizerController<T>;
EqualizerController.
Definition: EqualizerController.h:79
void onAdjustBands(AdjustBandsCallback cb)
Set callback function for adjustBands request.
Definition: EqualizerController.h:124
void onSetBands(SetBandsCallback cb)
Set callback function for setBands request.
Definition: EqualizerController.h:114
bool sendBandsEvent(String bands, int level, String cause="PHYSICAL_INTERACTION")
Send setBands event to SinricPro Server indicating bands level has changed.
Definition: EqualizerController.h:147
void onResetBands(ResetBandsCallback cb)
Set callback function for resetBands request.
Definition: EqualizerController.h:134
std::function< bool(const String &, const String &, int &)> AdjustBandsCallback
Callback definition for onAdjustBands function.
Definition: EqualizerController.h:55
std::function< bool(const String &, const String &, int &)> ResetBandsCallback
Callback definition for onResetBands function.
Definition: EqualizerController.h:72
std::function< bool(const String &, const String &, int &)> SetBandsCallback
Callback definition for onSetBands function.
Definition: EqualizerController.h:37