3 #include "../SinricProRequest.h"
4 #include "../EventLimiter.h"
5 #include "../SinricProStrings.h"
7 #include "../SinricProNamespace.h"
8 namespace SINRICPRO_NAMESPACE {
10 FSTR(PERCENTAGE, setPercentage);
11 FSTR(PERCENTAGE, percentage);
12 FSTR(PERCENTAGE, adjustPercentage);
59 bool sendSetPercentageEvent(
int percentage, String cause = FSTR_SINRICPRO_PHYSICAL_INTERACTION);
62 bool handlePercentageController(SinricProRequest &request);
65 EventLimiter event_limiter;
72 : event_limiter(EVENT_LIMIT_STATE) {
73 T* device =
static_cast<T*
>(
this);
106 template <
typename T>
108 if (event_limiter)
return false;
109 T* device =
static_cast<T*
>(
this);
111 JsonDocument eventMessage = device->prepareEvent(FSTR_PERCENTAGE_setPercentage, cause.c_str());
112 JsonObject event_value = eventMessage[FSTR_SINRICPRO_payload][FSTR_SINRICPRO_value];
113 event_value[FSTR_PERCENTAGE_percentage] = percentage;
114 return device->sendEvent(eventMessage);
117 template <
typename T>
119 T* device =
static_cast<T*
>(
this);
121 bool success =
false;
123 if (percentageCallback && request.action == FSTR_PERCENTAGE_setPercentage) {
124 int percentage = request.request_value[FSTR_PERCENTAGE_percentage];
125 success = percentageCallback(device->deviceId, percentage);
126 request.response_value[FSTR_PERCENTAGE_percentage] = percentage;
130 if (adjustPercentageCallback && request.action == FSTR_PERCENTAGE_adjustPercentage) {
131 int percentage = request.request_value[FSTR_PERCENTAGE_percentage];
132 success = adjustPercentageCallback(device->deviceId, percentage);
133 request.response_value[FSTR_PERCENTAGE_percentage] = percentage;
141 template <
typename T>
142 using PercentageController = SINRICPRO_NAMESPACE::PercentageController<T>;
PercentageController.
Definition: PercentageController.h:52
void onAdjustPercentage(AdjustPercentageCallback cb)
Set callback function for adjustPercentage request.
Definition: PercentageController.h:95
bool sendSetPercentageEvent(int percentage, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setPercentage event to SinricPro Server indicating actual percentage has changed.
Definition: PercentageController.h:107
void onSetPercentage(SetPercentageCallback cb)
Set callback function for setPercentage request.
Definition: PercentageController.h:85
std::function< bool(const String &, int &)> AdjustPercentageCallback
Callback definition for onAdjustPercentage function.
Definition: PercentageController.h:44
std::function< bool(const String &, int &)> SetPercentageCallback
Callback definition for onSetPercentage function.
Definition: PercentageController.h:29