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

📄 net_8c-source.html

📁 国外牛人公开的AVR代码
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Procyon AVRlib: net/net.c Source File</title><link href="dox.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.4.2 --><div class="qindex"><a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div><div class="nav"><a class="el" href="dir_000001.html">net</a></div><h1>net.c</h1><a href="net_8c.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/*! \file net.c \brief Network support library. */</span>00002 <span class="comment">//*****************************************************************************</span>00003 <span class="comment">//</span>00004 <span class="comment">// File Name    : 'net.c'</span>00005 <span class="comment">// Title        : Network support library</span>00006 <span class="comment">// Author       : Pascal Stang</span>00007 <span class="comment">// Created      : 8/30/2004</span>00008 <span class="comment">// Revised      : 7/3/2005</span>00009 <span class="comment">// Version      : 0.1</span>00010 <span class="comment">// Target MCU   : Atmel AVR series</span>00011 <span class="comment">// Editor Tabs  : 4</span>00012 <span class="comment">//</span>00013 <span class="comment">//*****************************************************************************</span>00014 00015 <span class="preprocessor">#include &lt;inttypes.h&gt;</span>00016 <span class="preprocessor">#include "<a class="code" href="global_8h.html">global.h</a>"</span>00017 <span class="preprocessor">#include "<a class="code" href="rprintf_8h.html">rprintf.h</a>"</span>00018 00019 <span class="preprocessor">#include "<a class="code" href="net_8h.html">net.h</a>"</span>00020 <a name="l00021"></a><a class="code" href="group__net.html#ga2">00021</a> uint16_t <a class="code" href="group__net.html#ga2">htons</a>(uint16_t val)00022 {00023     <span class="keywordflow">return</span> (val&lt;&lt;8) | (val&gt;&gt;8);00024 }00025 <a name="l00026"></a><a class="code" href="group__net.html#ga3">00026</a> uint32_t <a class="code" href="group__net.html#ga3">htonl</a>(uint32_t val)00027 {00028     <span class="keywordflow">return</span> (<a class="code" href="group__net.html#ga2">htons</a>(val&gt;&gt;16) | (uint32_t)<a class="code" href="group__net.html#ga2">htons</a>(val&amp;0x0000FFFF)&lt;&lt;16);00029 }00030 00031 <a name="l00032"></a><a class="code" href="group__net.html#ga4">00032</a> uint16_t <a class="code" href="group__net.html#ga4">netChecksum</a>(<span class="keywordtype">void</span> *data, uint16_t len)00033 {00034     <span class="keyword">register</span> uint32_t sum = 0;00035 00036     <span class="keywordflow">for</span> (;;) {00037         <span class="keywordflow">if</span> (len &lt; 2)00038             <span class="keywordflow">break</span>;00039         <span class="comment">//sum += *((uint16_t *)data)++;</span>00040         sum += *((uint16_t *)data);00041         data+=2;00042         len -= 2;00043     }00044     <span class="keywordflow">if</span> (len)00045         sum += *(uint8_t *) data;00046 00047     <span class="keywordflow">while</span> ((len = (uint16_t) (sum &gt;&gt; 16)) != 0)00048         sum = (uint16_t) sum + len;00049 00050     <span class="keywordflow">return</span> (uint16_t) sum ^ 0xFFFF;00051 }00052 <a name="l00053"></a><a class="code" href="group__net.html#ga5">00053</a> <span class="keywordtype">void</span> <a class="code" href="group__net.html#ga5">netPrintEthAddr</a>(<span class="keyword">struct</span> netEthAddr* ethaddr)00054 {00055     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[0]);00056     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);00057     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[1]);00058     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);00059     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[2]);00060     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);00061     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[3]);00062     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);00063     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[4]);00064     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);00065     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr-&gt;addr[5]);00066 }00067 <a name="l00068"></a><a class="code" href="group__net.html#ga6">00068</a> <span class="keywordtype">void</span> <a class="code" href="group__net.html#ga6">netPrintIPAddr</a>(uint32_t ipaddr)00069 {00070     rprintf(<span class="stringliteral">"%d.%d.%d.%d"</span>,00071         ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&amp;ipaddr)[3],00072         ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&amp;ipaddr)[2],00073         ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&amp;ipaddr)[1],00074         ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&amp;ipaddr)[0]);00075 }00076 00077 <span class="comment">/*</span>00078 <span class="comment">void netPrintEthHeader(struct netEthHeader* eth_hdr)</span>00079 <span class="comment">{</span>00080 <span class="comment">    rprintfProgStrM("Eth Packet Type: 0x");</span>00081 <span class="comment">    rprintfu16(eth_hdr-&gt;type);</span>00082 <span class="comment"></span>00083 <span class="comment">    rprintfProgStrM(" SRC:");</span>00084 <span class="comment">    netPrintEthAddr(&amp;eth_hdr-&gt;src);</span>00085 <span class="comment">    rprintfProgStrM("-&gt;DST:");</span>00086 <span class="comment">    netPrintEthAddr(&amp;eth_hdr-&gt;dest);</span>00087 <span class="comment">    rprintfCRLF();</span>00088 <span class="comment">}</span>00089 <span class="comment"></span>00090 <span class="comment">void netPrintIpHeader(struct netIpHeader* ipheader)</span>00091 <span class="comment">{</span>00092 <span class="comment">    rprintfProgStrM("IP Header\r\n");</span>00093 <span class="comment">    rprintf("Ver     : %d\r\n", (ipheader-&gt;vhl)&gt;&gt;4);</span>00094 <span class="comment">    rprintf("Length  : %d\r\n", htons(ipheader-&gt;len));</span>00095 <span class="comment">    if(ipheader-&gt;proto == IP_PROTO_ICMP)</span>00096 <span class="comment">        rprintfProgStrM("Protocol: ICMP\r\n");</span>00097 <span class="comment">    else if(ipheader-&gt;proto == IP_PROTO_TCP)</span>00098 <span class="comment">        rprintfProgStrM("Protocol: TCP\r\n");</span>00099 <span class="comment">    else if(ipheader-&gt;proto == IP_PROTO_UDP)</span>00100 <span class="comment">        rprintfProgStrM("Protocol: UDP\r\n");</span>00101 <span class="comment">    else</span>00102 <span class="comment">        rprintf("Protocol: %d\r\n", ipheader-&gt;proto);</span>00103 <span class="comment">    </span>00104 <span class="comment">    rprintfProgStrM("SourceIP: "); netPrintIPAddr(htonl(ipheader-&gt;srcipaddr));  rprintfCRLF();</span>00105 <span class="comment">    rprintfProgStrM("Dest  IP: "); netPrintIPAddr(htonl(ipheader-&gt;destipaddr)); rprintfCRLF();</span>00106 <span class="comment">}</span>00107 <span class="comment"></span>00108 <span class="comment">void netPrintTcpHeader(struct netTcpHeader* tcpheader)</span>00109 <span class="comment">{</span>00110 <span class="comment">    rprintfProgStrM("TCP Header\r\n");</span>00111 <span class="comment">    rprintf("Src Port: %d\r\n", htons(tcpheader-&gt;srcport));</span>00112 <span class="comment">    rprintf("Dst Port: %d\r\n", htons(tcpheader-&gt;destport));</span>00113 <span class="comment">    rprintfProgStrM("Seq Num : 0x"); rprintfu32(htonl(tcpheader-&gt;seqno));   rprintfCRLF();</span>00114 <span class="comment">    rprintfProgStrM("Ack Num : 0x"); rprintfu32(htonl(tcpheader-&gt;ackno));   rprintfCRLF();</span>00115 <span class="comment">    rprintfProgStrM("Flags   : ");</span>00116 <span class="comment">    if(tcpheader-&gt;flags &amp; TCP_FLAGS_FIN)</span>00117 <span class="comment">        rprintfProgStrM("FIN ");</span>00118 <span class="comment">    if(tcpheader-&gt;flags &amp; TCP_FLAGS_SYN)</span>00119 <span class="comment">        rprintfProgStrM("SYN ");</span>00120 <span class="comment">    if(tcpheader-&gt;flags &amp; TCP_FLAGS_RST)</span>00121 <span class="comment">        rprintfProgStrM("RST ");</span>00122 <span class="comment">    if(tcpheader-&gt;flags &amp; TCP_FLAGS_PSH)</span>00123 <span class="comment">        rprintfProgStrM("PSH ");</span>00124 <span class="comment">    if(tcpheader-&gt;flags &amp; TCP_FLAGS_ACK)</span>00125 <span class="comment">        rprintfProgStrM("ACK ");</span>00126 <span class="comment">    if(tcpheader-&gt;flags &amp; TCP_FLAGS_URG)</span>00127 <span class="comment">        rprintfProgStrM("URG ");</span>00128 <span class="comment">    rprintfCRLF();</span>00129 <span class="comment">}</span>00130 <span class="comment">*/</span>00131 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Oct 24 16:03:55 2005 for Procyon AVRlib by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address></body></html>

⌨️ 快捷键说明

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