mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-26 17:43:44 +02:00
Implement update camera command
This commit is contained in:
@@ -44,15 +44,14 @@ struct MDNSPayload : public BasePayload
|
|||||||
std::string hostname;
|
std::string hostname;
|
||||||
};
|
};
|
||||||
|
|
||||||
// todo implement
|
|
||||||
struct UpdateCameraConfigPayload : BasePayload
|
struct UpdateCameraConfigPayload : BasePayload
|
||||||
{
|
{
|
||||||
uint8_t vflip;
|
std::optional<uint8_t> vflip;
|
||||||
uint8_t href;
|
std::optional<uint8_t> href;
|
||||||
uint8_t framesize;
|
std::optional<uint8_t> framesize;
|
||||||
uint8_t quality;
|
std::optional<uint8_t> quality;
|
||||||
uint8_t brightness;
|
std::optional<uint8_t> brightness;
|
||||||
// todo add more options here
|
// TODO add more options here
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -227,6 +227,26 @@ std::optional<UpdateCameraConfigPayload> updateCameraCommand::parsePayload(std::
|
|||||||
UpdateCameraConfigPayload payload;
|
UpdateCameraConfigPayload payload;
|
||||||
cJSON *parsedJson = cJSON_Parse(jsonPayload.c_str());
|
cJSON *parsedJson = cJSON_Parse(jsonPayload.c_str());
|
||||||
|
|
||||||
|
if (parsedJson == nullptr)
|
||||||
|
return std::nullopt;
|
||||||
|
|
||||||
|
cJSON *vflipObject = cJSON_GetObjectItem(parsedJson, "vflip");
|
||||||
|
cJSON *hrefObject = cJSON_GetObjectItem(parsedJson, "href");
|
||||||
|
cJSON *framesize = cJSON_GetObjectItem(parsedJson, "framesize");
|
||||||
|
cJSON *quality = cJSON_GetObjectItem(parsedJson, "quality");
|
||||||
|
cJSON *brightness = cJSON_GetObjectItem(parsedJson, "brightness");
|
||||||
|
|
||||||
|
if (vflipObject != nullptr)
|
||||||
|
payload.vflip = vflipObject->valueint;
|
||||||
|
if (hrefObject != nullptr)
|
||||||
|
payload.href = hrefObject->valueint;
|
||||||
|
if (framesize != nullptr)
|
||||||
|
payload.framesize = framesize->valueint;
|
||||||
|
if (quality != nullptr)
|
||||||
|
payload.quality = quality->valueint;
|
||||||
|
if (brightness != nullptr)
|
||||||
|
payload.brightness = brightness->valueint;
|
||||||
|
|
||||||
cJSON_Delete(parsedJson);
|
cJSON_Delete(parsedJson);
|
||||||
return payload;
|
return payload;
|
||||||
}
|
}
|
||||||
@@ -234,7 +254,21 @@ std::optional<UpdateCameraConfigPayload> updateCameraCommand::parsePayload(std::
|
|||||||
CommandResult updateCameraCommand::execute(std::string &jsonPayload)
|
CommandResult updateCameraCommand::execute(std::string &jsonPayload)
|
||||||
{
|
{
|
||||||
auto payload = parsePayload(jsonPayload);
|
auto payload = parsePayload(jsonPayload);
|
||||||
// todo implement updating
|
if (!payload.has_value())
|
||||||
|
{
|
||||||
|
return CommandResult::getErrorResult("Invalid payload");
|
||||||
|
}
|
||||||
|
auto updatedConfig = payload.value();
|
||||||
|
|
||||||
|
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,
|
||||||
|
updatedConfig.quality.has_value() ? updatedConfig.quality.value() : oldConfig.quality,
|
||||||
|
updatedConfig.brightness.has_value() ? updatedConfig.brightness.value() : oldConfig.brightness,
|
||||||
|
true);
|
||||||
|
|
||||||
return CommandResult::getSuccessResult("Config updated");
|
return CommandResult::getSuccessResult("Config updated");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
#include "ProjectConfig.hpp"
|
#include "ProjectConfig.hpp"
|
||||||
|
|
||||||
|
// TODO the current implementation is kinda wack, rethink it
|
||||||
|
|
||||||
ProjectConfig::ProjectConfig(const std::string &name,
|
ProjectConfig::ProjectConfig(const std::string &name,
|
||||||
const std::string &mdnsName)
|
const std::string &mdnsName)
|
||||||
: _name(std::move(name)),
|
: _name(std::move(name)),
|
||||||
|
|||||||
Reference in New Issue
Block a user