SinricPro Library
Loading...
Searching...
No Matches
MediaController.h
1#pragma once
2
3#include "../SinricProRequest.h"
4#include "../EventLimiter.h"
5#include "../SinricProStrings.h"
6
7#include "../SinricProNamespace.h"
8namespace SINRICPRO_NAMESPACE {
9
10FSTR(MEDIA, mediaControl); // "mediaControl"
11FSTR(MEDIA, control); // "control"
12
27using MediaControlCallback = std::function<bool(const String &, String &)>;
28
29
34template <typename T>
36 public:
38
41
42 protected:
43 bool handleMediaController(SinricProRequest &request);
44
45 private:
46 EventLimiter event_limiter;
47 MediaControlCallback mediaControlCallback;
48};
49
50template <typename T>
52: event_limiter(EVENT_LIMIT_STATE) {
53 T* device = static_cast<T*>(this);
54 device->registerRequestHandler(std::bind(&MediaController<T>::handleMediaController, this, std::placeholders::_1));
55}
56
64template <typename T>
66 mediaControlCallback = cb;
67}
68
78template <typename T>
80 if (event_limiter) return false;
81 T* device = static_cast<T*>(this);
82
86 return device->sendEvent(eventMessage);
87}
88
89template <typename T>
91 T* device = static_cast<T*>(this);
92
93 bool success = false;
94
95 if (mediaControlCallback && request.action == FSTR_MEDIA_mediaControl) {
96 String mediaControl = request.request_value[FSTR_MEDIA_control];
97 success = mediaControlCallback(device->deviceId, mediaControl);
98 request.response_value[FSTR_MEDIA_control] = mediaControl;
99 return success;
100 }
101
102 return success;
103}
104
105} // SINRICPRO_NAMESPACE
106
107template <typename T>
108using MediaController = SINRICPRO_NAMESPACE::MediaController<T>;
AirQuality.
Definition AirQualitySensor.h:19
MediaController.
Definition MediaController.h:35
bool sendMediaControlEvent(String mediaControl, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send mediaControl event to SinricPro Server indicating devices media control state.
Definition MediaController.h:79
void onMediaControl(MediaControlCallback cb)
Set callback function for mediaControl request.
Definition MediaController.h:65
std::function< bool(const String &, String &)> MediaControlCallback
Callback definition for onMediaControl function.
Definition MediaController.h:27