3#include "../SinricProRequest.h"
4#include "../EventLimiter.h"
5#include "../SinricProStrings.h"
6#include "../SinricProNamespace.h"
11enum class SmartButtonPressType {
17namespace SINRICPRO_NAMESPACE {
19FSTR(BUTTONSTATE, state);
20FSTR(BUTTONSTATE, singlePress);
21FSTR(BUTTONSTATE, doublePress);
22FSTR(BUTTONSTATE, longPress);
23FSTR(BUTTONSTATE, setSmartButtonState);
26using SmartButtonPressCallback = std::function<bool(
const String&, SmartButtonPressType)>;
46 void onButtonPress(SmartButtonPressCallback
cb);
54 bool handleSmartButtonStateController(SinricProRequest &
request);
57 SmartButtonPressCallback buttonPressCallback;
64 SmartButtonPressType getSmartButtonPressType(
const String&
stateStr);
69 T*
device =
static_cast<T*
>(
this);
70 device->registerRequestHandler(
73 std::placeholders::_1)
79 buttonPressCallback =
cb;
85 return SmartButtonPressType::SINGLE_PRESS;
86 }
else if (stateStr == FSTR_BUTTONSTATE_doublePress) {
87 return SmartButtonPressType::DOUBLE_PRESS;
89 return SmartButtonPressType::LONG_PRESS;
100 T*
device =
static_cast<T*
>(
this);
117using SmartButtonStateController = SINRICPRO_NAMESPACE::SmartButtonStateController<T>;
AirQuality.
Definition AirQualitySensor.h:19