diff options
author | xengineering <me@xengineering.eu> | 2025-04-16 22:14:06 +0200 |
---|---|---|
committer | xengineering <me@xengineering.eu> | 2025-04-16 22:14:06 +0200 |
commit | 686e372d42002a189a1e9b73e387e3414a97fc97 (patch) | |
tree | 6286d89d051ed839b65db9ac1a92cf2ff8af32ee /fw/app/src | |
parent | 04b2fd43f67cd191e5b38c93ec6f20b06b7946e1 (diff) | |
download | iot-contact-686e372d42002a189a1e9b73e387e3414a97fc97.tar iot-contact-686e372d42002a189a1e9b73e387e3414a97fc97.tar.zst iot-contact-686e372d42002a189a1e9b73e387e3414a97fc97.zip |
WIP: fw: app: Fix SEGFAULT
TODO: Only JSON numbers seem to be encodable. Strings lead to SEGFAULT
TODO: For some reason the encoded string is not part of the HTTP
response.
Diffstat (limited to 'fw/app/src')
-rw-r--r-- | fw/app/src/http.c | 2 | ||||
-rw-r--r-- | fw/app/src/settings.c | 27 | ||||
-rw-r--r-- | fw/app/src/settings.h | 3 |
3 files changed, 19 insertions, 13 deletions
diff --git a/fw/app/src/http.c b/fw/app/src/http.c index 83a3568..eb3d695 100644 --- a/fw/app/src/http.c +++ b/fw/app/src/http.c @@ -107,6 +107,8 @@ static int settings_handler( return ret; } + LOG_INF("Encoded: '%s'", buffer); + response_ctx->body = (const uint8_t *)buffer; response_ctx->body_len = ret; response_ctx->final_chunk = true; diff --git a/fw/app/src/settings.c b/fw/app/src/settings.c index 72cea12..22e55fc 100644 --- a/fw/app/src/settings.c +++ b/fw/app/src/settings.c @@ -36,7 +36,7 @@ int init_settings(void) { SYS_INIT(init_settings, APPLICATION, 50); static const struct json_obj_descr settings_syslog_target_descr[] = { - JSON_OBJ_DESCR_PRIM(struct settings_syslog_target, ip, JSON_TOK_STRING), + JSON_OBJ_DESCR_PRIM(struct settings_syslog_target, ip, JSON_TOK_NUMBER), }; static const struct json_obj_descr settings_syslog_descr[] = { @@ -51,21 +51,24 @@ int settings_to_json(void *buffer, size_t len) { struct settings settings = {0,}; - int ret = settings_runtime_get("syslog/target/ip", - settings.syslog.target.ip, - sizeof(settings.syslog.target.ip)); - if (ret < 0) { - LOG_ERR("Failed to get runtime setting syslog/target/ip (%d)", ret); - return ret; - } +// int ret = settings_runtime_get("syslog/target/ip", +// settings.syslog.target.ip, +// sizeof(settings.syslog.target.ip)); +// if (ret < 0) { +// LOG_ERR("Failed to get runtime setting syslog/target/ip (%d)", ret); +// return ret; +// } - ret = json_obj_encode_buf( - settings_syslog_target_descr, - ARRAY_SIZE(settings_syslog_target_descr), - &(settings.syslog.target), + settings.syslog.target.ip = 42; + + int ret = json_obj_encode_buf( + settings_descr, + ARRAY_SIZE(settings_descr), + &settings, buffer, len ); + if (ret < 0) { LOG_ERR("Failed to serialize settings as JSON"); return ret; diff --git a/fw/app/src/settings.h b/fw/app/src/settings.h index 9d46132..dff3c44 100644 --- a/fw/app/src/settings.h +++ b/fw/app/src/settings.h @@ -15,7 +15,8 @@ struct settings_syslog_target { - char ip[IPV6_STRLEN_MAX]; +// char ip[IPV6_STRLEN_MAX]; + int ip; }; struct settings_syslog { |