11 #include "SinricProDevice.h"
30 SinricProTV(
const char* deviceId,
unsigned long eventWaitTime=100);
171 bool sendVolumeEvent(
int volume, String cause =
"PHYSICAL_INTERACTION");
172 bool sendMuteEvent(
bool mute, String cause =
"PHYSICAL_INTERACTION");
177 bool handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value)
override;
190 SinricProTV::SinricProTV(
const char* deviceId,
unsigned long eventWaitTime) :
SinricProDevice(deviceId, eventWaitTime),
191 volumeCallback(nullptr),
192 adjustVolumeCallback(nullptr),
193 muteCallback(nullptr),
194 mediaControlCallback(nullptr),
195 selectInputCallback(nullptr),
196 changeChannelCallback(nullptr),
197 changeChannelNumberCallback(nullptr),
198 skipChannelsCallback(nullptr) {
201 bool SinricProTV::handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value) {
202 if (strcmp(deviceId, this->deviceId) != 0)
return false;
203 if (SinricProDevice::handleRequest(deviceId, action, request_value, response_value))
return true;
205 bool success =
false;
206 String actionString = String(action);
208 if (volumeCallback && actionString ==
"setVolume") {
209 int volume = request_value[
"volume"];
210 success = volumeCallback(String(deviceId), volume);
211 response_value[
"volume"] = volume;
215 if (adjustVolumeCallback && actionString ==
"adjustVolume") {
216 int volume = request_value[
"volume"];
217 success = adjustVolumeCallback(String(deviceId), volume);
218 response_value[
"volume"] = volume;
222 if (muteCallback && actionString ==
"setMute") {
223 bool mute = request_value[
"mute"];
224 success = muteCallback(String(deviceId), mute);
225 response_value[
"mute"] = mute;
229 if (mediaControlCallback && actionString ==
"mediaControl") {
230 String mediaControl = request_value[
"control"];
231 success = mediaControlCallback(String(deviceId), mediaControl);
232 response_value[
"control"] = mediaControl;
236 if (selectInputCallback && actionString ==
"selectInput") {
237 String input = request_value[
"input"];
238 success = selectInputCallback(String(deviceId), input);
239 response_value[
"input"] = input;
243 if (actionString ==
"changeChannel") {
245 if (changeChannelCallback && request_value[
"channel"].containsKey(
"name")) {
246 String channelName = request_value[
"channel"][
"name"] |
"";
247 success = changeChannelCallback(String(deviceId), channelName);
248 response_value[
"channel"][
"name"] = channelName;
251 if (changeChannelNumberCallback && request_value[
"channel"].containsKey(
"number")) {
252 int channelNumber = request_value[
"channel"][
"number"];
253 String channelName(
"");
254 success = changeChannelNumberCallback(String(deviceId), channelNumber, channelName);
255 response_value[
"channel"][
"name"] = channelName;
260 if (skipChannelsCallback && actionString ==
"skipChannels") {
261 int channelCount = request_value[
"channelCount"] | 0;
263 success = skipChannelsCallback(String(deviceId), channelCount, channelName);
264 response_value[
"channel"][
"name"] = channelName;
353 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setVolume", cause.c_str());
354 JsonObject event_value = eventMessage[
"payload"][
"value"];
355 event_value[
"volume"] = volume;
356 return sendEvent(eventMessage);
369 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setMute", cause.c_str());
370 JsonObject event_value = eventMessage[
"payload"][
"value"];
371 event_value[
"mute"] = mute;
372 return sendEvent(eventMessage);
385 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"mediaControl", cause.c_str());
386 JsonObject event_value = eventMessage[
"payload"][
"value"];
387 event_value[
"control"] = mediaControl;
388 return sendEvent(eventMessage);
401 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"selectInput", cause.c_str());
402 JsonObject event_value = eventMessage[
"payload"][
"value"];
403 event_value[
"input"] = input;
404 return sendEvent(eventMessage);
417 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"changeChannel", cause.c_str());
418 JsonObject event_value = eventMessage[
"payload"][
"value"];
419 event_value[
"channel"][
"name"] = channelName;
420 return sendEvent(eventMessage);