Fix compilation issues, change ProjectConfig into a shared_ptr with updated definitions

// todo implement the API and missing features
This commit is contained in:
Lorow
2024-11-23 21:00:05 +01:00
parent 60e2e7cc36
commit 6b603f5574
13 changed files with 61 additions and 50 deletions

View File

@@ -1,5 +1,13 @@
#include "CommandManager.hpp"
std::unordered_map<std::string, CommandType> commandTypeMap = {
{"ping", CommandType::PING},
{"set_wifi", CommandType::SET_WIFI},
{"update_wifi", CommandType::UPDATE_WIFI},
{"delete_network", CommandType::DELETE_NETWORK},
{"save_config", CommandType::SAVE_CONFIG},
};
std::unique_ptr<Command> CommandManager::createCommand(CommandType type)
{
switch (type)

View File

@@ -27,20 +27,13 @@ enum CommandType
RESTART_DEVICE,
};
std::unordered_map<std::string, CommandType> commandTypeMap = {
{"ping", CommandType::PING},
{"set_wifi", CommandType::SET_WIFI},
{"update_wifi", CommandType::UPDATE_WIFI},
{"delete_network", CommandType::DELETE_NETWORK},
{"save_config", CommandType::SAVE_CONFIG},
};
class CommandManager
{
ProjectConfig &projectConfig;
private:
std::shared_ptr<ProjectConfig> projectConfig;
public:
CommandManager(ProjectConfig &projectConfig) : projectConfig(projectConfig) {};
CommandManager(std::shared_ptr<ProjectConfig> projectConfig) : projectConfig(projectConfig) {};
std::unique_ptr<Command> createCommand(CommandType type);
CommandResult executeFromJson(std::string *json);

View File

@@ -60,7 +60,7 @@ CommandResult setWiFiCommand::execute(std::string &jsonPayload)
return CommandResult::getErrorResult("Invalid payload");
}
auto wifiConfig = payload.value();
projectConfig.setWifiConfig(
projectConfig->setWifiConfig(
wifiConfig.networkName,
wifiConfig.ssid,
wifiConfig.password,
@@ -98,7 +98,7 @@ CommandResult deleteWifiCommand::execute(std::string &jsonPayload)
if (!payload.has_value())
return CommandResult::getErrorResult("Invalid payload");
projectConfig.deleteWifiConfig(payload.value().networkName, false);
projectConfig->deleteWifiConfig(payload.value().networkName, false);
return CommandResult::getSuccessResult("Config updated");
}
@@ -153,7 +153,7 @@ CommandResult updateWifiCommand::execute(std::string &jsonPayload)
}
auto updatedConfig = payload.value();
auto storedNetworks = projectConfig.getWifiConfigs();
auto storedNetworks = projectConfig->getWifiConfigs();
if (auto networkToUpdate = std::find_if(
storedNetworks.begin(),
storedNetworks.end(),
@@ -161,7 +161,7 @@ CommandResult updateWifiCommand::execute(std::string &jsonPayload)
{ return network.name == updatedConfig.networkName; });
networkToUpdate != storedNetworks.end())
{
projectConfig.setWifiConfig(
projectConfig->setWifiConfig(
updatedConfig.networkName,
updatedConfig.ssid.has_value() ? updatedConfig.ssid.value() : networkToUpdate->ssid,
updatedConfig.password.has_value() ? updatedConfig.password.value() : networkToUpdate->password,
@@ -217,7 +217,7 @@ CommandResult setMDNSCommand::execute(std::string &jsonPayload)
if (!payload.has_value())
return CommandResult::getErrorResult("Invalid payload");
projectConfig.setMDNSConfig(payload.value().hostname, false);
projectConfig->setMDNSConfig(payload.value().hostname, true);
return CommandResult::getSuccessResult("Config updated");
}
@@ -260,8 +260,8 @@ CommandResult updateCameraCommand::execute(std::string &jsonPayload)
}
auto updatedConfig = payload.value();
auto oldConfig = projectConfig.getCameraConfig();
this->projectConfig.setCameraConfig(
auto oldConfig = projectConfig->getCameraConfig();
this->projectConfig->setCameraConfig(
updatedConfig.vflip.has_value() ? updatedConfig.vflip.value() : oldConfig.vflip,
updatedConfig.framesize.has_value() ? updatedConfig.framesize.value() : oldConfig.framesize,
updatedConfig.href.has_value() ? updatedConfig.href.value() : oldConfig.href,
@@ -274,6 +274,6 @@ CommandResult updateCameraCommand::execute(std::string &jsonPayload)
CommandResult saveConfigCommand::execute(std::string &jsonPayload)
{
projectConfig.save();
projectConfig->save();
return CommandResult::getSuccessResult("Config saved");
}

View File

@@ -24,60 +24,60 @@ public:
class setWiFiCommand : public Command
{
ProjectConfig &projectConfig;
std::shared_ptr<ProjectConfig> projectConfig;
public:
setWiFiCommand(ProjectConfig &projectConfig) : projectConfig(projectConfig) {};
setWiFiCommand(std::shared_ptr<ProjectConfig> projectConfig) : projectConfig(projectConfig) {};
CommandResult execute(std::string &jsonPayload) override;
std::optional<WifiPayload> parsePayload(std::string &jsonPayload);
};
class deleteWifiCommand : public Command
{
ProjectConfig &projectConfig;
std::shared_ptr<ProjectConfig> projectConfig;
public:
deleteWifiCommand(ProjectConfig &projectConfig) : projectConfig(projectConfig) {};
deleteWifiCommand(std::shared_ptr<ProjectConfig> projectConfig) : projectConfig(projectConfig) {};
CommandResult execute(std::string &jsonPayload) override;
std::optional<deleteNetworkPayload> parsePayload(std::string &jsonPayload);
};
class updateWifiCommand : public Command
{
ProjectConfig &projectConfig;
std::shared_ptr<ProjectConfig> projectConfig;
public:
updateWifiCommand(ProjectConfig &projectConfig) : projectConfig(projectConfig) {};
updateWifiCommand(std::shared_ptr<ProjectConfig> projectConfig) : projectConfig(projectConfig) {};
CommandResult execute(std::string &jsonPayload) override;
std::optional<UpdateWifiPayload> parsePayload(std::string &jsonPayload);
};
class updateAPWiFiCommand : public Command
{
ProjectConfig &projectConfig;
std::shared_ptr<ProjectConfig> projectConfig;
public:
updateAPWiFiCommand(ProjectConfig &projectConfig) : projectConfig(projectConfig) {};
updateAPWiFiCommand(std::shared_ptr<ProjectConfig> projectConfig) : projectConfig(projectConfig) {};
CommandResult execute(std::string &jsonPayload) override;
std::optional<UpdateAPWiFiPayload> parsePayload(std::string &jsonPayload);
};
class setMDNSCommand : public Command
{
ProjectConfig &projectConfig;
std::shared_ptr<ProjectConfig> projectConfig;
public:
setMDNSCommand(ProjectConfig &projectConfig) : projectConfig(projectConfig) {};
setMDNSCommand(std::shared_ptr<ProjectConfig> projectConfig) : projectConfig(projectConfig) {};
CommandResult execute(std::string &jsonPayload) override;
std::optional<MDNSPayload> parsePayload(std::string &jsonPayload);
};
class updateCameraCommand : public Command
{
ProjectConfig &projectConfig;
std::shared_ptr<ProjectConfig> projectConfig;
public:
updateCameraCommand(ProjectConfig &projectConfig) : projectConfig(projectConfig) {};
updateCameraCommand(std::shared_ptr<ProjectConfig> projectConfig) : projectConfig(projectConfig) {};
CommandResult execute(std::string &jsonPayload) override;
std::optional<UpdateCameraConfigPayload> parsePayload(std::string &jsonPayload);
};
@@ -85,8 +85,8 @@ public:
class saveConfigCommand : public Command
{
public:
ProjectConfig &projectConfig;
saveConfigCommand(ProjectConfig &projectConfig) : projectConfig(projectConfig) {};
std::shared_ptr<ProjectConfig> projectConfig;
saveConfigCommand(std::shared_ptr<ProjectConfig> projectConfig) : projectConfig(projectConfig) {};
CommandResult execute(std::string &jsonPayload) override;
};