Ryo Iizuka / libMiMic

Dependents:   MbedFileServer_1768MiniDK2 RedWireBridge IssueDebug_gcc MiMicRemoteMCU-for-Mbed ... more

Revision:
43:a182f2b5ff41
Parent:
37:fc4b4fd6a649
Child:
57:bc4330dfa62f
--- a/core/uip/NyLPC_cTcpSocket.c	Thu Jul 04 11:05:56 2013 +0000
+++ b/core/uip/NyLPC_cTcpSocket.c	Tue Jul 09 12:07:17 2013 +0000
@@ -346,9 +346,9 @@
 }
 
 
-NyLPC_TBool NyLPC_cTcpSocket_setSynPayload(NyLPC_TcTcpSocket_t* i_inst,const NyLPC_TcIPv4Payload_t* i_ipp)
+
+NyLPC_TBool NyLPC_cTcpSocket_listenSyn(NyLPC_TcTcpSocket_t* i_inst,const struct NyLPC_TTcpSocketSynParam* i_lq,NyLPC_TUInt16 i_lport)
 {
-    NyLPC_TUInt16 tmp16;
 //  NyLPC_Assert(NyLPC_cMutex_isLocked(i_inst->_smutex));
     lockResource(i_inst);
     //ソケットが無効であること。
@@ -357,16 +357,16 @@
         //localipとdefault_mmsは別枠で設定
         /* Fill in the necessary fields for the new connection. */
         i_inst->uip_connr.current_rto32 = UIP_IP_RTOP_INITIAL;
-        i_inst->uip_connr.lport = i_ipp->payload.tcp->destport;
-        i_inst->uip_connr.rport = i_ipp->payload.tcp->srcport;
-        i_inst->uip_connr.ripaddr=i_ipp->header->srcipaddr;
+        i_inst->uip_connr.lport = i_lport;
+        i_inst->uip_connr.rport = i_lq->rport;
+        i_inst->uip_connr.ripaddr=i_lq->srcaddr;
         i_inst->uip_connr.snd_nxt32=iss32;
         /* rcv_nxt should be the seqno from the incoming packet + 1. */
-        i_inst->uip_connr.rcv_nxt32= NyLPC_ntohl(i_ipp->payload.tcp->seqno32)+1;
+        i_inst->uip_connr.rcv_nxt32= i_lq->rcv_nxt32;
         //MSSの設定
         i_inst->uip_connr.peer_mss=i_inst->uip_connr.default_mss;
-        if(NyLPC_TTcpHeader_getTcpMmsOpt(i_ipp->payload.tcp,&tmp16)){
-            i_inst->uip_connr.peer_mss=tmp16;
+        if(i_lq->mss!=0){
+            i_inst->uip_connr.peer_mss=i_lq->mss;
         }
         i_inst->uip_connr.peer_win=0;
         NyLPC_cFifoBuffer_clear(&(i_inst->rxbuf));
@@ -383,6 +383,8 @@
     unlockResource(i_inst);
     return NyLPC_TBool_FALSE;
 }
+
+
 /**
  * sq番のTxがキューから消え去るのを待ちます。
  * この関数は、アンロック状態でコールしてください。
@@ -1036,7 +1038,6 @@
     NyLPC_cStopwatch_finalize(&sw);
     return;
 }
-void led(int i);
 /**
  * uipサービスタスクが実行する関数です。
  * サービスの開始を通知します。
@@ -1044,7 +1045,7 @@
 void NyLPC_cTcpSocket_startService(NyLPC_TcTcpSocket_t* i_inst,const NyLPC_TcIPv4Config_t* i_config)
 {
     NyLPC_Assert(i_inst->tcpstateflags==UIP_CLOSED);//閉じてなければおかしい。
-    i_inst->uip_connr.lipaddr=&(i_config->ip_addr); 
+    i_inst->uip_connr.lipaddr=&(i_config->ip_addr);
     i_inst->uip_connr.default_mss=i_config->default_mss;
     //NyLPC_cTcpSocket_setSynPayload関数でも実行するけど、IFのリセット時なのでここでもやる。
     NyLPC_cFifoBuffer_clear(&(i_inst->rxbuf));