SinricPro Library
Loading...
Searching...
No Matches
MuteController.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(MUTE, mute); // "mute"
11FSTR(MUTE, setMute); // "setMute"
12
27using MuteCallback = std::function<bool(const String &, bool &)>;
28
29
34template <typename T>
36 public:
38
41 protected:
42 bool handleMuteController(SinricProRequest &request);
43
44 private:
45 EventLimiter event_limiter;
46 MuteCallback muteCallback;
47};
48
49template <typename T>
51:event_limiter(EVENT_LIMIT_STATE) {
52 T* device = static_cast<T*>(this);
53 device->registerRequestHandler(std::bind(&MuteController<T>::handleMuteController, this, std::placeholders::_1));
54}
55
63template <typename T>
65
75template <typename T>
77 if (event_limiter) return false;
78 T* device = static_cast<T*>(this);
79
80 JsonDocument eventMessage = device->prepareEvent(FSTR_MUTE_setMute, cause.c_str());
83 return device->sendEvent(eventMessage);
84}
85
86template <typename T>
88 T* device = static_cast<T*>(this);
89
90 bool success = false;
91
92 if (muteCallback && request.action == FSTR_MUTE_setMute) {
93 bool mute = request.request_value[FSTR_MUTE_mute];
94 success = muteCallback(device->deviceId, mute);
95 request.response_value[FSTR_MUTE_mute] = mute;
96 return success;
97 }
98 return success;
99}
100
101} // SINRICPRO_NAMESPACE
102
103template <typename T>
104using MuteController = SINRICPRO_NAMESPACE::MuteController<T>;
AirQuality.
Definition AirQualitySensor.h:19
MuteController.
Definition MuteController.h:35
bool sendMuteEvent(bool mute, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setMute event to SinricPro Server indicating actual mute state.
Definition MuteController.h:76
void onMute(MuteCallback cb)
Set callback function for setMute request.
Definition MuteController.h:64
std::function< bool(const String &, bool &)> MuteCallback
Callback definition for onMute function.
Definition MuteController.h:27