From e024dba08f4432e2665fa4eedeedc97a45db57c2 Mon Sep 17 00:00:00 2001 From: Jukka Rissanen Date: Tue, 28 Apr 2015 16:41:56 +0300 Subject: [PATCH] net: uip: Add support for user data in simple UDP API Adding the user pointer to the uIP simple-udp API is vital so that we can pass the net_buf to UDP receiver callback. Change-Id: If7ee24f344fbd23eb7e0c3a99e78deb996d3667d Signed-off-by: Jukka Rissanen --- net/ip/contiki/ip/simple-udp.c | 7 +++++-- net/ip/contiki/ip/simple-udp.h | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/net/ip/contiki/ip/simple-udp.c b/net/ip/contiki/ip/simple-udp.c index ef1ab11e98a..1784b5bb390 100644 --- a/net/ip/contiki/ip/simple-udp.c +++ b/net/ip/contiki/ip/simple-udp.c @@ -109,7 +109,8 @@ simple_udp_register(struct simple_udp_connection *c, uint16_t local_port, uip_ipaddr_t *remote_addr, uint16_t remote_port, - simple_udp_callback receive_callback) + simple_udp_callback receive_callback, + void *user_data) { init_simple_udp(); @@ -120,6 +121,7 @@ simple_udp_register(struct simple_udp_connection *c, uip_ipaddr_copy(&c->remote_addr, remote_addr); } c->receive_callback = receive_callback; + c->user_data = user_data; PROCESS_CONTEXT_BEGIN(&simple_udp_process); c->udp_conn = udp_new(remote_addr, UIP_HTONS(remote_port), c); @@ -173,7 +175,8 @@ PROCESS_THREAD(simple_udp_process, ev, data, buf) UIP_HTONS(UIP_IP_BUF(buf)->srcport), &(UIP_IP_BUF(buf)->destipaddr), UIP_HTONS(UIP_IP_BUF(buf)->destport), - uip_buf(buf), uip_datalen(buf)); + uip_buf(buf), uip_datalen(buf), + c->user_data); PROCESS_CONTEXT_END(); } } diff --git a/net/ip/contiki/ip/simple-udp.h b/net/ip/contiki/ip/simple-udp.h index d8771007e54..82f697d9d5e 100644 --- a/net/ip/contiki/ip/simple-udp.h +++ b/net/ip/contiki/ip/simple-udp.h @@ -65,7 +65,8 @@ typedef void (* simple_udp_callback)(struct simple_udp_connection *c, uint16_t source_port, const uip_ipaddr_t *dest_addr, uint16_t dest_port, - const uint8_t *data, uint16_t datalen); + const uint8_t *data, uint16_t datalen, + void *user_data); /** Simple UDP connection */ struct simple_udp_connection { @@ -75,6 +76,7 @@ struct simple_udp_connection { simple_udp_callback receive_callback; struct uip_udp_conn *udp_conn; struct process *client_process; + void *user_data; }; /** @@ -100,7 +102,8 @@ int simple_udp_register(struct simple_udp_connection *c, uint16_t local_port, uip_ipaddr_t *remote_addr, uint16_t remote_port, - simple_udp_callback receive_callback); + simple_udp_callback receive_callback, + void *user_data); /** * \brief Send a UDP packet