SinricPro Library
ChannelController< T >

ChannelController. More...

Inheritance diagram for ChannelController< T >:

Public Types

using ChangeChannelCallback = std::function< bool(const String &, String &)>
 Callback definition for onChangeChannel function. More...
 
using ChangeChannelNumberCallback = std::function< bool(const String &, int, String &)>
 Callback definition for onChangeChannelNumber function. More...
 
using SkipChannelsCallback = std::function< bool(const String &, int, String &)>
 Callback definition for onSkipChannels function. More...
 

Public Member Functions

void onChangeChannel (ChangeChannelCallback cb)
 Set callback function for changeChannel request. More...
 
void onChangeChannelNumber (ChangeChannelNumberCallback cb)
 Set callback function for changeChannel request. More...
 
void onSkipChannels (SkipChannelsCallback cb)
 Set callback function for skipChannels request. More...
 
bool sendChangeChannelEvent (String channelName, String cause="PHYSICAL_INTERACTION")
 Send changeChannel event to SinricPro Server to report selected channel. More...
 

Detailed Description

template<typename T>
class ChannelController< T >

ChannelController.

Member Typedef Documentation

◆ ChangeChannelCallback

using ChangeChannelCallback = std::function<bool(const String &, String &)>

Callback definition for onChangeChannel function.

Gets called when device receive a changeChannel request by using channel name

Parameters
[in]deviceIdString which contains the ID of device
[in]channelString with channel name device is requested to switch to
[out]channelString with channel name device has switchted to
Returns
the success of the request
Return values
truerequest handled properly
falserequest was not handled properly because of some error

Example-Code

// channelNames used to convert channelNumber into channelName
// please put in your TV channel names
// channel numbers starts counting from 0!
// so "ZDF" is channel 2
const char* channelNames[] = {
"A/V",
"ard",
"ZDF",
"n. d. r.",
"kabel eins",
"VOX",
"Sat.1",
"ProSieben",
"rtl",
"RTL II",
"SUPER RTL",
"KiKA"
};
int tvChannel; // current channel selected
#define MAX_CHANNELS sizeof(channelNames) / sizeof(channelNames[0]) // just to determine how many channels are in channelNames array
// map channelNumbers used to convert channelName into channelNumber
// This map is initialized in "setupChannelNumbers()" function by using the "channelNames" array
std::map<String, unsigned int> channelNumbers;
void setupChannelNumbers() {
for (unsigned int i=0; i < MAX_CHANNELS; i++) {
channelNumbers[channelNames[i]] = i;
}
}
bool onChangeChannel(const String &deviceId, String &channel) {
tvChannel = channelNumbers[channel]; // save new channelNumber in tvChannel variable
Serial.printf("Change channel to \"%s\" (channel number %d)\r\n", channel.c_str(), tvChannel);
return true;
}
void onChangeChannel(ChangeChannelCallback cb)
Set callback function for changeChannel request.
Definition: ChannelController.h:85

◆ ChangeChannelNumberCallback

using ChangeChannelNumberCallback = std::function<bool(const String &, int, String &)>

Callback definition for onChangeChannelNumber function.

Gets called when device receive a changeChannel request by using channel number

Parameters
[in]deviceIdString which contains the ID of device
[in]channelNumberInteger with channel number device is requested to switch to
[out]channelNameString with channel name device has switchted to
Returns
the success of the request
Return values
truerequest handled properly
falserequest was not handled properly because of some error

Example-Code

// channelNames used to convert channelNumber into channelName
// please put in your TV channel names
// channel numbers starts counting from 0!
// so "ZDF" is channel 2
const char* channelNames[] = {
"A/V",
"ard",
"ZDF",
"n. d. r.",
"kabel eins",
"VOX",
"Sat.1",
"ProSieben",
"rtl",
"RTL II",
"SUPER RTL",
"KiKA"
};
int tvChannel; // current channel selected
#define MAX_CHANNELS sizeof(channelNames) / sizeof(channelNames[0]) // just to determine how many channels are in channelNames array
// map channelNumbers used to convert channelName into channelNumber
// This map is initialized in "setupChannelNumbers()" function by using the "channelNames" array
std::map<String, unsigned int> channelNumbers;
void setupChannelNumbers() {
for (unsigned int i=0; i < MAX_CHANNELS; i++) {
channelNumbers[channelNames[i]] = i;
}
}
bool onChangeChannelNumber(const String& deviceId, int channelNumber, String& channelName) {
tvChannel = channelNumber; // update tvChannel to new channel number
if (tvChannel < 0) tvChannel = 0;
if (tvChannel > MAX_CHANNELS-1) tvChannel = MAX_CHANNELS-1;
channelName = channelNames[tvChannel]; // return the channelName
Serial.printf("Change to channel to %d (channel name \"%s\")\r\n", tvChannel, channelName.c_str());
return true;
}
void onChangeChannelNumber(ChangeChannelNumberCallback cb)
Set callback function for changeChannel request.
Definition: ChannelController.h:97

◆ SkipChannelsCallback

using SkipChannelsCallback = std::function<bool(const String &, int, String &)>

Callback definition for onSkipChannels function.

Gets called when device receive a changeChannel request by using channel number

Parameters
[in]deviceIdString which contains the ID of device
[in]channelCountInteger with channels device is requested to skip -n..+n
[out]channelNameString with channel name device has switchted to
Returns
the success of the request
Return values
truerequest handled properly
falserequest was not handled properly because of some error

Example-Code

// channelNames used to convert channelNumber into channelName
// please put in your TV channel names
// channel numbers starts counting from 0!
// so "ZDF" is channel 2
const char* channelNames[] = {
"A/V",
"ard",
"ZDF",
"n. d. r.",
"kabel eins",
"VOX",
"Sat.1",
"ProSieben",
"rtl",
"RTL II",
"SUPER RTL",
"KiKA"
};
int tvChannel; // current channel selected
#define MAX_CHANNELS sizeof(channelNames) / sizeof(channelNames[0]) // just to determine how many channels are in channelNames array
// map channelNumbers used to convert channelName into channelNumber
// This map is initialized in "setupChannelNumbers()" function by using the "channelNames" array
std::map<String, unsigned int> channelNumbers;
void setupChannelNumbers() {
for (unsigned int i=0; i < MAX_CHANNELS; i++) {
channelNumbers[channelNames[i]] = i;
}
}
bool onSkipChannels(const String &deviceId, const int channelCount, String &channelName) {
tvChannel += channelCount; // calculate new channel number
if (tvChannel < 0) tvChannel = 0;
if (tvChannel > MAX_CHANNELS-1) tvChannel = MAX_CHANNELS-1;
channelName = String(channelNames[tvChannel]); // return channel name
Serial.printf("Skip channel: %i (number: %i / name: \"%s\")\r\n", channelCount, tvChannel, channelName.c_str());
return true;
}
void onSkipChannels(SkipChannelsCallback cb)
Set callback function for skipChannels request.
Definition: ChannelController.h:109

Member Function Documentation

◆ onChangeChannel()

void onChangeChannel ( ChangeChannelCallback  cb)

Set callback function for changeChannel request.

Parameters
cbFunction pointer to a ChangeChannelCallback function
Returns
void
See also
ChangeChannelCallback

◆ onChangeChannelNumber()

void onChangeChannelNumber ( ChangeChannelNumberCallback  cb)

Set callback function for changeChannel request.

Parameters
cbFunction pointer to a ChangeChannelNumberCallback function
Returns
void
See also
ChangeChannelNumberCallback

◆ onSkipChannels()

void onSkipChannels ( SkipChannelsCallback  cb)

Set callback function for skipChannels request.

Parameters
cbFunction pointer to a SkipChannelsCallback function
Returns
void
See also
SkipChannelsCallback

◆ sendChangeChannelEvent()

bool sendChangeChannelEvent ( String  channelName,
String  cause = "PHYSICAL_INTERACTION" 
)

Send changeChannel event to SinricPro Server to report selected channel.

Parameters
channelNameString with actual channel
cause(optional) String reason why event is sent (default = "PHYSICAL_INTERACTION")
Returns
the success of sending the even
Return values
trueevent has been sent successfully
falseevent has not been sent, maybe you sent to much events in a short distance of time