3#include "../SinricProRequest.h"
4#include "../EventLimiter.h"
5#include "../SinricProStrings.h"
7#include "../SinricProNamespace.h"
8namespace SINRICPRO_NAMESPACE {
10FSTR(EQUALIZER, setBands);
11FSTR(EQUALIZER, bands);
13FSTR(EQUALIZER, value);
14FSTR(EQUALIZER, level);
15FSTR(EQUALIZER, adjustBands);
16FSTR(EQUALIZER, levelDelta);
17FSTR(EQUALIZER, levelDirection);
19FSTR(EQUALIZER, resetBands);
90 bool handleEqualizerController(SinricProRequest &
request);
93 EventLimiter event_limiter;
101: event_limiter(EVENT_LIMIT_STATE) {
102 T*
device =
static_cast<T*
>(
this);
148 if (event_limiter)
return false;
149 T*
device =
static_cast<T*
>(
this);
162 T*
device =
static_cast<T*
>(
this);
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;
219using EqualizerController = SINRICPRO_NAMESPACE::EqualizerController<T>;
AirQuality.
Definition AirQualitySensor.h:19
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