3#include "../SinricProRequest.h"
4#include "../SinricProStrings.h"
6#include "../SinricProNamespace.h"
7namespace SINRICPRO_NAMESPACE {
9using SetSettingCallback = std::function<bool(
const String&,
const String&, String&)>;
11FSTR(SETTING, setSetting);
16class SettingController {
19 void onSetSetting(SetSettingCallback cb);
22 bool handleSettingController(SinricProRequest &request);
25 SetSettingCallback setSettingCallback;
29SettingController<T>::SettingController() {
30 T* device =
static_cast<T*
>(
this);
31 device->registerRequestHandler(std::bind(&SettingController<T>::handleSettingController,
this, std::placeholders::_1));
35void SettingController<T>::onSetSetting(SetSettingCallback cb) {
36 setSettingCallback = cb;
40bool SettingController<T>::handleSettingController(SinricProRequest &request) {
41 T* device =
static_cast<T*
>(
this);
45 if (setSettingCallback && request.action == FSTR_SETTING_setSetting) {
46 String settingId = request.request_value[FSTR_SETTING_id] |
"";
47 String settingValue = request.request_value[FSTR_SETTING_value] |
"";
48 success = setSettingCallback(device->deviceId, settingId, settingValue);
49 request.response_value[FSTR_SETTING_id] = settingId;
50 request.response_value[FSTR_SETTING_value] = settingValue;
60using SettingController = SINRICPRO_NAMESPACE::SettingController<T>;