📄 net_8c-source.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 Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="dirs.html">Directories</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</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 <inttypes.h></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 00021 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> IpMyAddress;00022 <a name="l00023"></a><a class="code" href="group__net.html#ga2">00023</a> uint16_t <a class="code" href="group__net.html#ga2">htons</a>(uint16_t val)00024 {00025 <span class="keywordflow">return</span> (val<<8) | (val>>8);00026 }00027 <a name="l00028"></a><a class="code" href="group__net.html#ga3">00028</a> uint32_t <a class="code" href="group__net.html#ga3">htonl</a>(uint32_t val)00029 {00030 <span class="keywordflow">return</span> (<a class="code" href="group__net.html#ga2">htons</a>(val>>16) | (uint32_t)<a class="code" href="group__net.html#ga2">htons</a>(val&0x0000FFFF)<<16);00031 }00032 00033 <a name="l00034"></a><a class="code" href="group__net.html#ga7">00034</a> uint16_t <a class="code" href="group__net.html#ga7">netChecksum</a>(<span class="keywordtype">void</span> *data, uint16_t len)00035 {00036 <span class="keyword">register</span> uint32_t sum = 0;00037 00038 <span class="keywordflow">for</span> (;;) {00039 <span class="keywordflow">if</span> (len < 2)00040 <span class="keywordflow">break</span>;00041 <span class="comment">//sum += *((uint16_t *)data)++;</span>00042 sum += *((uint16_t *)data);00043 data+=2;00044 len -= 2;00045 }00046 <span class="keywordflow">if</span> (len)00047 sum += *(uint8_t *) data;00048 00049 <span class="keywordflow">while</span> ((len = (uint16_t) (sum >> 16)) != 0)00050 sum = (uint16_t) sum + len;00051 00052 <span class="keywordflow">return</span> (uint16_t) sum ^ 0xFFFF;00053 }00054 <a name="l00055"></a><a class="code" href="group__net.html#ga4">00055</a> <span class="keywordtype">void</span> <a class="code" href="group__net.html#ga4">netPrintEthAddr</a>(<span class="keyword">struct</span> netEthAddr* ethaddr)00056 {00057 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr->addr[0]);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->addr[1]);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->addr[2]);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->addr[3]);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->addr[4]);00066 <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(<span class="charliteral">':'</span>);00067 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ethaddr->addr[5]);00068 }00069 <a name="l00070"></a><a class="code" href="group__net.html#ga5">00070</a> <span class="keywordtype">void</span> <a class="code" href="group__net.html#ga5">netPrintIPAddr</a>(uint32_t ipaddr)00071 {00072 rprintf(<span class="stringliteral">"%d.%d.%d.%d"</span>,00073 ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&ipaddr)[3],00074 ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&ipaddr)[2],00075 ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&ipaddr)[1],00076 ((<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span>*)&ipaddr)[0]);00077 }00078 <a name="l00079"></a><a class="code" href="group__net.html#ga6">00079</a> <span class="keywordtype">void</span> <a class="code" href="group__net.html#ga6">netPrintEthHeader</a>(<span class="keyword">struct</span> netEthHeader* eth_hdr)00080 {00081 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Eth Packet Type: 0x"</span>);00082 <a class="code" href="group__rprintf.html#ga8">rprintfu16</a>(eth_hdr->type);00083 00084 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" SRC:"</span>);00085 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->src.addr[0]);00086 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->src.addr[1]);00087 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->src.addr[2]);00088 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->src.addr[3]);00089 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->src.addr[4]);00090 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->src.addr[5]);00091 00092 <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"->DST:"</span>);00093 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->dest.addr[0]);00094 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->dest.addr[1]);00095 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->dest.addr[2]);00096 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->dest.addr[3]);00097 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->dest.addr[4]);00098 <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(eth_hdr->dest.addr[5]);00099 <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00100 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Aug 22 04:29:27 2005 for Procyon AVRlib by <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 + -