3#include "../SinricProRequest.h"
4#include "../EventLimiter.h"
5#include "../SinricProStrings.h"
7#include "../SinricProNamespace.h"
8namespace SINRICPRO_NAMESPACE {
10FSTR(CHANNEL, changeChannel);
11FSTR(CHANNEL, channel);
14FSTR(CHANNEL, skipChannels);
15FSTR(CHANNEL, channelCount);
80 bool handleChannelController(SinricProRequest &
request);
83 EventLimiter event_limiter;
91: event_limiter(EVENT_LIMIT_STATE) {
92 T*
device =
static_cast<T*
>(
this);
105 changeChannelCallback =
cb;
117 changeChannelNumberCallback =
cb;
129 skipChannelsCallback =
cb;
143 if (event_limiter)
return false;
144 T*
device =
static_cast<T*
>(
this);
154 T*
device =
static_cast<T*
>(
this);
166 if (changeChannelNumberCallback && request.request_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_number].is<String>()) {
167 String channelName(
"");
168 int channelNumber = request.request_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_number];
169 success = changeChannelNumberCallback(device->deviceId, channelNumber, channelName);
170 request.response_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] = channelName;
175 if (skipChannelsCallback && request.action == FSTR_CHANNEL_skipChannels) {
177 int channelCount = request.request_value[FSTR_CHANNEL_channelCount] | 0;
178 success = skipChannelsCallback(device->deviceId, channelCount, channelName);
179 request.response_value[FSTR_CHANNEL_channel][FSTR_CHANNEL_name] = channelName;
189using ChannelController = SINRICPRO_NAMESPACE::ChannelController<T>;
AirQuality.
Definition AirQualitySensor.h:19
ChannelController.
Definition ChannelController.h:70
void onChangeChannel(ChangeChannelCallback cb)
Set callback function for changeChannel request.
Definition ChannelController.h:104
void onSkipChannels(SkipChannelsCallback cb)
Set callback function for skipChannels request.
Definition ChannelController.h:128
void onChangeChannelNumber(ChangeChannelNumberCallback cb)
Set callback function for changeChannel request.
Definition ChannelController.h:116
bool sendChangeChannelEvent(String channelName, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send changeChannel event to SinricPro Server to report selected channel.
Definition ChannelController.h:142
std::function< bool(const String &, int, String &)> SkipChannelsCallback
Callback definition for onSkipChannels function.
Definition ChannelController.h:63
std::function< bool(const String &, String &)> ChangeChannelCallback
Callback definition for onChangeChannel function.
Definition ChannelController.h:31
std::function< bool(const String &, int, String &)> ChangeChannelNumberCallback
Callback definition for onChangeChannelNumber function.
Definition ChannelController.h:47