Modify changes to test TCP socket.

Dependents:   EthernetInterface

Fork of lwip by mbed official

Files at this revision

API Documentation at this revision

Comitter:
rebonatto
Date:
Fri Dec 13 11:39:39 2013 +0000
Parent:
11:4b3f6f8b92d2
Commit message:
modify;

Changed in this revision

api/api_lib.c Show annotated file Show diff for this revision Revisions of this file
api/sockets.c Show annotated file Show diff for this revision Revisions of this file
api/tcpip.c Show annotated file Show diff for this revision Revisions of this file
core/tcp.c Show annotated file Show diff for this revision Revisions of this file
core/tcp_in.c Show annotated file Show diff for this revision Revisions of this file
lwipopts.h Show annotated file Show diff for this revision Revisions of this file
--- a/api/api_lib.c	Mon Aug 19 18:37:54 2013 +0300
+++ b/api/api_lib.c	Fri Dec 13 11:39:39 2013 +0000
@@ -53,6 +53,7 @@
 #include "lwip/tcp.h"
 
 #include <string.h>
+#include <stdio.h>
 
 /**
  * Create a new netconn (of a specific type) that has a callback function.
@@ -195,14 +196,15 @@
   err_t err;
 
   LWIP_ERROR("netconn_connect: invalid conn", (conn != NULL), return ERR_ARG;);
-
   msg.function = do_connect;
   msg.msg.conn = conn;
   msg.msg.msg.bc.ipaddr = addr;
   msg.msg.msg.bc.port = port;
   /* This is the only function which need to not block tcpip_thread */
   err = tcpip_apimsg(&msg);
-
+  if(err != 0)
+    printf("Pau em tcpip_apimsg\n");
+ 
   NETCONN_SET_SAFE_ERR(conn, err);
   return err;
 }
--- a/api/sockets.c	Mon Aug 19 18:37:54 2013 +0300
+++ b/api/sockets.c	Fri Dec 13 11:39:39 2013 +0000
@@ -57,6 +57,7 @@
 #endif
 
 #include <string.h>
+#include <stdio.h>
 
 #define NUM_SOCKETS MEMP_NUM_NETCONN
 
@@ -472,6 +473,7 @@
 
   sock = get_socket(s);
   if (!sock) {
+    printf("Erro get_socket\n");
     return -1;
   }
 
@@ -483,6 +485,7 @@
 
   if (name_in->sin_family == AF_UNSPEC) {
     LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_connect(%d, AF_UNSPEC)\n", s));
+    printf("1->lwip_connect(%d, AF_UNSPEC)\n", s);
     err = netconn_disconnect(sock->conn);
   } else {
     ip_addr_t remote_addr;
@@ -492,14 +495,18 @@
     remote_port = name_in->sin_port;
 
     LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_connect(%d, addr=", s));
+    //printf("2->lwip_connect(%d, addr=", s);
+    
     ip_addr_debug_print(SOCKETS_DEBUG, &remote_addr);
     LWIP_DEBUGF(SOCKETS_DEBUG, (" port=%"U16_F")\n", ntohs(remote_port)));
+    //printf(" port=%d\n", ntohs(remote_port));
 
     err = netconn_connect(sock->conn, &remote_addr, ntohs(remote_port));
   }
 
   if (err != ERR_OK) {
     LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_connect(%d) failed, err=%d\n", s, err));
+    //printf("4->lwip_connect(%d) failed, err=%d\n", s, err);
     sock_set_errno(sock, err_to_errno(err));
     return -1;
   }
--- a/api/tcpip.c	Mon Aug 19 18:37:54 2013 +0300
+++ b/api/tcpip.c	Fri Dec 13 11:39:39 2013 +0000
@@ -49,6 +49,8 @@
 #include "netif/etharp.h"
 #include "netif/ppp_oe.h"
 
+#include <stdio.h>
+
 /* global variables */
 static tcpip_init_done_fn tcpip_init_done;
 static void *tcpip_init_done_arg;
@@ -83,15 +85,26 @@
   LOCK_TCPIP_CORE();
   while (1) {                          /* MAIN Loop */
     UNLOCK_TCPIP_CORE();
+    //printf("Unlock realizado\n");
     LWIP_TCPIP_THREAD_ALIVE();
     /* wait for a message, timeouts are processed while waiting */
     sys_timeouts_mbox_fetch(&mbox, (void **)&msg);
+    /*
+    if (msg->type == 0)
+        printf("Tirou do Mbox %d Tipo %d\n\n", msg->msg.apimsg, msg->type); 
+    else
+        printf("Tirou InPackt %d Tipo %d\n\n", (int) msg, msg->type); 
+    //printf("Pegou fetch\n");
+    */
     LOCK_TCPIP_CORE();
+    //printf("Executou lock\n");
     switch (msg->type) {
 #if LWIP_NETCONN
     case TCPIP_MSG_API:
       LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: API message %p\n", (void *)msg));
+      
       msg->msg.apimsg->function(&(msg->msg.apimsg->msg));
+      //printf("Executou funcao\n");
       break;
 #endif /* LWIP_NETCONN */
 
@@ -104,6 +117,7 @@
       } else
 #endif /* LWIP_ETHERNET */
       {
+        printf("AAAAAA\n");
         ip_input(msg->msg.inp.p, msg->msg.inp.netif);
       }
       memp_free(MEMP_TCPIP_MSG_INPKT, msg);
@@ -181,6 +195,7 @@
     msg->type = TCPIP_MSG_INPKT;
     msg->msg.inp.p = p;
     msg->msg.inp.netif = inp;
+    //printf("Colocou InPact %d\n", (int) msg);
     if (sys_mbox_trypost(&mbox, msg) != ERR_OK) {
       memp_free(MEMP_TCPIP_MSG_INPKT, msg);
       return ERR_MEM;
@@ -301,6 +316,7 @@
 tcpip_apimsg(struct api_msg *apimsg)
 {
   struct tcpip_msg msg;
+  int x=-1;
 #ifdef LWIP_DEBUG
   /* catch functions that don't set err */
   apimsg->msg.err = ERR_VAL;
@@ -309,8 +325,13 @@
   if (sys_mbox_valid(&mbox)) {
     msg.type = TCPIP_MSG_API;
     msg.msg.apimsg = apimsg;
+    //printf("Vai dar Post\n");
+    
     sys_mbox_post(&mbox, &msg);
-    sys_arch_sem_wait(&apimsg->msg.conn->op_completed, 0);
+    //printf("Passou Post\n");
+    //printf("Colocou no Mbox %d\n\n", apimsg);
+    x = sys_arch_sem_wait(&apimsg->msg.conn->op_completed, 0);
+    //printf("Passou Wait %d\n", x);
     return apimsg->msg.err;
   }
   return ERR_VAL;
--- a/core/tcp.c	Mon Aug 19 18:37:54 2013 +0300
+++ b/core/tcp.c	Fri Dec 13 11:39:39 2013 +0000
@@ -733,8 +733,9 @@
     }
     TCP_REG(&tcp_active_pcbs, pcb);
     snmp_inc_tcpactiveopens();
-
+    //printf("VAi para output\n");
     tcp_output(pcb);
+    //printf("Veio para output\n");
   }
   return ret;
 }
--- a/core/tcp_in.c	Mon Aug 19 18:37:54 2013 +0300
+++ b/core/tcp_in.c	Fri Dec 13 11:39:39 2013 +0000
@@ -100,6 +100,7 @@
   u8_t hdrlen;
   err_t err;
 
+  //printf("Entrou no TCP_In!\n");  
   PERF_START;
 
   TCP_STATS_INC(tcp.recv);
@@ -178,6 +179,7 @@
      for an active connection. */
   prev = NULL;
 
+  //printf("Cheguei aqui SRC %d DEST %d \n", tcphdr->src, tcphdr->dest);
   
   for(pcb = tcp_active_pcbs; pcb != NULL; pcb = pcb->next) {
     LWIP_ASSERT("tcp_input: active pcb->state != CLOSED", pcb->state != CLOSED);
@@ -198,12 +200,14 @@
         tcp_active_pcbs = pcb;
       }
       LWIP_ASSERT("tcp_input: pcb->next != pcb (after cache)", pcb->next != pcb);
+      //printf("Achei nas ativas\n");
       break;
     }
     prev = pcb;
   }
-
+  
   if (pcb == NULL) {
+    //printf("NAO ACHOU NAS ATIVAS\n");
     /* If it did not go to an active connection, we check the connections
        in the TIME-WAIT state. */
     for(pcb = tcp_tw_pcbs; pcb != NULL; pcb = pcb->next) {
@@ -216,15 +220,17 @@
            of the list since we are not very likely to receive that
            many segments for connections in TIME-WAIT. */
         LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for TIME_WAITing connection.\n"));
+        //printf("Achei nas TimeWait\n");
         tcp_timewait_input(pcb);
         pbuf_free(p);
         return;
       }
     }
-
+    //printf("NAO ACHOU NAS TIME-WAIT\n");
     /* Finally, if we still did not get a match, we check all PCBs that
        are LISTENing for incoming connections. */
     prev = NULL;
+    //printf("Vai procurar nas Listening ...\n");
     for(lpcb = tcp_listen_pcbs.listen_pcbs; lpcb != NULL; lpcb = lpcb->next) {
       if (lpcb->local_port == tcphdr->dest) {
 #if SO_REUSE
@@ -267,12 +273,13 @@
       }
     
       LWIP_DEBUGF(TCP_INPUT_DEBUG, ("tcp_input: packed for LISTENing connection.\n"));
+      //printf("Achou Nas Listening\n\n");
       tcp_listen_input(lpcb);
       pbuf_free(p);
       return;
     }
   }
-
+  
 #if TCP_INPUT_DEBUG
   LWIP_DEBUGF(TCP_INPUT_DEBUG, ("+-+-+-+-+-+-+-+-+-+-+-+-+-+- tcp_input: flags "));
   tcp_debug_print_flags(TCPH_FLAGS(tcphdr));
@@ -288,6 +295,7 @@
 #endif /* TCP_DEBUG */
 #endif /* TCP_INPUT_DEBUG */
 
+    //tcp_debug_print_state(pcb->state);
     /* Set up a tcp_seg structure. */
     inseg.next = NULL;
     inseg.len = p->tot_len;
@@ -408,7 +416,9 @@
       inseg.p = NULL;
     }
   } else {
-
+    //printf("Vai Capeta \n");
+    //tcp_debug_print_state(pcb->state);
+    //printf("Fudeu mesmo\n\n\n\n\n\n");
     /* If no matching PCB was found, send a TCP RST (reset) to the
        sender. */
     LWIP_DEBUGF(TCP_RST_DEBUG, ("tcp_input: no PCB match found, resetting.\n"));
--- a/lwipopts.h	Mon Aug 19 18:37:54 2013 +0300
+++ b/lwipopts.h	Fri Dec 13 11:39:39 2013 +0000
@@ -70,7 +70,7 @@
 #define LWIP_TCP_KEEPALIVE          1
 
 // Debug Options
-// #define LWIP_DEBUG
+ //#define LWIP_DEBUG
 #define UDP_LPC_EMAC                LWIP_DBG_OFF
 #define SYS_DEBUG                   LWIP_DBG_OFF
 #define PPP_DEBUG                   LWIP_DBG_OFF
@@ -81,7 +81,7 @@
 #define API_LIB_DEBUG               LWIP_DBG_OFF
 #define API_MSG_DEBUG               LWIP_DBG_OFF
 #define TCPIP_DEBUG                 LWIP_DBG_OFF
-#define SOCKETS_DEBUG               LWIP_DBG_OFF
+#define SOCKETS_DEBUG               LWIP_DBG_ON
 #define TCP_DEBUG                   LWIP_DBG_OFF
 #define TCP_INPUT_DEBUG             LWIP_DBG_OFF
 #define TCP_FR_DEBUG                LWIP_DBG_OFF