summaryrefslogtreecommitdiff
path: root/fw/app/src/settings.c
diff options
context:
space:
mode:
Diffstat (limited to 'fw/app/src/settings.c')
-rw-r--r--fw/app/src/settings.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/fw/app/src/settings.c b/fw/app/src/settings.c
index 799322e..89f2f88 100644
--- a/fw/app/src/settings.c
+++ b/fw/app/src/settings.c
@@ -5,10 +5,14 @@
*/
+#include <stdio.h>
+
#include <zephyr/init.h>
#include <zephyr/logging/log.h>
#include <zephyr/settings/settings.h>
+#include "settings.h"
+
LOG_MODULE_DECLARE(settings);
@@ -31,3 +35,28 @@ int init_settings(void) {
return 0;
}
SYS_INIT(init_settings, APPLICATION, 50);
+
+int settings_to_json(void *buffer, size_t len)
+{
+ static const char format[] = "{\"syslog\":{\"target\":{\"ip\":\"%s\"}}}\n";
+
+ char ip[100];
+ int ret = settings_runtime_get("syslog/target/ip", ip, sizeof(ip));
+ if (ret < 0) {
+ LOG_ERR("Failed to get runtime setting syslog/target/ip (%d)", ret);
+ return ret;
+ }
+
+ ret = snprintf(buffer, len, format, ip);
+
+ if (ret >= len) {
+ LOG_ERR("Buffer too small to serialize settings as JSON");
+ return -ENOMEM;
+ }
+
+ if (ret < 0) {
+ LOG_ERR("Failed to serialize settings as JSON");
+ }
+
+ return ret;
+}