mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-17 21:43:45 +02:00
Implement UpdateAPWiFiPayload command
This commit is contained in:
@@ -31,9 +31,9 @@ struct deleteNetworkPayload : BasePayload
|
||||
// implement
|
||||
struct UpdateAPWiFiPayload : BasePayload
|
||||
{
|
||||
std::string ssid;
|
||||
std::string password;
|
||||
uint8_t channel;
|
||||
std::optional<std::string> ssid;
|
||||
std::optional<std::string> password;
|
||||
std::optional<uint8_t> channel;
|
||||
};
|
||||
|
||||
struct MDNSPayload : public BasePayload
|
||||
|
||||
@@ -176,7 +176,23 @@ std::optional<UpdateAPWiFiPayload> updateAPWiFiCommand::parsePayload(std::string
|
||||
UpdateAPWiFiPayload payload;
|
||||
cJSON *parsedJson = cJSON_Parse(jsonPayload.data());
|
||||
|
||||
// todo implement parsing
|
||||
if (parsedJson == nullptr)
|
||||
{
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
cJSON *ssidObject = cJSON_GetObjectItem(parsedJson, "ssid");
|
||||
cJSON *passwordObject = cJSON_GetObjectItem(parsedJson, "password");
|
||||
cJSON *channelObject = cJSON_GetObjectItem(parsedJson, "channel");
|
||||
|
||||
if (ssidObject != nullptr)
|
||||
payload.ssid = std::string(ssidObject->valuestring);
|
||||
|
||||
if (passwordObject != nullptr)
|
||||
payload.password = std::string(passwordObject->valuestring);
|
||||
|
||||
if (channelObject != nullptr)
|
||||
payload.channel = channelObject->valueint;
|
||||
|
||||
cJSON_Delete(parsedJson);
|
||||
return payload;
|
||||
@@ -185,6 +201,17 @@ std::optional<UpdateAPWiFiPayload> updateAPWiFiCommand::parsePayload(std::string
|
||||
CommandResult updateAPWiFiCommand::execute(std::string_view jsonPayload)
|
||||
{
|
||||
auto payload = parsePayload(jsonPayload);
|
||||
// todo implement updating
|
||||
|
||||
if (!payload.has_value())
|
||||
return CommandResult::getErrorResult("Invalid payload");
|
||||
|
||||
auto updatedConfig = payload.value();
|
||||
auto previousAPConfig = projectConfig->getAPWifiConfig();
|
||||
|
||||
projectConfig->setAPWifiConfig(
|
||||
updatedConfig.ssid.has_value() ? updatedConfig.ssid.value() : previousAPConfig.ssid,
|
||||
updatedConfig.password.has_value() ? updatedConfig.password.value() : previousAPConfig.password,
|
||||
updatedConfig.channel.has_value() ? updatedConfig.channel.value() : previousAPConfig.channel);
|
||||
|
||||
return CommandResult::getSuccessResult("Config updated");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user