1 #ifndef _CHANNELCONTROLLER_H_
2 #define _CHANNELCONTROLLER_H_
4 #include "SinricProRequest.h"
68 bool handleChannelController(SinricProRequest &request);
86 changeChannelCallback = cb;
98 changeChannelNumberCallback = cb;
108 template <
typename T>
110 skipChannelsCallback = cb;
122 template <
typename T>
124 T& device =
static_cast<T&
>(*this);
126 DynamicJsonDocument eventMessage = device.prepareEvent(
"changeChannel", cause.c_str());
127 JsonObject event_value = eventMessage[
"payload"][
"value"];
128 event_value[
"channel"][
"name"] = channelName;
129 return device.sendEvent(eventMessage);
132 template <
typename T>
134 T &device =
static_cast<T &
>(*this);
136 bool success =
false;
138 if (request.action ==
"changeChannel") {
140 if (changeChannelCallback && request.request_value[
"channel"].containsKey(
"name")) {
141 String channelName = request.request_value[
"channel"][
"name"] |
"";
142 success = changeChannelCallback(device.deviceId, channelName);
143 request.response_value[
"channel"][
"name"] = channelName;
146 if (changeChannelNumberCallback && request.request_value[
"channel"].containsKey(
"number")) {
147 int channelNumber = request.request_value[
"channel"][
"number"];
148 String channelName(
"");
149 success = changeChannelNumberCallback(device.deviceId, channelNumber, channelName);
150 request.response_value[
"channel"][
"name"] = channelName;
155 if (skipChannelsCallback && request.action ==
"skipChannels") {
156 int channelCount = request.request_value[
"channelCount"] | 0;
158 success = skipChannelsCallback(device.deviceId, channelCount, channelName);
159 request.response_value[
"channel"][
"name"] = channelName;
ChannelController.
Definition: ChannelController.h:11
std::function< bool(const String &, int, String &)> SkipChannelsCallback
Callback definition for onSkipChannels function.
Definition: ChannelController.h:60
std::function< bool(const String &, String &)> ChangeChannelCallback
Callback definition for onChangeChannel function.
Definition: ChannelController.h:28
void onChangeChannel(ChangeChannelCallback cb)
Set callback function for changeChannel request.
Definition: ChannelController.h:85
bool sendChangeChannelEvent(String channelName, String cause="PHYSICAL_INTERACTION")
Send changeChannel event to SinricPro Server to report selected channel.
Definition: ChannelController.h:123
void onSkipChannels(SkipChannelsCallback cb)
Set callback function for skipChannels request.
Definition: ChannelController.h:109
std::function< bool(const String &, int, String &)> ChangeChannelNumberCallback
Callback definition for onChangeChannelNumber function.
Definition: ChannelController.h:44
void onChangeChannelNumber(ChangeChannelNumberCallback cb)
Set callback function for changeChannel request.
Definition: ChannelController.h:97