10#include "SinricProRequest.h"
11#include "SinricProStrings.h"
12#include "SinricProNamespace.h"
13#include "SinricProDebug.h"
15namespace SINRICPRO_NAMESPACE {
17FSTR(OTA, otaUpdateAvailable);
23FSTR(OTA, forceUpdate);
24FSTR(SETTINGS, setSetting);
27FSTR(INSIGHTS, health);
28FSTR(INSIGHTS, report);
30using OTAUpdateCallbackHandler = std::function<bool(
const String& url,
int major,
int minor,
int patch,
bool forceUpdate)>;
34class SinricProModuleCommandHandler {
36 SinricProModuleCommandHandler();
37 ~SinricProModuleCommandHandler();
39 bool handleRequest(SinricProRequest &request);
40 void onOTAUpdate(OTAUpdateCallbackHandler callback);
41 void onSetSetting(SetSettingCallbackHandler callback);
42 void onReportHealth(ReportHealthCallbackHandler callback);
50SinricProModuleCommandHandler::SinricProModuleCommandHandler()
51 : _otaUpdateCallbackHandler(nullptr),
52 _setSettingCallbackHandler(nullptr),
53 _reportHealthCallbackHandler(nullptr) {}
55SinricProModuleCommandHandler::~SinricProModuleCommandHandler() {}
57void SinricProModuleCommandHandler::onOTAUpdate(OTAUpdateCallbackHandler callback) {
58 _otaUpdateCallbackHandler = callback;
61void SinricProModuleCommandHandler::onSetSetting(SetSettingCallbackHandler callback) {
62 _setSettingCallbackHandler = callback;
65void SinricProModuleCommandHandler::onReportHealth(ReportHealthCallbackHandler callback) {
66 _reportHealthCallbackHandler = callback;
69bool SinricProModuleCommandHandler::handleRequest(SinricProRequest &request) {
70 if (strcmp(FSTR_OTA_otaUpdateAvailable, request.action.c_str()) == 0 && _otaUpdateCallbackHandler) {
71 String url = request.request_value[FSTR_OTA_url];
72 int major = request.request_value[FSTR_OTA_version][FSTR_OTA_major];
73 int minor = request.request_value[FSTR_OTA_version][FSTR_OTA_minor];
74 int patch = request.request_value[FSTR_OTA_version][FSTR_OTA_patch];
75 bool forceUpdate = request.request_value[FSTR_OTA_version][FSTR_OTA_forceUpdate] |
false;
76 return _otaUpdateCallbackHandler(url, major, minor, patch, forceUpdate);
78 else if (strcmp(FSTR_SETTINGS_setSetting, request.action.c_str()) == 0 && _setSettingCallbackHandler) {
79 String
id = request.request_value[FSTR_SETTINGS_id];
80 String value = request.request_value[FSTR_SETTINGS_value];
81 return _setSettingCallbackHandler(
id, value);
83 else if (strcmp(FSTR_INSIGHTS_health, request.action.c_str()) == 0 && _reportHealthCallbackHandler) {
84 String healthReport =
"";
85 bool success = _reportHealthCallbackHandler(healthReport);
87 request.response_value[FSTR_INSIGHTS_report] = healthReport;
92 DEBUG_SINRIC(
"[SinricProModuleCommandHandler:handleRequest]: action: %s not supported!\r\n", request.action.c_str());
std::function< bool(const String &url, int major, int minor, int patch, bool enforce)> OTAUpdateCallbackHandler
Function signature for OTA update callback.
Definition SinricPro.h:54
std::function< bool(String &healthReport)> ReportHealthCallbackHandler
Defines a function type for reporting device health status.
Definition SinricPro.h:80
std::function< bool(const String &id, const String &value)> SetSettingCallbackHandler
Function signature for setting a module setting.
Definition SinricPro.h:65