diff --git a/src/api/api_msg.c b/src/api/api_msg.c index c550edd4..bca64ff7 100644 --- a/src/api/api_msg.c +++ b/src/api/api_msg.c @@ -37,37 +37,6 @@ #include "lwip/sys.h" #include "lwip/tcpip.h" -/*-----------------------------------------------------------------------------------*/ -static err_t -recv_tcp(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) -{ - struct netconn *conn; - u16_t len; - - conn = arg; - - if(conn == NULL) { - pbuf_free(p); - return ERR_VAL; - } - - if(conn->recvmbox != SYS_MBOX_NULL) { - - conn->err = err; - if (p != NULL) { - len = p->tot_len; - conn->recv_avail += len; - } - else - len = 0; - /* Register event with callback */ - if (conn->callback) - (*conn->callback)(conn, NETCONN_EVT_RCVPLUS, len); - sys_mbox_post(conn->recvmbox, p); - } - return ERR_OK; -} -/*-----------------------------------------------------------------------------------*/ #if LWIP_UDP static void recv_udp(void *arg, struct udp_pcb *pcb, struct pbuf *p, @@ -102,6 +71,38 @@ recv_udp(void *arg, struct udp_pcb *pcb, struct pbuf *p, } } #endif /* LWIP_UDP */ +#if LWIP_TCP +/*-----------------------------------------------------------------------------------*/ +static err_t +recv_tcp(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err) +{ + struct netconn *conn; + u16_t len; + + conn = arg; + + if(conn == NULL) { + pbuf_free(p); + return ERR_VAL; + } + + if(conn->recvmbox != SYS_MBOX_NULL) { + + conn->err = err; + if (p != NULL) { + len = p->tot_len; + conn->recv_avail += len; + } + else + len = 0; + /* Register event with callback */ + if (conn->callback) + (*conn->callback)(conn, NETCONN_EVT_RCVPLUS, len); + sys_mbox_post(conn->recvmbox, p); + } + return ERR_OK; +} + /*-----------------------------------------------------------------------------------*/ static err_t poll_tcp(void *arg, struct tcp_pcb *pcb) @@ -232,6 +233,7 @@ accept_function(void *arg, struct tcp_pcb *newpcb, err_t err) sys_mbox_post(mbox, newconn); return ERR_OK; } +#endif /* LWIP_TCP */ /*-----------------------------------------------------------------------------------*/ static void do_newconn(struct api_msg_msg *msg) @@ -253,6 +255,7 @@ do_delconn(struct api_msg_msg *msg) udp_remove(msg->conn->pcb.udp); break; #endif /* LWIP_UDP */ +#if LWIP_TCP case NETCONN_TCP: if(msg->conn->pcb.tcp->state == LISTEN) { tcp_accept(msg->conn->pcb.tcp, NULL); @@ -267,6 +270,8 @@ do_delconn(struct api_msg_msg *msg) tcp_abort(msg->conn->pcb.tcp); } } +#endif + default: break; } } @@ -303,10 +308,13 @@ do_bind(struct api_msg_msg *msg) udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn); break; #endif /* LWIP_UDP */ +#if LWIP_TCP case NETCONN_TCP: msg->conn->pcb.tcp = tcp_new(); setup_tcp(msg->conn); - break; +#endif /* LWIP_TCP */ + default: + break; } } switch(msg->conn->type) { @@ -319,13 +327,17 @@ do_bind(struct api_msg_msg *msg) msg->conn->err = udp_bind(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port); break; #endif /* LWIP_UDP */ +#if LWIP_TCP case NETCONN_TCP: msg->conn->err = tcp_bind(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, msg->msg.bc.port); +#endif /* LWIP_TCP */ + default: break; } sys_mbox_post(msg->conn->mbox, NULL); } +#if LWIP_TCP /*-----------------------------------------------------------------------------------*/ static err_t do_connected(void *arg, struct tcp_pcb *pcb, err_t err) @@ -339,14 +351,13 @@ do_connected(void *arg, struct tcp_pcb *pcb, err_t err) } conn->err = err; - if(conn->type == NETCONN_TCP && err == ERR_OK) { setup_tcp(conn); } - sys_mbox_post(conn->mbox, NULL); return ERR_OK; } +#endif /*-----------------------------------------------------------------------------------*/ static void do_connect(struct api_msg_msg *msg) @@ -384,6 +395,7 @@ do_connect(struct api_msg_msg *msg) udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn); break; #endif /* LWIP_UDP */ +#if LWIP_TCP case NETCONN_TCP: msg->conn->pcb.tcp = tcp_new(); if(msg->conn->pcb.tcp == NULL) { @@ -391,6 +403,8 @@ do_connect(struct api_msg_msg *msg) sys_mbox_post(msg->conn->mbox, NULL); return; } +#endif + default: break; } } @@ -405,12 +419,15 @@ do_connect(struct api_msg_msg *msg) sys_mbox_post(msg->conn->mbox, NULL); break; #endif +#if LWIP_TCP case NETCONN_TCP: /* tcp_arg(msg->conn->pcb.tcp, msg->conn);*/ setup_tcp(msg->conn); tcp_connect(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, msg->msg.bc.port, do_connected); /*tcp_output(msg->conn->pcb.tcp);*/ +#endif + default: break; } } @@ -450,6 +467,7 @@ do_listen(struct api_msg_msg *msg) DEBUGF(API_MSG_DEBUG, ("api_msg: listen UDP: cannot listen for UDP.\n")); break; #endif /* LWIP_UDP */ +#if LWIP_TCP case NETCONN_TCP: msg->conn->pcb.tcp = tcp_listen(msg->conn->pcb.tcp); if(msg->conn->pcb.tcp == NULL) { @@ -465,6 +483,8 @@ do_listen(struct api_msg_msg *msg) tcp_arg(msg->conn->pcb.tcp, msg->conn); tcp_accept(msg->conn->pcb.tcp, accept_function); } +#endif + default: break; } } @@ -515,18 +535,22 @@ do_send(struct api_msg_msg *msg) static void do_recv(struct api_msg_msg *msg) { +#if LWIP_TCP if(msg->conn->pcb.tcp != NULL) { if(msg->conn->type == NETCONN_TCP) { tcp_recved(msg->conn->pcb.tcp, msg->msg.len); } } +#endif sys_mbox_post(msg->conn->mbox, NULL); } /*-----------------------------------------------------------------------------------*/ static void do_write(struct api_msg_msg *msg) { +#if LWIP_TCP err_t err; +#endif if(msg->conn->pcb.tcp != NULL) { switch(msg->conn->type) { #if LWIP_UDP @@ -538,6 +562,7 @@ do_write(struct api_msg_msg *msg) msg->conn->err = ERR_VAL; break; #endif /* LWIP_UDP */ +#if LWIP_TCP case NETCONN_TCP: err = tcp_write(msg->conn->pcb.tcp, msg->msg.w.dataptr, msg->msg.w.len, msg->msg.w.copy); @@ -555,6 +580,8 @@ do_write(struct api_msg_msg *msg) if (tcp_sndbuf(msg->conn->pcb.tcp) <= TCP_SNDLOWAT) (*msg->conn->callback)(msg->conn, NETCONN_EVT_SENDMINUS, msg->msg.w.len); } +#endif + default: break; } } @@ -578,11 +605,14 @@ do_close(struct api_msg_msg *msg) case NETCONN_UDP: break; #endif /* LWIP_UDP */ +#if LWIP_TCP case NETCONN_TCP: if(msg->conn->pcb.tcp->state == LISTEN) { err = tcp_close(msg->conn->pcb.tcp); } msg->conn->err = err; +#endif + default: break; } } diff --git a/src/api/tcpip.c b/src/api/tcpip.c index cfeeb9e7..b045c8bb 100644 --- a/src/api/tcpip.c +++ b/src/api/tcpip.c @@ -46,7 +46,7 @@ static void (* tcpip_init_done)(void *arg) = NULL; static void *tcpip_init_done_arg; static sys_mbox_t mbox; - +#if LWIP_TCP static int tcpip_tcp_timer_active = 0; @@ -72,6 +72,7 @@ tcp_timer_needed(void) sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL); } } +#endif /* LWIP_TCP */ /*-----------------------------------------------------------------------------------*/ static void tcpip_thread(void *arg) @@ -81,9 +82,12 @@ tcpip_thread(void *arg) (void)arg; ip_init(); +#if LWIP_UDP udp_init(); +#endif +#if LWIP_TCP tcp_init(); - +#endif if(tcpip_init_done != NULL) { tcpip_init_done(tcpip_init_done_arg); } diff --git a/src/core/tcp.c b/src/core/tcp.c index 65f74e3d..5f159b40 100644 --- a/src/core/tcp.c +++ b/src/core/tcp.c @@ -47,7 +47,7 @@ #include "lwip/memp.h" #include "lwip/tcp.h" - +#if LWIP_TCP /* Incremented every coarse grained timer shot (typically every 500 ms, determined by TCP_COARSE_TIMEOUT). */ @@ -1168,6 +1168,7 @@ tcp_pcbs_sane(void) return 1; } #endif /* TCP_DEBUG */ +#endif /* LWIP_TCP */ /*-----------------------------------------------------------------------------------*/ diff --git a/src/core/tcp_in.c b/src/core/tcp_in.c index 1ddaaf7d..5c38ab1f 100644 --- a/src/core/tcp_in.c +++ b/src/core/tcp_in.c @@ -55,7 +55,7 @@ #include "lwip/stats.h" #include "arch/perf.h" - +#if LWIP_TCP /* These variables are global to all functions involved in the input processing of TCP segments. They are set by the tcp_input() function. */ @@ -1135,5 +1135,6 @@ tcp_parseopt(struct tcp_pcb *pcb) } } } +#endif /* LWIP_TCP */ /*-----------------------------------------------------------------------------------*/ diff --git a/src/core/tcp_out.c b/src/core/tcp_out.c index 8a411fe5..7a8cfd0a 100644 --- a/src/core/tcp_out.c +++ b/src/core/tcp_out.c @@ -53,7 +53,7 @@ #include "lwip/stats.h" - +#if LWIP_TCP #define MIN(x,y) (x) < (y)? (x): (y) @@ -580,7 +580,7 @@ tcp_rexmit(struct tcp_pcb *pcb) tcp_output(pcb); } - +#endif /* LWIP_TCP */ diff --git a/src/core/udp.c b/src/core/udp.c index eaa446f7..cea81ca0 100644 --- a/src/core/udp.c +++ b/src/core/udp.c @@ -58,7 +58,6 @@ /*static*/ struct udp_pcb *udp_pcbs = NULL; static struct udp_pcb *pcb_cache = NULL; -#endif /* LWIP_UDP */ #if UDP_DEBUG int udp_debug_print(struct udp_hdr *udphdr); @@ -68,12 +67,9 @@ int udp_debug_print(struct udp_hdr *udphdr); void udp_init(void) { -#if LWIP_UDP udp_pcbs = pcb_cache = NULL; -#endif /* LWIP_UDP */ } -#if LWIP_UDP /*-----------------------------------------------------------------------------------*/ /* udp_lookup: *