mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-18 22:13:45 +02:00
Fix compilation issues, change ProjectConfig into a shared_ptr with updated definitions
// todo implement the API and missing features
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user