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