📄 uip_arch.lst
字号:
C51 COMPILER V7.08 UIP_ARCH 12/26/2003 07:27:16 PAGE 1
C51 COMPILER V7.08, COMPILATION OF MODULE UIP_ARCH
OBJECT MODULE PLACED IN uip_arch.OBJ
COMPILER INVOKED BY: C:\Keil708\C51\BIN\C51.EXE uip_arch.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include "uip.h"
3 #include "uip_arch.h"
4
5 uip_tcpip_hdr * TCPBUF;
6 #define IP_PROTO_TCP 6
7
8
9 /*-----------------------------------------------------------------------------------*/
10 #if UIP_BUFSIZE >= 256
11 /*-----------------------------------------------------------------------------------*/
12 void
13 uip_add_rcv_nxt(u16_t n)
14 {
15 1 uip_conn->rcv_nxt[3] += (n & 0xff);
16 1 uip_conn->rcv_nxt[2] += (n >> 8);
17 1
18 1 if(uip_conn->rcv_nxt[2] < (n >> 8)) {
19 2 ++uip_conn->rcv_nxt[1];
20 2 if(uip_conn->rcv_nxt[1] == 0) {
21 3 ++uip_conn->rcv_nxt[0];
22 3 }
23 2 }
24 1
25 1
26 1 if(uip_conn->rcv_nxt[3] < (n & 0xff)) {
27 2 ++uip_conn->rcv_nxt[2];
28 2 if(uip_conn->rcv_nxt[2] == 0) {
29 3 ++uip_conn->rcv_nxt[1];
30 3 if(uip_conn->rcv_nxt[1] == 0) {
31 4 ++uip_conn->rcv_nxt[0];
32 4 }
33 3 }
34 2 }
35 1 }
36 /*-----------------------------------------------------------------------------------*/
37 void
38 uip_add_ack_nxt(u16_t n)
39 {
40 1 uip_conn->ack_nxt[3] += (n & 0xff);
41 1 uip_conn->ack_nxt[2] += (n >> 8);
42 1
43 1 if(uip_conn->ack_nxt[2] < (n >> 8)) {
44 2 ++uip_conn->ack_nxt[1];
45 2 if(uip_conn->ack_nxt[1] == 0) {
46 3 ++uip_conn->ack_nxt[0];
47 3 }
48 2 }
49 1
50 1
51 1 if(uip_conn->ack_nxt[3] < (n & 0xff)) {
52 2 ++uip_conn->ack_nxt[2];
53 2 if(uip_conn->ack_nxt[2] == 0) {
54 3 ++uip_conn->ack_nxt[1];
55 3 if(uip_conn->ack_nxt[1] == 0) {
C51 COMPILER V7.08 UIP_ARCH 12/26/2003 07:27:16 PAGE 2
56 4 ++uip_conn->ack_nxt[0];
57 4 }
58 3 }
59 2 }
60 1 }
61 /*-----------------------------------------------------------------------------------*/
62 #else /* UIP_BUFSIZE >= 256 */
/*-----------------------------------------------------------------------------------*/
void
uip_add_rcv_nxt(u8_t n)
{
uip_conn->rcv_nxt[3] += n;
if(uip_conn->rcv_nxt[3] < n) {
++uip_conn->rcv_nxt[2];
if(uip_conn->rcv_nxt[2] == 0) {
++uip_conn->rcv_nxt[1];
if(uip_conn->rcv_nxt[1] == 0) {
++uip_conn->rcv_nxt[0];
}
}
}
}
/*-----------------------------------------------------------------------------------*/
void
uip_add_ack_nxt(u8_t n)
{
uip_conn->ack_nxt[3] += n;
if(uip_conn->ack_nxt[3] < n) {
++uip_conn->ack_nxt[2];
if(uip_conn->ack_nxt[2] == 0) {
++uip_conn->ack_nxt[1];
if(uip_conn->ack_nxt[1] == 0) {
++uip_conn->ack_nxt[0];
}
}
}
}
/*-----------------------------------------------------------------------------------*/
#endif /* UIP_BUFSIZE >= 256 */
95 static u16_t
96 chksum(u16_t *sdata, u16_t len)
97 {
98 1 u16_t acc;
99 1
100 1 for(acc = 0; len > 1; len -= 2) {
101 2 acc += *sdata;
102 2 if(acc < *sdata) {
103 3 /* Overflow, so we add the carry to acc (i.e., increase by
104 3 one). */
105 3 ++acc;
106 3 }
107 2 ++sdata;
108 2 }
109 1
110 1 /* add up any odd byte */
111 1 if(len == 1) {
112 2 acc += htons(((u16_t)(*(u8_t *)sdata)) << 8);
113 2 if(acc < htons(((u16_t)(*(u8_t *)sdata)) << 8)) {
114 3 ++acc;
115 3 }
116 2 }
117 1
C51 COMPILER V7.08 UIP_ARCH 12/26/2003 07:27:16 PAGE 3
118 1 return acc;
119 1 }
120 /*-----------------------------------------------------------------------------------*/
121 u16_t
122 uip_ipchksum(void)
123 {
124 1 return chksum((u16_t *)&uip_buf[UIP_LLH_LEN], 20);
125 1 }
126 /*-----------------------------------------------------------------------------------*/
127 u16_t
128 uip_tcpchksum(void)
129 {
130 1 u16_t hsum, sum;
131 1
132 1 TCPBUF = (uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN];
133 1
134 1 /* Compute the checksum of the TCP header. */
135 1 hsum = chksum((u16_t *)&uip_buf[20 + UIP_LLH_LEN], 20);
136 1
137 1 /* Compute the checksum of the data in the TCP packet and add it to
138 1 the TCP header checksum. */
139 1 sum = chksum((u16_t *)uip_appdata,
140 1 (u16_t)(((((u16_t)(TCPBUF->len[0]) << 8) + TCPBUF->len[1]) - 40)));
141 1
142 1 if((sum += hsum) < hsum) {
143 2 ++sum;
144 2 }
145 1
146 1 if((sum += TCPBUF->srcipaddr[0]) < TCPBUF->srcipaddr[0]) {
147 2 ++sum;
148 2 }
149 1 if((sum += TCPBUF->srcipaddr[1]) < TCPBUF->srcipaddr[1]) {
150 2 ++sum;
151 2 }
152 1 if((sum += TCPBUF->destipaddr[0]) < TCPBUF->destipaddr[0]) {
153 2 ++sum;
154 2 }
155 1 if((sum += TCPBUF->destipaddr[1]) < TCPBUF->destipaddr[1]) {
156 2 ++sum;
157 2 }
158 1 if((sum += (u16_t)htons((u16_t)IP_PROTO_TCP)) < (u16_t)htons((u16_t)IP_PROTO_TCP)) {
159 2 ++sum;
160 2 }
161 1
162 1 hsum = (u16_t)htons((((u16_t)(TCPBUF->len[0]) << 8) + TCPBUF->len[1]) - 20);
163 1
164 1 if((sum += hsum) < hsum) {
165 2 ++sum;
166 2 }
167 1
168 1 return sum;
169 1 }
170 /*-----------------------------------------------------------------------------------*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 941 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 3 10
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
C51 COMPILER V7.08 UIP_ARCH 12/26/2003 07:27:16 PAGE 4
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -