mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-19 06:23:44 +02:00
Make bssid optional in payload for backwards compatibility, add tests,
This commit is contained in:
@@ -1,8 +1,33 @@
|
||||
#include "CommandSchema.hpp"
|
||||
|
||||
void to_json(nlohmann::json& j, const WifiPayload& payload)
|
||||
{
|
||||
j = nlohmann::json{
|
||||
{"name", payload.name}, {"ssid", payload.ssid}, {"bssid", payload.bssid},
|
||||
{"password", payload.password}, {"channel", payload.channel}, {"power", payload.power},
|
||||
};
|
||||
}
|
||||
|
||||
void from_json(const nlohmann::json& j, WifiPayload& payload)
|
||||
{
|
||||
payload.name = j.at("name").get<std::string>();
|
||||
payload.ssid = j.at("ssid").get<std::string>();
|
||||
payload.password = j.at("password").get<std::string>();
|
||||
payload.channel = j.at("channel").get<uint8_t>();
|
||||
payload.power = j.at("power").get<uint8_t>();
|
||||
|
||||
if (j.contains("bssid"))
|
||||
{
|
||||
payload.bssid = j.at("bssid").get<std::string>();
|
||||
}
|
||||
}
|
||||
|
||||
void to_json(nlohmann::json& j, const UpdateWifiPayload& payload)
|
||||
{
|
||||
j = nlohmann::json{{"name", payload.name}, {"ssid", payload.ssid}, {"password", payload.password}, {"channel", payload.channel}, {"power", payload.power}};
|
||||
j = nlohmann::json{
|
||||
{"name", payload.name}, {"ssid", payload.ssid}, {"bssid", payload.bssid},
|
||||
{"password", payload.password}, {"channel", payload.channel}, {"power", payload.power},
|
||||
};
|
||||
}
|
||||
|
||||
void from_json(const nlohmann::json& j, UpdateWifiPayload& payload)
|
||||
@@ -15,7 +40,7 @@ void from_json(const nlohmann::json& j, UpdateWifiPayload& payload)
|
||||
|
||||
if (j.contains("bssid"))
|
||||
{
|
||||
payload.ssid = j.at("bssid").get<std::string>();
|
||||
payload.bssid = j.at("bssid").get<std::string>();
|
||||
}
|
||||
|
||||
if (j.contains("password"))
|
||||
@@ -59,7 +84,8 @@ void from_json(const nlohmann::json& j, UpdateAPWiFiPayload& payload)
|
||||
void to_json(nlohmann::json& j, const UpdateCameraConfigPayload& payload)
|
||||
{
|
||||
j = nlohmann::json{
|
||||
{"vflip", payload.vflip}, {"href", payload.href}, {"framesize", payload.framesize}, {"quality", payload.quality}, {"brightness", payload.brightness}};
|
||||
{"vflip", payload.vflip}, {"href", payload.href}, {"framesize", payload.framesize}, {"quality", payload.quality}, {"brightness", payload.brightness},
|
||||
};
|
||||
}
|
||||
|
||||
void from_json(const nlohmann::json& j, UpdateCameraConfigPayload& payload)
|
||||
|
||||
@@ -10,13 +10,14 @@ struct WifiPayload : BasePayload
|
||||
{
|
||||
std::string name;
|
||||
std::string ssid;
|
||||
std::string bssid;
|
||||
std::optional<std::string> bssid;
|
||||
std::string password;
|
||||
uint8_t channel;
|
||||
uint8_t power;
|
||||
};
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(WifiPayload, name, ssid, bssid, password, channel, power)
|
||||
void to_json(nlohmann::json& j, const WifiPayload& payload);
|
||||
void from_json(const nlohmann::json& j, WifiPayload& payload);
|
||||
|
||||
struct UpdateWifiPayload : BasePayload
|
||||
{
|
||||
|
||||
@@ -19,14 +19,16 @@ CommandResult setWiFiCommand(std::shared_ptr<DependencyRegistry> registry, const
|
||||
return CommandResult::getErrorResult("Invalid payload: missing SSID");
|
||||
}
|
||||
|
||||
auto bssid_len = payload.bssid.length();
|
||||
if (bssid_len > 0 && bssid_len != 11)
|
||||
// format is XX:XX:XX:XX:XX:XX
|
||||
const std::string bssid = payload.bssid.has_value() ? payload.bssid.value() : "";
|
||||
const auto bssid_len = bssid.length();
|
||||
if (bssid_len > 0 && bssid_len != 17)
|
||||
{
|
||||
return CommandResult::getErrorResult("BSSID is malformed");
|
||||
}
|
||||
|
||||
std::shared_ptr<ProjectConfig> projectConfig = registry->resolve<ProjectConfig>(DependencyType::project_config);
|
||||
projectConfig->setWifiConfig(payload.name, payload.ssid, payload.bssid, payload.password, payload.channel, payload.power);
|
||||
projectConfig->setWifiConfig(payload.name, payload.ssid, bssid, payload.password, payload.channel, payload.power);
|
||||
|
||||
return CommandResult::getSuccessResult("Config updated");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user