SinricPro Library
Loading...
Searching...
No Matches
InputController.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(INPUT, selectInput); // "selectInput"
11FSTR(INPUT, input); // "input"
12
27using SelectInputCallback = std::function<bool(const String &, String &)>;
28
29
34template <typename T>
36 public:
38
41
42 protected:
43 bool handleInputController(SinricProRequest &request);
44
45 private:
46 EventLimiter event_limiter;
47 SelectInputCallback selectInputCallback;
48};
49
50template <typename T>
52: event_limiter(EVENT_LIMIT_STATE) {
53 T* device = static_cast<T*>(this);
54 device->registerRequestHandler(std::bind(&InputController<T>::handleInputController, this, std::placeholders::_1));
55}
56
64template <typename T>
66 selectInputCallback = cb;
67}
68
78template <typename T>
80 if (event_limiter) return false;
81 T* device = static_cast<T*>(this);
82
86 return device->sendEvent(eventMessage);
87}
88
89template <typename T>
91 T* device = static_cast<T*>(this);
92
93 bool success = false;
94
95 if (selectInputCallback && request.action == FSTR_INPUT_selectInput) {
96 String input = request.request_value[FSTR_INPUT_input];
97 success = selectInputCallback(device->deviceId, input);
98 request.response_value[FSTR_INPUT_input] = input;
99 return success;
100 }
101
102 return success;
103}
104
105} // SINRICPRO_NAMESPACE
106
107template <typename T>
108using InputController = SINRICPRO_NAMESPACE::InputController<T>;
AirQuality.
Definition AirQualitySensor.h:19
InputController.
Definition InputController.h:35
void onSelectInput(SelectInputCallback cb)
Set callback function for selectInput request.
Definition InputController.h:65
bool sendSelectInputEvent(String intput, String cause=FSTR_SINRICPRO_PHYSICAL_INTERACTION)
Send selectInput event to SinricPro Server to report selected input.
Definition InputController.h:79
std::function< bool(const String &, String &)> SelectInputCallback
Callback definition for onSelectInput function.
Definition InputController.h:27