SinricPro Library
Loading...
Searching...
No Matches
PowerStateController.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(POWERSTATE, state); // "state"
11FSTR(POWERSTATE, On); // "On"
12FSTR(POWERSTATE, Off); // "Off"
13FSTR(POWERSTATE, setPowerState); // "setPowerState"
14
28using PowerStateCallback = std::function<bool(const String &, bool &)>;
29
30
35template <typename T>
37 public:
39
42
43 protected:
44 bool handlePowerStateController(SinricProRequest &request);
45
46 private:
47 EventLimiter event_limiter;
48 PowerStateCallback powerStateCallback;
49};
50
51template <typename T>
53: event_limiter(EVENT_LIMIT_STATE) {
54 T* device = static_cast<T*>(this);
55 device->registerRequestHandler(std::bind(&PowerStateController<T>::handlePowerStateController, this, std::placeholders::_1));
56}
57
65template <typename T>
69
79template <typename T>
89
90template <typename T>
92 T* device = static_cast<T*>(this);
93
94 bool success = false;
95
96 if (request.action == FSTR_POWERSTATE_setPowerState && powerStateCallback) {
97 bool powerState = request.request_value[FSTR_POWERSTATE_state] == FSTR_POWERSTATE_On ? true : false;
98 success = powerStateCallback(device->deviceId, powerState);
100 return success;
101 }
102 return success;
103}
104
105} // SINRICPRO_NAMESPACE
106
107template <typename T>
108using PowerStateController = SINRICPRO_NAMESPACE::PowerStateController<T>;
AirQuality.
Definition AirQualitySensor.h:19
PowerStateController.
Definition PowerStateController.h:36
void onPowerState(PowerStateCallback cb)
Set callback function for powerState request.
Definition PowerStateController.h:66
bool sendPowerStateEvent(bool state, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send setPowerState event to SinricPro Server indicating actual power state.
Definition PowerStateController.h:80
std::function< bool(const String &, bool &)> PowerStateCallback
Callback definition for onPowerState function.
Definition PowerStateController.h:28