summaryrefslogtreecommitdiff
path: root/fw/app/src/settings.c
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2025-04-15 22:12:54 +0200
committerxengineering <me@xengineering.eu>2025-04-16 18:03:40 +0200
commitf4faa103108356bcf53fb7c8829e95f012b21a4a (patch)
treef0f8e40c0a66090fd027ac31bf5ce213aaf97b63 /fw/app/src/settings.c
parentd25c8e08ce6a977977e38365ace9af16acf09195 (diff)
downloadiot-contact-f4faa103108356bcf53fb7c8829e95f012b21a4a.tar
iot-contact-f4faa103108356bcf53fb7c8829e95f012b21a4a.tar.zst
iot-contact-f4faa103108356bcf53fb7c8829e95f012b21a4a.zip
fw: app: http: Add working GET /settings.json
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;
+}