diff --git a/firmware/components/presets/include/presets_manager.h b/firmware/components/presets/include/presets_manager.h index ff54d69a..7cc2ae7f 100644 --- a/firmware/components/presets/include/presets_manager.h +++ b/firmware/components/presets/include/presets_manager.h @@ -12,7 +12,7 @@ class PresetsManager [[nodiscard]] int create(const PresetData &preset, id_t &id_out); [[nodiscard]] std::optional 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 callback); diff --git a/firmware/components/presets/src/preset_manager.cpp b/firmware/components/presets/src/preset_manager.cpp index 67f4196b..b1c8b2ce 100644 --- a/firmware/components/presets/src/preset_manager.cpp +++ b/firmware/components/presets/src/preset_manager.cpp @@ -40,7 +40,7 @@ std::optional PresetsManager::read(id_t id) { return std::nullopt; } - + return preset; } @@ -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 callback) diff --git a/firmware/components/presets/test/presets_json_parser.cpp b/firmware/components/presets/test/presets_json_parser.cpp index e3725d55..b5a880ec 100644 --- a/firmware/components/presets/test/presets_json_parser.cpp +++ b/firmware/components/presets/test/presets_json_parser.cpp @@ -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(*result), true); + + if(auto message = std::get_if(&(*result))) + { + Delete expected{.id{1}}; + + EXPECT_THAT(*message, expected); + } + else + { + assert(false); + } +} + } // namespace diff --git a/firmware/components/presets_storage/include/presets_storage.h b/firmware/components/presets_storage/include/presets_storage.h index c8fe7d69..aecd1d1d 100644 --- a/firmware/components/presets_storage/include/presets_storage.h +++ b/firmware/components/presets_storage/include/presets_storage.h @@ -201,7 +201,7 @@ class Storage nvs_iterator_t self = nullptr; }; - int create(std::span data, presets::id_t &id_out) + [[nodiscard]] int create(std::span data, presets::id_t &id_out) { nvs_handle_t nvs_handle; esp_err_t err; @@ -246,7 +246,7 @@ class Storage } /// \return non-zero on error - int save(presets::id_t id, std::span data) + [[nodiscard]] int save(presets::id_t id, std::span data) { nvs_handle_t nvs_handle; esp_err_t err; @@ -275,7 +275,7 @@ class Storage }; /// \return non-zero on error - int load(presets::id_t id, std::span &buffer) + [[nodiscard]] int load(presets::id_t id, std::span &buffer) { nvs_handle_t nvs_handle; esp_err_t err; @@ -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; diff --git a/firmware/components/server/src/server.cpp b/firmware/components/server/src/server.cpp index 9ec78cfe..75e3948f 100644 --- a/firmware/components/server/src/server.cpp +++ b/firmware/components/server/src/server.cpp @@ -17,7 +17,7 @@ * ShrapnelDSP. If not, see . */ -// #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" @@ -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); @@ -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()) diff --git a/firmware/main/include/main_thread.h b/firmware/main/include/main_thread.h index 337a4863..fdc00886 100644 --- a/firmware/main/include/main_thread.h +++ b/firmware/main/include/main_thread.h @@ -588,7 +588,12 @@ class MainThread else if constexpr(std::is_same_v) { - 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. }