string conversion utility in rtc driver
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
#include <commands.h>
|
||||
#include <cronjobs.h>
|
||||
|
||||
namespace commands
|
||||
{
|
||||
@@ -53,19 +54,72 @@ namespace commands
|
||||
const ArduinoJson::JsonDocument Commands::setCronjob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
{
|
||||
ArduinoJson::JsonDocument response;
|
||||
LOG_WARN("setCronjob not yet implemented");
|
||||
response["cmd"] = "setCronjob";
|
||||
|
||||
const auto &jobName = params["name"].as<std::string>();
|
||||
const auto &timeStr = params["timeStr"].as<std::string>();
|
||||
const auto &actionStr = params["action"].as<std::string>();
|
||||
|
||||
ArduinoJson::JsonDocument action;
|
||||
if (ArduinoJson::deserializeJson(action, actionStr) != ArduinoJson::DeserializationError::Ok)
|
||||
{
|
||||
LOG_ERROR("setCronJob unable to deserialize cron job [", actionStr.c_str(), "]");
|
||||
response["value"]["status"] = "invalid";
|
||||
return response;
|
||||
}
|
||||
|
||||
auto &cron = Cron::getInstance(dev);
|
||||
if (!cron.addEvent(jobName, timeStr, action))
|
||||
{
|
||||
LOG_ERROR("setCronJob unable to add job [", actionStr.c_str(), "]");
|
||||
response["value"]["status"] = "invalid";
|
||||
return response;
|
||||
}
|
||||
LOG_INFO("setCronJob added job [", actionStr.c_str(), "]");
|
||||
response["value"]["status"] = "valid";
|
||||
return response;
|
||||
}
|
||||
const ArduinoJson::JsonDocument Commands::getCronjob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
{
|
||||
ArduinoJson::JsonDocument response;
|
||||
LOG_WARN("getCronjob not yet implemented");
|
||||
response["cmd"] = "getCronjob";
|
||||
auto &cron = Cron::getInstance(dev);
|
||||
auto eventName = params["name"].as<std::string>();
|
||||
Cron::CronEvent event;
|
||||
if (eventName.empty() || !cron.getEvent(eventName, event))
|
||||
{
|
||||
LOG_ERROR("delCronjob failed to get job [", eventName.c_str(), "]");
|
||||
response["values"]["status"] = "invalid";
|
||||
return response;
|
||||
}
|
||||
|
||||
auto cmd = std::get<0>(event);
|
||||
auto chronExpr = std::get<1>(event);
|
||||
auto cmdParams = std::get<3>(event);
|
||||
|
||||
ArduinoJson::JsonDocument action;
|
||||
action["cmd"] = cmd;
|
||||
action["params"] = cmdParams;
|
||||
response["values"]["name"] = eventName;
|
||||
response["values"]["timeStr"] = cron::to_cronstr(chronExpr);
|
||||
response["values"]["action"] = action;
|
||||
|
||||
LOG_INFO("getCronjob get job [", eventName.c_str(), "]");
|
||||
return response;
|
||||
}
|
||||
const ArduinoJson::JsonDocument Commands::delCronjob(const devices_t &dev, const ArduinoJson::JsonDocument ¶ms)
|
||||
{
|
||||
ArduinoJson::JsonDocument response;
|
||||
LOG_WARN("delCronjob not yet implemented");
|
||||
response["cmd"] = "delCronjob";
|
||||
auto &cron = Cron::getInstance(dev);
|
||||
auto eventName = params["name"].as<std::string>();
|
||||
if (eventName.empty() || !cron.delEvent(eventName))
|
||||
{
|
||||
LOG_ERROR("delCronjob failed to delete job [", eventName.c_str(), "]");
|
||||
response["values"]["status"] = "invalid";
|
||||
return response;
|
||||
}
|
||||
response["values"]["status"] = "valid";
|
||||
return response;
|
||||
}
|
||||
// CRONJOBS //
|
||||
|
||||
Reference in New Issue
Block a user