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;