?? uip_arch.lst
字號:
C51 COMPILER V7.06 UIP_ARCH 04/05/2006 12:13:01 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE UIP_ARCH
OBJECT MODULE PLACED IN .\DEBUG\uip_arch.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE uip\uip_arch.c LARGE OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND PRINT(.\DE
-BUG\uip_arch.lst) OBJECT(.\DEBUG\uip_arch.obj)
stmt level source
1
2 #include "uip.h"
3 #include "uip_arch.h"
4
5 #define BUF ((uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
6 #define IP_PROTO_TCP 6
7
8 /*-----------------------------------------------------------------------------------*/
9 #if UIP_BUFSIZE > 255
/*-----------------------------------------------------------------------------------*/
void
uip_add_rcv_nxt(u16_t n)
{
uip_conn->rcv_nxt[3] += (n & 0xff);
uip_conn->rcv_nxt[2] += (n >> 8);
if(uip_conn->rcv_nxt[2] < (n >> 8)) {
++uip_conn->rcv_nxt[1];
if(uip_conn->rcv_nxt[1] == 0) {
++uip_conn->rcv_nxt[0];
}
}
if(uip_conn->rcv_nxt[3] < (n & 0xff)) {
++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(u16_t n)
{
uip_conn->ack_nxt[3] += (n & 0xff);
uip_conn->ack_nxt[2] += (n >> 8);
if(uip_conn->ack_nxt[2] < (n >> 8)) {
++uip_conn->ack_nxt[1];
if(uip_conn->ack_nxt[1] == 0) {
++uip_conn->ack_nxt[0];
}
}
if(uip_conn->ack_nxt[3] < (n & 0xff)) {
++uip_conn->ack_nxt[2];
if(uip_conn->ack_nxt[2] == 0) {
++uip_conn->ack_nxt[1];
if(uip_conn->ack_nxt[1] == 0) {
C51 COMPILER V7.06 UIP_ARCH 04/05/2006 12:13:01 PAGE 2
++uip_conn->ack_nxt[0];
}
}
}
}
/*-----------------------------------------------------------------------------------*/
#else /* UIP_BUFSIZE > 255 */
62 /*-----------------------------------------------------------------------------------*/
63 void
64 uip_add_rcv_nxt(u8_t n)
65 {
66 1 uip_conn->rcv_nxt[3] += n;
67 1 if(uip_conn->rcv_nxt[3] < n) {
68 2 ++uip_conn->rcv_nxt[2];
69 2 if(uip_conn->rcv_nxt[2] == 0) {
70 3 ++uip_conn->rcv_nxt[1];
71 3 if(uip_conn->rcv_nxt[1] == 0) {
72 4 ++uip_conn->rcv_nxt[0];
73 4 }
74 3 }
75 2 }
76 1 }
77 /*-----------------------------------------------------------------------------------*/
78 void
79 uip_add_ack_nxt(u8_t n)
80 {
81 1 uip_conn->ack_nxt[3] += n;
82 1 if(uip_conn->ack_nxt[3] < n) {
83 2 ++uip_conn->ack_nxt[2];
84 2 if(uip_conn->ack_nxt[2] == 0) {
85 3 ++uip_conn->ack_nxt[1];
86 3 if(uip_conn->ack_nxt[1] == 0) {
87 4 ++uip_conn->ack_nxt[0];
88 4 }
89 3 }
90 2 }
91 1 }
92 /*-----------------------------------------------------------------------------------*/
93 #endif /* UIP_BUFSIZE > 255 */
94 static u16_t
95 chksum(u16_t *sdata, u16_t len)
96 {
97 1 u16_t acc;
98 1
99 1 for(acc = 0; len > 1; len -= 2) {
100 2 acc += *sdata;
101 2 if(acc < *sdata) {
102 3 /* Overflow, so we add the carry to acc (i.e., increase by
103 3 one). */
104 3 ++acc;
105 3 }
106 2 ++sdata;
107 2 }
108 1
109 1 /* add up any odd byte */
110 1 if(len == 1) {
111 2 acc += htons(((u16_t)(*(u8_t *)sdata)) << 8);
112 2 if(acc < htons(((u16_t)(*(u8_t *)sdata)) << 8)) {
113 3 ++acc;
114 3 }
115 2 }
116 1
C51 COMPILER V7.06 UIP_ARCH 04/05/2006 12:13:01 PAGE 3
117 1 return acc;
118 1 }
119 /*-----------------------------------------------------------------------------------*/
120 u16_t
121 uip_ipchksum(void)
122 {
123 1 return chksum((u16_t *)&uip_buf[UIP_LLH_LEN], 20);
124 1 }
125 /*-----------------------------------------------------------------------------------*/
126 u16_t
127 uip_tcpchksum(void)
128 {
129 1 u16_t hsum, sum;
130 1
131 1
132 1 /* Compute the checksum of the TCP header. */
133 1 hsum = chksum((u16_t *)&uip_buf[20 + UIP_LLH_LEN], 20);
134 1
135 1 /* Compute the checksum of the data in the TCP packet and add it to
136 1 the TCP header checksum. */
137 1 sum = chksum((u16_t *)uip_appdata,
138 1 (u16_t)(((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 40)));
139 1
140 1 if((sum += hsum) < hsum) {
141 2 ++sum;
142 2 }
143 1
144 1 if((sum += BUF->srcipaddr[0]) < BUF->srcipaddr[0]) {
145 2 ++sum;
146 2 }
147 1 if((sum += BUF->srcipaddr[1]) < BUF->srcipaddr[1]) {
148 2 ++sum;
149 2 }
150 1 if((sum += BUF->destipaddr[0]) < BUF->destipaddr[0]) {
151 2 ++sum;
152 2 }
153 1 if((sum += BUF->destipaddr[1]) < BUF->destipaddr[1]) {
154 2 ++sum;
155 2 }
156 1 if((sum += (u16_t)htons((u16_t)IP_PROTO_TCP)) < (u16_t)htons((u16_t)IP_PROTO_TCP)) {
157 2 ++sum;
158 2 }
159 1
160 1 hsum = (u16_t)htons((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 20);
161 1
162 1 if((sum += hsum) < hsum) {
163 2 ++sum;
164 2 }
165 1
166 1 return sum;
167 1 }
168 /*-----------------------------------------------------------------------------------*/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 613 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 4
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
C51 COMPILER V7.06 UIP_ARCH 04/05/2006 12:13:01 PAGE 4
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -