1 #ifndef _EQUALIZERCONTROLLER_H_
2 #define _EQUALIZERCONTROLLER_H_
4 #include "SinricProRequest.h"
71 bool sendBandsEvent(String bands,
int level, String cause =
"PHYSICAL_INTERACTION");
74 bool handleEqualizerController(SinricProRequest &request);
109 template <
typename T>
122 template <
typename T>
124 T& device =
static_cast<T&
>(*this);
126 DynamicJsonDocument eventMessage = device.prepareEvent(
"setBands", cause.c_str());
127 JsonObject event_value = eventMessage[
"payload"][
"value"];
128 JsonArray event_value_bands = event_value.createNestedArray(
"bands");
129 JsonObject event_bands = event_value_bands.createNestedObject();
130 event_bands[
"name"] = bands;
131 event_bands[
"value"] = level;
132 return device.sendEvent(eventMessage);
135 template <
typename T>
137 T &device =
static_cast<T &
>(*this);
138 bool success =
false;
140 if (setBandsCallback && request.action ==
"setBands") {
141 JsonArray bands_array = request.request_value[
"bands"];
142 JsonArray response_value_bands = request.response_value.createNestedArray(
"bands");
144 for (
size_t i = 0; i < bands_array.size(); i++) {
145 int level = bands_array[i][
"level"] | 0;
146 String bandsName = bands_array[i][
"name"] |
"";
147 success = setBandsCallback(device.deviceId, bandsName, level);
148 JsonObject response_value_bands_i = response_value_bands.createNestedObject();
149 response_value_bands_i[
"name"] = bandsName;
150 response_value_bands_i[
"level"] = level;
155 if (adjustBandsCallback && request.action ==
"adjustBands") {
156 JsonArray bands_array = request.request_value[
"bands"];
157 JsonArray response_value_bands = request.response_value.createNestedArray(
"bands");
159 for (
size_t i = 0; i < bands_array.size(); i++) {
160 int levelDelta = bands_array[i][
"levelDelta"] | 1;
161 String direction = bands_array[i][
"levelDirection"];
162 if (direction ==
"DOWN")
164 String bandsName = bands_array[i][
"name"] |
"";
165 success = adjustBandsCallback(device.deviceId, bandsName, levelDelta);
166 JsonObject response_value_bands_i = response_value_bands.createNestedObject();
167 response_value_bands_i[
"name"] = bandsName;
168 response_value_bands_i[
"level"] = levelDelta;
173 if (resetBandsCallback && request.action ==
"resetBands") {
174 JsonArray bands_array = request.request_value[
"bands"];
175 JsonArray response_value_bands = request.response_value.createNestedArray(
"bands");
177 for (
size_t i = 0; i < bands_array.size(); i++) {
179 String bandsName = bands_array[i][
"name"] |
"";
180 success = adjustBandsCallback(device.deviceId, bandsName, level);
181 JsonObject response_value_bands_i = response_value_bands.createNestedObject();
182 response_value_bands_i[
"name"] = bandsName;
183 response_value_bands_i[
"level"] = level;
EqualizerController.
Definition: EqualizerController.h:11
std::function< bool(const String &, const String &, int &)> AdjustBandsCallback
Callback definition for onAdjustBands function.
Definition: EqualizerController.h:48
void onAdjustBands(AdjustBandsCallback cb)
Set callback function for adjustBands request.
Definition: EqualizerController.h:100
void onSetBands(SetBandsCallback cb)
Set callback function for setBands request.
Definition: EqualizerController.h:90
bool sendBandsEvent(String bands, int level, String cause="PHYSICAL_INTERACTION")
Send setBands event to SinricPro Server indicating bands level has changed.
Definition: EqualizerController.h:123
void onResetBands(ResetBandsCallback cb)
Set callback function for resetBands request.
Definition: EqualizerController.h:110
std::function< bool(const String &, const String &, int &)> ResetBandsCallback
Callback definition for onResetBands function.
Definition: EqualizerController.h:65
std::function< bool(const String &, const String &, int &)> SetBandsCallback
Callback definition for onSetBands function.
Definition: EqualizerController.h:30