Skip to content

Commit

Permalink
WIP fix delete
Browse files Browse the repository at this point in the history
  • Loading branch information
Barabas5532 committed Dec 10, 2023
1 parent 20b769e commit a842751
Show file tree
Hide file tree
Showing 6 changed files with 45 additions and 10 deletions.
2 changes: 1 addition & 1 deletion firmware/components/presets/include/presets_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ class PresetsManager
[[nodiscard]] int create(const PresetData &preset, id_t &id_out);
[[nodiscard]] std::optional<PresetData> read(id_t id);
[[nodiscard]] int update(id_t id, const PresetData &preset);
void remove(id_t id);
[[nodiscard]] int remove(id_t id);

void for_each(etl::delegate<void(id_t, const PresetData &)> callback);

Expand Down
13 changes: 11 additions & 2 deletions firmware/components/presets/src/preset_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ std::optional<PresetData> PresetsManager::read(id_t id)
{
return std::nullopt;
}

return preset;
}

Expand All @@ -64,7 +64,16 @@ int PresetsManager::update(id_t id, const PresetData &preset)
return 0;
}

void PresetsManager::remove(id_t id) { storage->remove(id); }
int PresetsManager::remove(id_t id)
{
int rc = storage->remove(id);
if(rc != 0)
{
return -1;
}

return 0;
}

void PresetsManager::for_each(
etl::delegate<void(id_t, const PresetData &)> callback)
Expand Down
20 changes: 20 additions & 0 deletions firmware/components/presets/test/presets_json_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -223,4 +223,24 @@ TEST(PresetsJsonParser, Update)
}
}

TEST(PresetsJsonParser, Delete)
{
auto json = R"({"id":1,"messageType":"Presets::delete"})";

auto result = parse_json(json);
EXPECT_THAT(result.has_value(), true);
EXPECT_THAT(std::holds_alternative<Delete>(*result), true);

if(auto message = std::get_if<Delete>(&(*result)))
{
Delete expected{.id{1}};

EXPECT_THAT(*message, expected);
}
else
{
assert(false);
}
}

} // namespace
8 changes: 4 additions & 4 deletions firmware/components/presets_storage/include/presets_storage.h
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ class Storage
nvs_iterator_t self = nullptr;
};

int create(std::span<uint8_t> data, presets::id_t &id_out)
[[nodiscard]] int create(std::span<uint8_t> data, presets::id_t &id_out)
{
nvs_handle_t nvs_handle;
esp_err_t err;
Expand Down Expand Up @@ -246,7 +246,7 @@ class Storage
}

/// \return non-zero on error
int save(presets::id_t id, std::span<uint8_t> data)
[[nodiscard]] int save(presets::id_t id, std::span<uint8_t> data)
{
nvs_handle_t nvs_handle;
esp_err_t err;
Expand Down Expand Up @@ -275,7 +275,7 @@ class Storage
};

/// \return non-zero on error
int load(presets::id_t id, std::span<uint8_t> &buffer)
[[nodiscard]] int load(presets::id_t id, std::span<uint8_t> &buffer)
{
nvs_handle_t nvs_handle;
esp_err_t err;
Expand Down Expand Up @@ -318,7 +318,7 @@ class Storage
};

/// \return non-zero on error
int remove(presets::id_t id)
[[nodiscard]] int remove(presets::id_t id)
{
nvs_handle_t nvs_handle;
esp_err_t err;
Expand Down
5 changes: 3 additions & 2 deletions firmware/components/server/src/server.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
* ShrapnelDSP. If not, see <https://www.gnu.org/licenses/>.
*/

// #define LOG_LOCAL_LEVEL ESP_LOG_VERBOSE
#define LOG_LOCAL_LEVEL ESP_LOG_VERBOSE
#include "server.h"
#include "cmd_handling_json.h"
#include "cmd_handling_json_builder.h"
Expand Down Expand Up @@ -61,6 +61,7 @@ void Server::start()
config.server_port = 8080;
config.ctrl_port = 8081;
config.max_open_sockets = MAX_CLIENTS;
config.stack_size = 5000;

// Start the httpd server
ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port);
Expand Down Expand Up @@ -139,7 +140,7 @@ esp_err_t websocket_get_handler(httpd_req_t *req)
ESP_LOG_BUFFER_HEXDUMP(TAG, json, sizeof(json), ESP_LOG_VERBOSE);

int fd = httpd_req_to_sockfd(req);

rapidjson::Document document;
document.Parse(json);
if(document.HasParseError())
Expand Down
7 changes: 6 additions & 1 deletion firmware/main/include/main_thread.h
Original file line number Diff line number Diff line change
Expand Up @@ -588,7 +588,12 @@ class MainThread
else if constexpr(std::is_same_v<PresetsMessageT,
presets::Delete>)
{
presets_manager->remove(presets_message.id);
int rc = presets_manager->remove(presets_message.id);
if(rc != 0)
{
ESP_LOGE(TAG, "Failed to remove preset");
return std::nullopt;
}
// FIXME: add message for notifying about deletion to
// the API.
}
Expand Down

0 comments on commit a842751

Please sign in to comment.