11 #include "SinricProDevice.h"
30 SinricProTV(
const char* deviceId,
unsigned long eventWaitTime=100);
31 String getProductType() {
return SinricProDevice::getProductType() + String(
"TV"); }
172 bool sendVolumeEvent(
int volume, String cause =
"PHYSICAL_INTERACTION");
173 bool sendMuteEvent(
bool mute, String cause =
"PHYSICAL_INTERACTION");
178 bool handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value)
override;
191 SinricProTV::SinricProTV(
const char* deviceId,
unsigned long eventWaitTime) :
SinricProDevice(deviceId, eventWaitTime),
192 volumeCallback(nullptr),
193 adjustVolumeCallback(nullptr),
194 muteCallback(nullptr),
195 mediaControlCallback(nullptr),
196 selectInputCallback(nullptr),
197 changeChannelCallback(nullptr),
198 changeChannelNumberCallback(nullptr),
199 skipChannelsCallback(nullptr) {
202 bool SinricProTV::handleRequest(
const char* deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value) {
203 if (strcmp(deviceId, this->deviceId) != 0)
return false;
204 if (SinricProDevice::handleRequest(deviceId, action, request_value, response_value))
return true;
206 bool success =
false;
207 String actionString = String(action);
209 if (volumeCallback && actionString ==
"setVolume") {
210 int volume = request_value[
"volume"];
211 success = volumeCallback(String(deviceId), volume);
212 response_value[
"volume"] = volume;
216 if (adjustVolumeCallback && actionString ==
"adjustVolume") {
217 int volume = request_value[
"volume"];
218 success = adjustVolumeCallback(String(deviceId), volume);
219 response_value[
"volume"] = volume;
223 if (muteCallback && actionString ==
"setMute") {
224 bool mute = request_value[
"mute"];
225 success = muteCallback(String(deviceId), mute);
226 response_value[
"mute"] = mute;
230 if (mediaControlCallback && actionString ==
"mediaControl") {
231 String mediaControl = request_value[
"control"];
232 success = mediaControlCallback(String(deviceId), mediaControl);
233 response_value[
"control"] = mediaControl;
237 if (selectInputCallback && actionString ==
"selectInput") {
238 String input = request_value[
"input"];
239 success = selectInputCallback(String(deviceId), input);
240 response_value[
"input"] = input;
244 if (actionString ==
"changeChannel") {
246 if (changeChannelCallback && request_value[
"channel"].containsKey(
"name")) {
247 String channelName = request_value[
"channel"][
"name"] |
"";
248 success = changeChannelCallback(String(deviceId), channelName);
249 response_value[
"channel"][
"name"] = channelName;
252 if (changeChannelNumberCallback && request_value[
"channel"].containsKey(
"number")) {
253 int channelNumber = request_value[
"channel"][
"number"];
254 String channelName(
"");
255 success = changeChannelNumberCallback(String(deviceId), channelNumber, channelName);
256 response_value[
"channel"][
"name"] = channelName;
261 if (skipChannelsCallback && actionString ==
"skipChannels") {
262 int channelCount = request_value[
"channelCount"] | 0;
264 success = skipChannelsCallback(String(deviceId), channelCount, channelName);
265 response_value[
"channel"][
"name"] = channelName;
354 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setVolume", cause.c_str());
355 JsonObject event_value = eventMessage[
"payload"][
"value"];
356 event_value[
"volume"] = volume;
357 return sendEvent(eventMessage);
370 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setMute", cause.c_str());
371 JsonObject event_value = eventMessage[
"payload"][
"value"];
372 event_value[
"mute"] = mute;
373 return sendEvent(eventMessage);
386 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"mediaControl", cause.c_str());
387 JsonObject event_value = eventMessage[
"payload"][
"value"];
388 event_value[
"control"] = mediaControl;
389 return sendEvent(eventMessage);
402 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"selectInput", cause.c_str());
403 JsonObject event_value = eventMessage[
"payload"][
"value"];
404 event_value[
"input"] = input;
405 return sendEvent(eventMessage);
418 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"changeChannel", cause.c_str());
419 JsonObject event_value = eventMessage[
"payload"][
"value"];
420 event_value[
"channel"][
"name"] = channelName;
421 return sendEvent(eventMessage);