#pragma once #define DEBUGLOG_DEFAULT_LOG_LEVEL_INFO #include #include #include #include #include #include namespace commands { static const std::map c_hpLimitsMap = {{"P1", RO::P1}, {"P2", RO::P2}, {"P3", RO::P3}, {"P4", RO::P4}, {"UNLIMITED", RO::RO_MAX}}; static const std::map c_heatingValveMap = {{"pump", RO::PUMP_HT}, {"first", RO::FST_FLOOR}, {"ground", RO::GND_FLOOR}}; static const std::map c_irrigationValveMap = {{"ricircolo", RO::RETURN}, {"zone1", RO::ZONE1}, {"zone2", RO::ZONE2}, {"zone3", RO::ZONE3}, {"rubinetti", RO::DRIP}}; static std::map> c_irrigationTimerMap = {{"ricircolo", {"ricircolo", NULL}}, {"zone1", {"zone1", NULL}}, {"zone2", {"zone2", NULL}}, {"zone3", {"zone3", NULL}}, {"rubinetti", {"rubinetti", NULL}}}; static TimerHandle_t s_irrigationPumpTimer = NULL; static bool s_rainOverride = false; // define command callback type using Command = std::function; class Commands { Commands() = delete; public: // TEST // static const ArduinoJson::JsonDocument setBuzz(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); // CONFIG // static const ArduinoJson::JsonDocument setConfig(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getConfig(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); // CRONJOBS // static const ArduinoJson::JsonDocument loadCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument addCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument delCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument storeCronJob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); // SETTERS // static const ArduinoJson::JsonDocument resetHPcounters(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setHPlimit(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setHeating(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setIrrigation(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setRainOverride(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument setTimeNTP(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); // GETTERS // static const ArduinoJson::JsonDocument getHPpower(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getInputStatus(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getOutputStatus(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getTemperatures(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getWaterInfo(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getTankInfo(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getRainInfo(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getIrrigation(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getRainOverride(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); static const ArduinoJson::JsonDocument getTimeDrift(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms); }; static const std::map s_commandMap = { // TEST {"setBuzz", Commands::setBuzz}, // CONFIG {"setConfig", Commands::setConfig}, {"getConfig", Commands::getConfig}, // CRONJOBS {"loadCronJob", Commands::loadCronJob}, {"addCronJob", Commands::addCronJob}, {"setCronJob", Commands::setCronJob}, {"getCronJob", Commands::getCronJob}, {"delCronJob", Commands::delCronJob}, {"storeCronJob", Commands::storeCronJob}, // SETTERS {"resetHPcounters", Commands::resetHPcounters}, {"setHPlimit", Commands::setHPlimit}, {"setHeating", Commands::setHeating}, {"setIrrigation", Commands::setIrrigation}, {"setRainOverride", Commands::setRainOverride}, // GETTERS {"getHPpower", Commands::getHPpower}, {"getRainInfo", Commands::getRainInfo}, {"getInputStatus", Commands::getInputStatus}, {"getOutputStatus", Commands::getOutputStatus}, {"getRainOverride", Commands::getRainOverride}, // NTP and Time {"getTimeDrift", Commands::getTimeDrift}, {"setTimeNTP", Commands::setTimeNTP}, }; }