settings: add delete key-value pair API
So far to deleting av existing key-value pair it was
required to storing NULL value using setting_save_one().
This patch introduce more intuitive API which takes only
the name key string.
Signed-off-by: Andrzej Puzdrowski <andrzej.puzdrowski@nordicsemi.no>
diff --git a/include/settings/settings.h b/include/settings/settings.h
index 35b94e7..70181a1 100644
--- a/include/settings/settings.h
+++ b/include/settings/settings.h
@@ -140,6 +140,18 @@
int settings_save_one(const char *name, void *value, size_t val_len);
/**
+ * Delete a single serialized in persisted storage.
+ *
+ * Deleting an existing key-value pair in the settings mean
+ * to set its value to NULL.
+ *
+ * @param name Name/key of the settings item.
+ *
+ * @return 0 on success, non-zero on failure.
+ */
+int settings_delete(const char *name);
+
+/**
* Set settings item identified by @p name to be value @p value.
* This finds the settings handler for this subtree and calls it's
* set handler.
diff --git a/subsys/settings/src/settings_store.c b/subsys/settings/src/settings_store.c
index 35a35d3..da9fe94 100644
--- a/subsys/settings/src/settings_store.c
+++ b/subsys/settings/src/settings_store.c
@@ -164,6 +164,11 @@
return cs->cs_itf->csi_save(cs, name, (char *)value, val_len);
}
+int settings_delete(const char *name)
+{
+ return settings_save_one(name, NULL, 0);
+}
+
int settings_save(void)
{
struct settings_store *cs;