1 #ifndef _BANDSCONTROLLER_H_
2 #define _BANDSCONTROLLER_H_
69 bool sendBandsEvent(String bands,
int level, String cause =
"PHYSICAL_INTERACTION");
72 bool handleBandsController(
const String &action, JsonObject &request_value, JsonObject &response_value);
107 template <
typename T>
120 template <
typename T>
122 T& device =
static_cast<T&
>(*this);
124 DynamicJsonDocument eventMessage = device.prepareEvent(
"setBands", cause.c_str());
125 JsonObject event_value = eventMessage[
"payload"][
"value"];
126 JsonArray event_value_bands = event_value.createNestedArray(
"bands");
127 JsonObject event_bands = event_value_bands.createNestedObject();
128 event_bands[
"name"] = bands;
129 event_bands[
"value"] = level;
130 return device.sendEvent(eventMessage);
133 template <
typename T>
136 T &device =
static_cast<T &
>(*this);
137 bool success =
false;
139 if (setBandsCallback && action ==
"setBands") {
140 JsonArray bands_array = request_value[
"bands"];
141 JsonArray response_value_bands = response_value.createNestedArray(
"bands");
143 for (
size_t i = 0; i < bands_array.size(); i++) {
144 int level = bands_array[i][
"level"] | 0;
145 String bandsName = bands_array[i][
"name"] |
"";
146 success = setBandsCallback(device.getDeviceId(), bandsName, level);
147 JsonObject response_value_bands_i = response_value_bands.createNestedObject();
148 response_value_bands_i[
"name"] = bandsName;
149 response_value_bands_i[
"level"] = level;
154 if (adjustBandsCallback && action ==
"adjustBands") {
155 JsonArray bands_array = request_value[
"bands"];
156 JsonArray response_value_bands = response_value.createNestedArray(
"bands");
158 for (
size_t i = 0; i < bands_array.size(); i++) {
159 int levelDelta = bands_array[i][
"levelDelta"] | 1;
160 String direction = bands_array[i][
"levelDirection"];
161 if (direction ==
"DOWN")
163 String bandsName = bands_array[i][
"name"] |
"";
164 success = adjustBandsCallback(device.getDeviceId(), bandsName, levelDelta);
165 JsonObject response_value_bands_i = response_value_bands.createNestedObject();
166 response_value_bands_i[
"name"] = bandsName;
167 response_value_bands_i[
"level"] = levelDelta;
172 if (resetBandsCallback && action ==
"resetBands") {
173 JsonArray bands_array = request_value[
"bands"];
174 JsonArray response_value_bands = response_value.createNestedArray(
"bands");
176 for (
size_t i = 0; i < bands_array.size(); i++) {
178 String bandsName = bands_array[i][
"name"] |
"";
179 success = adjustBandsCallback(device.getDeviceId(), bandsName, level);
180 JsonObject response_value_bands_i = response_value_bands.createNestedObject();
181 response_value_bands_i[
"name"] = bandsName;
182 response_value_bands_i[
"level"] = level;
BandsController.
Definition: BandsController.h:10
std::function< bool(const String &, const String &, int &)> AdjustBandsCallback
Callback definition for onAdjustBands function.
Definition: BandsController.h:46
void onAdjustBands(AdjustBandsCallback cb)
Set callback function for adjustBands request.
Definition: BandsController.h:98
void onSetBands(SetBandsCallback cb)
Set callback function for setBands request.
Definition: BandsController.h:88
bool sendBandsEvent(String bands, int level, String cause="PHYSICAL_INTERACTION")
Send setBands event to SinricPro Server indicating bands level has changed.
Definition: BandsController.h:121
void onResetBands(ResetBandsCallback cb)
Set callback function for resetBands request.
Definition: BandsController.h:108
std::function< bool(const String &, const String &, int &)> ResetBandsCallback
Callback definition for onResetBands function.
Definition: BandsController.h:63
std::function< bool(const String &, const String &, int &)> SetBandsCallback
Callback definition for onSetBands function.
Definition: BandsController.h:28