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 <jukka.rissanen@linux.intel.com>
This commit is contained in:
Jukka Rissanen 2015-04-28 16:41:56 +03:00 committed by Anas Nashif
parent 7e0951982a
commit e024dba08f
2 changed files with 10 additions and 4 deletions

View File

@ -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();
}
}

View File

@ -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