diff options
author | xengineering <me@xengineering.eu> | 2025-04-15 22:12:54 +0200 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2025-04-16 18:03:40 +0200 |
commit | f4faa103108356bcf53fb7c8829e95f012b21a4a (patch) | |
tree | f0f8e40c0a66090fd027ac31bf5ce213aaf97b63 /fw/app/src/settings.c | |
parent | d25c8e08ce6a977977e38365ace9af16acf09195 (diff) | |
download | iot-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.c | 29 |
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; +} |