⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcp_8c-source.html

📁 Freescale mcu OpenTCP-1.0.4.doc.html.zip 文档
💻 HTML
📖 第 1 页 / 共 5 页
字号:
00710         <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m6">send_unacked</a> == soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a>)00711                 <span class="keywordflow">return</span>(soc-&gt;<a class="code" href="structtcb.html#m9">send_mtu</a>);00712         00713         <span class="keywordflow">return</span>(-1);00714 00715 00716 }00717 00718 00719 <a name="l00736"></a><a class="code" href="tcp_8c.html#a11">00736</a> INT8 <a class="code" href="tcp_8c.html#a11">tcp_abort</a> (INT8 sochandle)00737 {00738         <span class="keyword">struct </span><a class="code" href="structtcb.html">tcb</a>* soc;00739         00740         TCP_DEBUGOUT(<span class="stringliteral">"FUNCTION: tcp_abort\r\n"</span>);00741 00742         <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS &lt; 0 )00743                 <span class="keywordflow">return</span>(-1);00744         00745         <span class="keywordflow">if</span>( NO_OF_TCPSOCKETS == 0 )00746                 <span class="keywordflow">return</span>(-1);00747         00748         <span class="keywordflow">if</span>( sochandle &gt; NO_OF_TCPSOCKETS ) {00749                 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00750                 <span class="keywordflow">return</span>(-1);00751         }00752         00753         <span class="keywordflow">if</span>( sochandle &lt; 0 ) {00754                 TCP_DEBUGOUT(<span class="stringliteral">"Socket handle non-valid\r\n"</span>);00755                 <span class="keywordflow">return</span>(-1);00756         }00757         00758         soc = &amp;tcp_socket[sochandle];           <span class="comment">/* Get referense        */</span>      00759 00760         <span class="keywordflow">switch</span> (soc-&gt;<a class="code" href="structtcb.html#m0">state</a>)     {00761                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a42">TCP_STATE_FREE</a>:00762                         <span class="keywordflow">return</span>(-1);00763                         00764                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a43">TCP_STATE_RESERVED</a>:00765                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>:00766                         <span class="keywordflow">return</span>(sochandle);00767                 00768                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a52">TCP_STATE_TIMED_WAIT</a>:00769                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>:00770                         <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>);00771                         <span class="keywordflow">return</span>(sochandle);00772                 00773                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a47">TCP_STATE_SYN_SENT</a>:00774                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a46">TCP_STATE_SYN_RECEIVED</a>:00775                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a53">TCP_STATE_CONNECTED</a>:00776                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a48">TCP_STATE_FINW1</a>:00777                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a49">TCP_STATE_FINW2</a>:00778                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a50">TCP_STATE_CLOSING</a>:00779                 <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a51">TCP_STATE_LAST_ACK</a>:00780                 00781                         soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_RESET;00782                         <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(sochandle);00783                         <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>);00784                         <span class="keywordflow">return</span>(sochandle);00785                         00786                 <span class="keywordflow">default</span>:00787                         <span class="keywordflow">return</span>(-1);00788         }00789         00790 00791 }00792 00793 00794 <a name="l00808"></a><a class="code" href="tcp_8c.html#a12">00808</a> <span class="keywordtype">void</span> <a class="code" href="group__periodic__functions.html#a4">tcp_poll</a> (<span class="keywordtype">void</span>)00809 {00810         <span class="keyword">struct </span><a class="code" href="structtcb.html">tcb</a>* soc;00811         <span class="keyword">static</span> UINT8 handle = 0;00812         UINT8 i;00813         INT32 temp;00814         UINT8 old_retries;00815         00816         <span class="keywordflow">for</span>(i=0; i &lt; NO_OF_TCPSOCKETS; i++ ) {00817                 00818                 <span class="keywordflow">if</span>(handle &gt; NO_OF_TCPSOCKETS)00819                         handle = 0;00820 00821                 soc = &amp;tcp_socket[handle];00822                 00823                 <span class="keywordflow">switch</span>(soc-&gt;<a class="code" href="structtcb.html#m0">state</a>) {00824                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a42">TCP_STATE_FREE</a>:00825                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a43">TCP_STATE_RESERVED</a>:00826                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a44">TCP_STATE_CLOSED</a>:00827                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a45">TCP_STATE_LISTENING</a>:00828                                 00829                                 <span class="keywordflow">break</span>;00830                                 00831                         <span class="keywordflow">case</span> <a class="code" href="tcp__ip_8h.html#a53">TCP_STATE_CONNECTED</a>:00832                         00833                                 <span class="comment">/* In CONNECTED State we have                                   */</span> 00834                                 <span class="comment">/* something to do only if we have unacked data */</span>00835                                 <span class="comment">/* or if connection has been IDLE too long or   */</span>00836                                 <span class="comment">/* unserved close is isuued by user                             */</span>00837                                 00838                                 <span class="comment">/*if(soc-&gt;send_next &gt; soc-&gt;send_unacked)</span>00839 <span class="comment">                                        temp = soc-&gt;send_next - soc-&gt;send_unacked;</span>00840 <span class="comment">                                else</span>00841 <span class="comment">                                        temp = soc-&gt;send_unacked - soc-&gt;send_next;</span>00842 <span class="comment">                                */</span>00843                                 00844                                 temp = soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a> - soc-&gt;<a class="code" href="structtcb.html#m6">send_unacked</a>;00845                                 00846                                 <span class="comment">/* Unserved Close?                      */</span>00847                                 00848                                 <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m2">flags</a> &amp; TCP_INTFLAGS_CLOSEPENDING) {00849                                         <span class="comment">/* Can we send the close now    */</span>00850                                         00851                                         <span class="keywordflow">if</span>(temp == 0) {00852                                                 soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_ACK | TCP_FLAG_FIN;00853                                                 soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a>++;00854                                                 <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(handle);00855                                                 <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a48">TCP_STATE_FINW1</a>);     00856                                                 soc-&gt;<a class="code" href="structtcb.html#m2">flags</a> ^= TCP_INTFLAGS_CLOSEPENDING;00857                                                 00858                                                 handle++;00859                                                 00860                                                 <span class="keywordflow">return</span>;         00861                                                 00862                                         }00863                                 }00864                                 00865                                 <span class="comment">/* Socket timeout?                      */</span>00866                                 00867                                 <span class="keywordflow">if</span>(<a class="code" href="timers_8c.html#a7">check_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m13">persist_timerh</a>) == 0) {00868                                 00869                                         soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_ACK | TCP_FLAG_FIN;00870                                         soc-&gt;<a class="code" href="structtcb.html#m8">send_next</a>++;00871                                         <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(handle);00872                                         <a class="code" href="tcp_8c.html#a20">tcp_newstate</a>(soc, <a class="code" href="tcp__ip_8h.html#a48">TCP_STATE_FINW1</a>);     00873                                         00874                                         <span class="comment">/* Inform application   */</span>00875                                         00876                                         soc-&gt;<a class="code" href="structtcb.html#m16">event_listener</a>(handle, <a class="code" href="tcp__ip_8h.html#a56">TCP_EVENT_CLOSE</a>, soc-&gt;<a class="code" href="structtcb.html#m3">rem_ip</a>, soc-&gt;<a class="code" href="structtcb.html#m4">remport</a>);00877                                         00878                                         handle++;00879                 00880                                         <span class="keywordflow">return</span>;                 00881                                 }       00882                                 00883                                 <span class="comment">/* Is there unacked data?       */</span>00884                                 00885                                 <span class="keywordflow">if</span>(temp == 0)00886                                         <span class="keywordflow">break</span>;00887                                 00888                                 <span class="comment">/* Is there timeout?                                    */</span>00889                                 00890                                 <span class="keywordflow">if</span>( <a class="code" href="timers_8c.html#a7">check_timer</a>(soc-&gt;<a class="code" href="structtcb.html#m14">retransmit_timerh</a>) != 0 )00891                                         <span class="keywordflow">break</span>;00892                                 00893                                 <span class="comment">/* De we have retries left                              */</span>00894                                 00895                                 <span class="keywordflow">if</span>(soc-&gt;<a class="code" href="structtcb.html#m15">retries_left</a> == 0) {00896                                         <span class="comment">/* No retries, must reset       */</span>00897                                         00898                                         TCP_DEBUGOUT(<span class="stringliteral">"Retries used up, resetting\r\n"</span>);00899                                         00900                                         soc-&gt;<a class="code" href="structtcb.html#m7">myflags</a> = TCP_FLAG_RESET;00901                                         <a class="code" href="tcp_8c.html#a16">tcp_sendcontrol</a>(handle);00902                                         00903                                         <span class="comment">/* Inform application   */</span>00904 00905                                         soc-&gt;<a class="code" href="structtcb.html#m16">event_listener</a>(handle, <a class="code" href="tcp__ip_8h.html#a57">TCP_EVENT_ABORT</a>, soc-&gt;<a class="code" href="structtcb.html#m3">rem_ip</a>, soc-&gt;<a class="code" href="structtcb.html#m4">remport</a>);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -