11 #include "SinricProDevice.h"
31 String getProductType() {
return SinricProDevice::getProductType() + String(
"TV"); }
173 bool sendVolumeEvent(
int volume, String cause =
"PHYSICAL_INTERACTION");
174 bool sendMuteEvent(
bool mute, String cause =
"PHYSICAL_INTERACTION");
179 bool handleRequest(
const DeviceId &deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value)
override;
192 SinricProTV::SinricProTV(
const DeviceId &deviceId) :
SinricProDevice(deviceId),
193 volumeCallback(nullptr),
194 adjustVolumeCallback(nullptr),
195 muteCallback(nullptr),
196 mediaControlCallback(nullptr),
197 selectInputCallback(nullptr),
198 changeChannelCallback(nullptr),
199 changeChannelNumberCallback(nullptr),
200 skipChannelsCallback(nullptr) {
203 bool SinricProTV::handleRequest(
const DeviceId &deviceId,
const char* action, JsonObject &request_value, JsonObject &response_value) {
204 if (deviceId != this->deviceId)
return false;
205 if (SinricProDevice::handleRequest(deviceId, action, request_value, response_value))
return true;
207 bool success =
false;
208 String actionString = String(action);
210 if (volumeCallback && actionString ==
"setVolume") {
211 int volume = request_value[
"volume"];
212 success = volumeCallback(deviceId, volume);
213 response_value[
"volume"] = volume;
217 if (adjustVolumeCallback && actionString ==
"adjustVolume") {
218 int volume = request_value[
"volume"];
219 bool volumeDefault = request_value[
"volumeDefault"] |
false;
220 success = adjustVolumeCallback(deviceId, volume, volumeDefault);
221 response_value[
"volume"] = volume;
225 if (muteCallback && actionString ==
"setMute") {
226 bool mute = request_value[
"mute"];
227 success = muteCallback(deviceId, mute);
228 response_value[
"mute"] = mute;
232 if (mediaControlCallback && actionString ==
"mediaControl") {
233 String mediaControl = request_value[
"control"];
234 success = mediaControlCallback(deviceId, mediaControl);
235 response_value[
"control"] = mediaControl;
239 if (selectInputCallback && actionString ==
"selectInput") {
240 String input = request_value[
"input"];
241 success = selectInputCallback(deviceId, input);
242 response_value[
"input"] = input;
246 if (actionString ==
"changeChannel") {
248 if (changeChannelCallback && request_value[
"channel"].containsKey(
"name")) {
249 String channelName = request_value[
"channel"][
"name"] |
"";
250 success = changeChannelCallback(deviceId, channelName);
251 response_value[
"channel"][
"name"] = channelName;
254 if (changeChannelNumberCallback && request_value[
"channel"].containsKey(
"number")) {
255 int channelNumber = request_value[
"channel"][
"number"];
256 String channelName(
"");
257 success = changeChannelNumberCallback(deviceId, channelNumber, channelName);
258 response_value[
"channel"][
"name"] = channelName;
263 if (skipChannelsCallback && actionString ==
"skipChannels") {
264 int channelCount = request_value[
"channelCount"] | 0;
266 success = skipChannelsCallback(deviceId, channelCount, channelName);
267 response_value[
"channel"][
"name"] = channelName;
356 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setVolume", cause.c_str());
357 JsonObject event_value = eventMessage[
"payload"][
"value"];
358 event_value[
"volume"] = volume;
359 return sendEvent(eventMessage);
372 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"setMute", cause.c_str());
373 JsonObject event_value = eventMessage[
"payload"][
"value"];
374 event_value[
"mute"] = mute;
375 return sendEvent(eventMessage);
388 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"mediaControl", cause.c_str());
389 JsonObject event_value = eventMessage[
"payload"][
"value"];
390 event_value[
"control"] = mediaControl;
391 return sendEvent(eventMessage);
404 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"selectInput", cause.c_str());
405 JsonObject event_value = eventMessage[
"payload"][
"value"];
406 event_value[
"input"] = input;
407 return sendEvent(eventMessage);
420 DynamicJsonDocument eventMessage = prepareEvent(deviceId,
"changeChannel", cause.c_str());
421 JsonObject event_value = eventMessage[
"payload"][
"value"];
422 event_value[
"channel"][
"name"] = channelName;
423 return sendEvent(eventMessage);