3 #include "../SinricProRequest.h"
4 #include "../EventLimiter.h"
5 #include "../SinricProStrings.h"
7 #include "../SinricProNamespace.h"
8 namespace SINRICPRO_NAMESPACE {
10 FSTR(VOLUME, setVolume);
12 FSTR(VOLUME, adjustVolume);
13 FSTR(VOLUME, volumeDefault);
61 bool sendVolumeEvent(
int volume, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
64 bool handleVolumeController(SinricProRequest &request);
67 EventLimiter event_limiter;
74 : event_limiter(EVENT_LIMIT_STATE) {
75 T* device =
static_cast<T*
>(
this);
108 template <
typename T>
110 if (event_limiter)
return false;
111 T* device =
static_cast<T*
>(
this);
113 JsonDocument eventMessage = device->prepareEvent(FSTR_VOLUME_setVolume, cause.c_str());
114 JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
115 event_value[FSTR_VOLUME_volume] = volume;
116 return device->sendEvent(eventMessage);
119 template <
typename T>
121 T* device =
static_cast<T*
>(
this);
123 bool success =
false;
125 if (volumeCallback && request.action == FSTR_VOLUME_setVolume) {
126 int volume = request.request_value[FSTR_VOLUME_volume];
127 success = volumeCallback(device->deviceId, volume);
128 request.response_value[FSTR_VOLUME_volume] = volume;
132 if (adjustVolumeCallback && request.action == FSTR_VOLUME_adjustVolume) {
133 int volume = request.request_value[FSTR_VOLUME_volume];
134 bool volumeDefault = request.request_value[FSTR_VOLUME_volumeDefault] |
false;
135 success = adjustVolumeCallback(device->deviceId, volume, volumeDefault);
136 request.response_value[FSTR_VOLUME_volume] = volume;
144 template <
typename T>
145 using VolumeController = SINRICPRO_NAMESPACE::VolumeController<T>;
VolumeController.
Definition: VolumeController.h:54
void onAdjustVolume(AdjustVolumeCallback cb)
Set callback function for adjustVolume request.
Definition: VolumeController.h:97
void onSetVolume(SetVolumeCallback cb)
Set callback function for setVolume request.
Definition: VolumeController.h:87
bool sendVolumeEvent(int volume, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setVolume event to SinricPro Server indicating actual volume has changed.
Definition: VolumeController.h:109
std::function< bool(const String &, int &)> SetVolumeCallback
Callback definition for onSetVolume function.
Definition: VolumeController.h:29
std::function< bool(const String &, int &, bool)> AdjustVolumeCallback
Callback definition for onAdjustVolume function.
Definition: VolumeController.h:46