#include #include #include #include "devices.h" #include "DIAG.h" #include #include #include #include #include #include "lwip/api.h" extern pthread_mutex_t printf_mutex; void tcpecho_thread(void) { struct netconn *conn, *newconn; err_t err; //LWIP_UNUSED_ARG(arg); /* Create a new connection identifier. */ conn = netconn_new(NETCONN_TCP); /* Bind connection to well known port number 7. */ netconn_bind(conn, NULL, 8989); /* Tell connection to go into listening mode. */ netconn_listen(conn); DIAG("Listning on 8989\n"); while (1) { /* Grab new connection. */ DIAG("Grabbing new connection...\n"); err = netconn_accept(conn, &newconn); DIAG("accepted new connection %p\n", newconn); /* Process the new connection. */ if (err == ERR_OK) { struct netbuf *buf; void *data; u16_t len; while ((err = netconn_recv(newconn, &buf)) == ERR_OK) { DIAG("Recved\n"); do { netbuf_data(buf, &data, &len); err = netconn_write(newconn, data, len, NETCONN_COPY); #if 0 if (err != ERR_OK) { DIAG("tcpecho: netconn_write: error \"%s\"\n", lwip_strerr(err)); } #endif } while (netbuf_next(buf) >= 0); netbuf_delete(buf); } DIAG("Got EOF, looping\n"); /* Close connection and discard connection identifier. */ netconn_close(newconn); netconn_delete(newconn); } else { DIAG(lwip_strerr(err)); } } }