summaryrefslogtreecommitdiff
path: root/fw/app
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2025-04-16 22:14:06 +0200
committerxengineering <me@xengineering.eu>2025-04-16 22:14:06 +0200
commit686e372d42002a189a1e9b73e387e3414a97fc97 (patch)
tree6286d89d051ed839b65db9ac1a92cf2ff8af32ee /fw/app
parent04b2fd43f67cd191e5b38c93ec6f20b06b7946e1 (diff)
downloadiot-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')
-rw-r--r--fw/app/src/http.c2
-rw-r--r--fw/app/src/settings.c27
-rw-r--r--fw/app/src/settings.h3
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 {