net: lwm2m: save accept format in observe_node_data
Save in observe_node_data so that later on we can select the correct
content format requested by the caller at the first time
Signed-off-by: Robert Chou <robert.ch.chou@acer.com>
diff --git a/subsys/net/lib/lwm2m/lwm2m_engine.c b/subsys/net/lib/lwm2m/lwm2m_engine.c
index 8529ebd..4a1ada3 100644
--- a/subsys/net/lib/lwm2m/lwm2m_engine.c
+++ b/subsys/net/lib/lwm2m/lwm2m_engine.c
@@ -82,6 +82,7 @@
u32_t min_period_sec;
u32_t max_period_sec;
u32_t counter;
+ u16_t format;
bool used;
u8_t tkl;
};
@@ -176,7 +177,8 @@
static int engine_add_observer(struct net_context *net_ctx,
struct sockaddr *addr,
const u8_t *token, u8_t tkl,
- struct lwm2m_obj_path *path)
+ struct lwm2m_obj_path *path,
+ u16_t format)
{
struct observe_node *obs;
int i;
@@ -228,6 +230,7 @@
/* TODO: use server object instance or WRITE_ATTR values */
observe_node_data[i].min_period_sec = 10;
observe_node_data[i].max_period_sec = 60;
+ observe_node_data[i].format = format;
observe_node_data[i].counter = 1;
sys_slist_append(&engine_observer_list,
&observe_node_data[i].node);
@@ -2065,7 +2068,7 @@
r = engine_add_observer(
net_pkt_context(in.in_zpkt->pkt),
- from_addr, token, tkl, &path);
+ from_addr, token, tkl, &path, accept);
if (r < 0) {
SYS_LOG_ERR("add OBSERVE error: %d", r);
}
@@ -2403,14 +2406,12 @@
goto cleanup;
}
- /* TODO: save the accept-format from original request */
-
/* set the output writer */
- select_writer(&out, LWM2M_FORMAT_OMA_TLV);
+ select_writer(&out, obs->format);
/* set response content-format */
ret = zoap_add_option_int(out.out_zpkt, ZOAP_OPTION_CONTENT_FORMAT,
- LWM2M_FORMAT_OMA_TLV);
+ obs->format);
if (ret > 0) {
SYS_LOG_ERR("error setting content-format (err:%d)", ret);
goto cleanup;