Przeglądaj źródła

Add uip on HEAD; it's safe to build, since nothing links against it at the

moment.
tags/v0.9.3
Michael Brown 19 lat temu
rodzic
commit
0e611719d2
5 zmienionych plików z 3253 dodań i 0 usunięć
  1. 1
    0
      src/Makefile
  2. 1504
    0
      src/proto/uip/uip.c
  3. 1060
    0
      src/proto/uip/uip.h
  4. 130
    0
      src/proto/uip/uip_arch.h
  5. 558
    0
      src/proto/uip/uipopt.h

+ 1
- 0
src/Makefile Wyświetl plik

@@ -131,6 +131,7 @@ DEBUG_TARGETS	+= dbg2.o dbg.o c s
131 131
 #
132 132
 SRCDIRS		+= core
133 133
 SRCDIRS		+= proto
134
+SRCDIRS		+= proto/uip
134 135
 #SRCDIRS		+= image
135 136
 SRCDIRS		+= drivers/bus
136 137
 SRCDIRS		+= drivers/net

+ 1504
- 0
src/proto/uip/uip.c
Plik diff jest za duży
Wyświetl plik


+ 1060
- 0
src/proto/uip/uip.h
Plik diff jest za duży
Wyświetl plik


+ 130
- 0
src/proto/uip/uip_arch.h Wyświetl plik

@@ -0,0 +1,130 @@
1
+/**
2
+ * \defgroup uiparch Architecture specific uIP functions
3
+ * @{
4
+ *
5
+ * The functions in the architecture specific module implement the IP
6
+ * check sum and 32-bit additions.
7
+ *
8
+ * The IP checksum calculation is the most computationally expensive
9
+ * operation in the TCP/IP stack and it therefore pays off to
10
+ * implement this in efficient assembler. The purpose of the uip-arch
11
+ * module is to let the checksum functions to be implemented in
12
+ * architecture specific assembler.
13
+ *
14
+ */
15
+
16
+/**
17
+ * \file
18
+ * Declarations of architecture specific functions.
19
+ * \author Adam Dunkels <adam@dunkels.com>
20
+ */
21
+
22
+/*
23
+ * Copyright (c) 2001, Adam Dunkels.
24
+ * All rights reserved. 
25
+ *
26
+ * Redistribution and use in source and binary forms, with or without 
27
+ * modification, are permitted provided that the following conditions 
28
+ * are met: 
29
+ * 1. Redistributions of source code must retain the above copyright 
30
+ *    notice, this list of conditions and the following disclaimer. 
31
+ * 2. Redistributions in binary form must reproduce the above copyright 
32
+ *    notice, this list of conditions and the following disclaimer in the 
33
+ *    documentation and/or other materials provided with the distribution. 
34
+ * 3. The name of the author may not be used to endorse or promote
35
+ *    products derived from this software without specific prior
36
+ *    written permission.  
37
+ *
38
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
39
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
40
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
41
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
42
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
43
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
44
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
45
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
46
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
47
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
48
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
49
+ *
50
+ * This file is part of the uIP TCP/IP stack.
51
+ *
52
+ * $Id$
53
+ *
54
+ */
55
+
56
+#ifndef __UIP_ARCH_H__
57
+#define __UIP_ARCH_H__
58
+
59
+#include "uip.h"
60
+
61
+/**
62
+ * Carry out a 32-bit addition.
63
+ *
64
+ * Because not all architectures for which uIP is intended has native
65
+ * 32-bit arithmetic, uIP uses an external C function for doing the
66
+ * required 32-bit additions in the TCP protocol processing. This
67
+ * function should add the two arguments and place the result in the
68
+ * global variable uip_acc32.
69
+ *
70
+ * \note The 32-bit integer pointed to by the op32 parameter and the
71
+ * result in the uip_acc32 variable are in network byte order (big
72
+ * endian).
73
+ *
74
+ * \param op32 A pointer to a 4-byte array representing a 32-bit
75
+ * integer in network byte order (big endian).
76
+ *
77
+ * \param op16 A 16-bit integer in host byte order.
78
+ */
79
+void uip_add32(u8_t *op32, u16_t op16);
80
+
81
+/**
82
+ * Calculate the Internet checksum over a buffer.
83
+ *
84
+ * The Internet checksum is the one's complement of the one's
85
+ * complement sum of all 16-bit words in the buffer.
86
+ *
87
+ * See RFC1071.
88
+ *
89
+ * \note This function is not called in the current version of uIP,
90
+ * but future versions might make use of it.
91
+ *
92
+ * \param buf A pointer to the buffer over which the checksum is to be
93
+ * computed.
94
+ *
95
+ * \param len The length of the buffer over which the checksum is to
96
+ * be computed.
97
+ *
98
+ * \return The Internet checksum of the buffer.
99
+ */
100
+u16_t uip_chksum(u16_t *buf, u16_t len);
101
+
102
+/**
103
+ * Calculate the IP header checksum of the packet header in uip_buf.
104
+ *
105
+ * The IP header checksum is the Internet checksum of the 20 bytes of
106
+ * the IP header.
107
+ *
108
+ * \return The IP header checksum of the IP header in the uip_buf
109
+ * buffer.
110
+ */
111
+u16_t uip_ipchksum(void);
112
+
113
+/**
114
+ * Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
115
+ *
116
+ * The TCP checksum is the Internet checksum of data contents of the
117
+ * TCP segment, and a pseudo-header as defined in RFC793.
118
+ *
119
+ * \note The uip_appdata pointer that points to the packet data may
120
+ * point anywhere in memory, so it is not possible to simply calculate
121
+ * the Internet checksum of the contents of the uip_buf buffer.
122
+ *
123
+ * \return The TCP checksum of the TCP segment in uip_buf and pointed
124
+ * to by uip_appdata.
125
+ */
126
+u16_t uip_tcpchksum(void);
127
+
128
+/** @} */
129
+
130
+#endif /* __UIP_ARCH_H__ */

+ 558
- 0
src/proto/uip/uipopt.h Wyświetl plik

@@ -0,0 +1,558 @@
1
+/**
2
+ * \defgroup uipopt Configuration options for uIP
3
+ * @{
4
+ *
5
+ * uIP is configured using the per-project configuration file
6
+ * "uipopt.h". This file contains all compile-time options for uIP and
7
+ * should be tweaked to match each specific project. The uIP
8
+ * distribution contains a documented example "uipopt.h" that can be
9
+ * copied and modified for each project.
10
+ */
11
+
12
+/**
13
+ * \file
14
+ * Configuration options for uIP.
15
+ * \author Adam Dunkels <adam@dunkels.com>
16
+ *
17
+ * This file is used for tweaking various configuration options for
18
+ * uIP. You should make a copy of this file into one of your project's
19
+ * directories instead of editing this example "uipopt.h" file that
20
+ * comes with the uIP distribution.
21
+ */
22
+
23
+/*
24
+ * Copyright (c) 2001-2003, Adam Dunkels.
25
+ * All rights reserved. 
26
+ *
27
+ * Redistribution and use in source and binary forms, with or without 
28
+ * modification, are permitted provided that the following conditions 
29
+ * are met: 
30
+ * 1. Redistributions of source code must retain the above copyright 
31
+ *    notice, this list of conditions and the following disclaimer. 
32
+ * 2. Redistributions in binary form must reproduce the above copyright 
33
+ *    notice, this list of conditions and the following disclaimer in the 
34
+ *    documentation and/or other materials provided with the distribution. 
35
+ * 3. The name of the author may not be used to endorse or promote
36
+ *    products derived from this software without specific prior
37
+ *    written permission.  
38
+ *
39
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
40
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
41
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
42
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
43
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
44
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
45
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
46
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
47
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
48
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
49
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
50
+ *
51
+ * This file is part of the uIP TCP/IP stack.
52
+ *
53
+ * $Id$
54
+ *
55
+ */
56
+
57
+#ifndef __UIPOPT_H__
58
+#define __UIPOPT_H__
59
+
60
+/*------------------------------------------------------------------------------*/
61
+/**
62
+ * \defgroup uipopttypedef uIP type definitions
63
+ * @{
64
+ */
65
+
66
+/**
67
+ * The 8-bit unsigned data type.
68
+ *
69
+ * This may have to be tweaked for your particular compiler. "unsigned
70
+ * char" works for most compilers.
71
+ */
72
+typedef unsigned char u8_t;
73
+
74
+/**
75
+ * The 16-bit unsigned data type.
76
+ *
77
+ * This may have to be tweaked for your particular compiler. "unsigned
78
+ * short" works for most compilers.
79
+ */
80
+typedef unsigned short u16_t;
81
+
82
+/**
83
+ * The statistics data type.
84
+ *
85
+ * This datatype determines how high the statistics counters are able
86
+ * to count.
87
+ */
88
+typedef unsigned short uip_stats_t;
89
+
90
+/** @} */
91
+
92
+/*------------------------------------------------------------------------------*/
93
+
94
+/**
95
+ * \defgroup uipoptstaticconf Static configuration options
96
+ * @{
97
+ *
98
+ * These configuration options can be used for setting the IP address
99
+ * settings statically, but only if UIP_FIXEDADDR is set to 1. The
100
+ * configuration options for a specific node includes IP address,
101
+ * netmask and default router as well as the Ethernet address. The
102
+ * netmask, default router and Ethernet address are appliciable only
103
+ * if uIP should be run over Ethernet.
104
+ *
105
+ * All of these should be changed to suit your project.
106
+*/
107
+
108
+/**
109
+ * Determines if uIP should use a fixed IP address or not.
110
+ *
111
+ * If uIP should use a fixed IP address, the settings are set in the
112
+ * uipopt.h file. If not, the macros uip_sethostaddr(),
113
+ * uip_setdraddr() and uip_setnetmask() should be used instead.
114
+ *
115
+ * \hideinitializer
116
+ */
117
+#define UIP_FIXEDADDR    1
118
+
119
+/**
120
+ * Ping IP address asignment.
121
+ *
122
+ * uIP uses a "ping" packets for setting its own IP address if this
123
+ * option is set. If so, uIP will start with an empty IP address and
124
+ * the destination IP address of the first incoming "ping" (ICMP echo)
125
+ * packet will be used for setting the hosts IP address.
126
+ *
127
+ * \note This works only if UIP_FIXEDADDR is 0.
128
+ *
129
+ * \hideinitializer
130
+ */
131
+#define UIP_PINGADDRCONF 0
132
+
133
+#define UIP_IPADDR0     192 /**< The first octet of the IP address of
134
+			       this uIP node, if UIP_FIXEDADDR is
135
+			       1. \hideinitializer */
136
+#define UIP_IPADDR1     168 /**< The second octet of the IP address of
137
+			       this uIP node, if UIP_FIXEDADDR is
138
+			       1. \hideinitializer */
139
+#define UIP_IPADDR2     0   /**< The third octet of the IP address of
140
+			       this uIP node, if UIP_FIXEDADDR is
141
+			       1. \hideinitializer */
142
+#define UIP_IPADDR3     2   /**< The fourth octet of the IP address of
143
+			       this uIP node, if UIP_FIXEDADDR is
144
+			       1. \hideinitializer */
145
+
146
+#define UIP_NETMASK0    255 /**< The first octet of the netmask of
147
+			       this uIP node, if UIP_FIXEDADDR is
148
+			       1. \hideinitializer */
149
+#define UIP_NETMASK1    255 /**< The second octet of the netmask of
150
+			       this uIP node, if UIP_FIXEDADDR is
151
+			       1. \hideinitializer */
152
+#define UIP_NETMASK2    255 /**< The third octet of the netmask of
153
+			       this uIP node, if UIP_FIXEDADDR is
154
+			       1. \hideinitializer */
155
+#define UIP_NETMASK3    0   /**< The fourth octet of the netmask of
156
+			       this uIP node, if UIP_FIXEDADDR is
157
+			       1. \hideinitializer */
158
+
159
+#define UIP_DRIPADDR0   192 /**< The first octet of the IP address of
160
+			       the default router, if UIP_FIXEDADDR is
161
+			       1. \hideinitializer */
162
+#define UIP_DRIPADDR1   168 /**< The second octet of the IP address of
163
+			       the default router, if UIP_FIXEDADDR is
164
+			       1. \hideinitializer */
165
+#define UIP_DRIPADDR2   0   /**< The third octet of the IP address of
166
+			       the default router, if UIP_FIXEDADDR is
167
+			       1. \hideinitializer */
168
+#define UIP_DRIPADDR3   1   /**< The fourth octet of the IP address of
169
+			       the default router, if UIP_FIXEDADDR is
170
+			       1. \hideinitializer */
171
+
172
+/**
173
+ * Specifies if the uIP ARP module should be compiled with a fixed
174
+ * Ethernet MAC address or not.
175
+ *
176
+ * If this configuration option is 0, the macro uip_setethaddr() can
177
+ * be used to specify the Ethernet address at run-time.
178
+ *
179
+ * \hideinitializer
180
+ */
181
+#define UIP_FIXEDETHADDR 0
182
+
183
+#define UIP_ETHADDR0    0x00  /**< The first octet of the Ethernet
184
+				 address if UIP_FIXEDETHADDR is
185
+				 1. \hideinitializer */
186
+#define UIP_ETHADDR1    0xbd  /**< The second octet of the Ethernet
187
+				 address if UIP_FIXEDETHADDR is
188
+				 1. \hideinitializer */
189
+#define UIP_ETHADDR2    0x3b  /**< The third octet of the Ethernet
190
+				 address if UIP_FIXEDETHADDR is
191
+				 1. \hideinitializer */
192
+#define UIP_ETHADDR3    0x33  /**< The fourth octet of the Ethernet
193
+				 address if UIP_FIXEDETHADDR is
194
+				 1. \hideinitializer */
195
+#define UIP_ETHADDR4    0x05  /**< The fifth octet of the Ethernet
196
+				 address if UIP_FIXEDETHADDR is
197
+				 1. \hideinitializer */
198
+#define UIP_ETHADDR5    0x71  /**< The sixth octet of the Ethernet
199
+				 address if UIP_FIXEDETHADDR is
200
+				 1. \hideinitializer */
201
+
202
+/** @} */
203
+/*------------------------------------------------------------------------------*/
204
+/**
205
+ * \defgroup uipoptip IP configuration options
206
+ * @{
207
+ *
208
+ */
209
+/**
210
+ * The IP TTL (time to live) of IP packets sent by uIP.
211
+ *
212
+ * This should normally not be changed.
213
+ */
214
+#define UIP_TTL         255
215
+
216
+/**
217
+ * Turn on support for IP packet reassembly.
218
+ *
219
+ * uIP supports reassembly of fragmented IP packets. This features
220
+ * requires an additonal amount of RAM to hold the reassembly buffer
221
+ * and the reassembly code size is approximately 700 bytes.  The
222
+ * reassembly buffer is of the same size as the uip_buf buffer
223
+ * (configured by UIP_BUFSIZE).
224
+ *
225
+ * \note IP packet reassembly is not heavily tested.
226
+ *
227
+ * \hideinitializer
228
+ */
229
+#define UIP_REASSEMBLY 0
230
+
231
+/**
232
+ * The maximum time an IP fragment should wait in the reassembly
233
+ * buffer before it is dropped.
234
+ *
235
+ */
236
+#define UIP_REASS_MAXAGE 40
237
+
238
+/** @} */
239
+
240
+/*------------------------------------------------------------------------------*/
241
+/**
242
+ * \defgroup uipoptudp UDP configuration options
243
+ * @{
244
+ *
245
+ * \note The UDP support in uIP is still not entirely complete; there
246
+ * is no support for sending or receiving broadcast or multicast
247
+ * packets, but it works well enough to support a number of vital
248
+ * applications such as DNS queries, though
249
+ */
250
+
251
+/**
252
+ * Toggles wether UDP support should be compiled in or not.
253
+ *
254
+ * \hideinitializer
255
+ */
256
+#define UIP_UDP           1
257
+
258
+/**
259
+ * Toggles if UDP checksums should be used or not.
260
+ *
261
+ * \note Support for UDP checksums is currently not included in uIP,
262
+ * so this option has no function.
263
+ *
264
+ * \hideinitializer
265
+ */
266
+#define UIP_UDP_CHECKSUMS 0
267
+
268
+/**
269
+ * The maximum amount of concurrent UDP connections.
270
+ *
271
+ * \hideinitializer
272
+ */
273
+#define UIP_UDP_CONNS    10
274
+
275
+/**
276
+ * The name of the function that should be called when UDP datagrams arrive.
277
+ *
278
+ * \hideinitializer
279
+ */
280
+#define UIP_UDP_APPCALL  udp_appcall
281
+
282
+/** @} */
283
+/*------------------------------------------------------------------------------*/
284
+/**
285
+ * \defgroup uipopttcp TCP configuration options
286
+ * @{
287
+ */
288
+
289
+/**
290
+ * Determines if support for opening connections from uIP should be
291
+ * compiled in.
292
+ *
293
+ * If the applications that are running on top of uIP for this project
294
+ * do not need to open outgoing TCP connections, this configration
295
+ * option can be turned off to reduce the code size of uIP.
296
+ *
297
+ * \hideinitializer
298
+ */
299
+#define UIP_ACTIVE_OPEN 1
300
+
301
+/**
302
+ * The maximum number of simultaneously open TCP connections.
303
+ *
304
+ * Since the TCP connections are statically allocated, turning this
305
+ * configuration knob down results in less RAM used. Each TCP
306
+ * connection requires approximatly 30 bytes of memory.
307
+ *
308
+ * \hideinitializer
309
+ */
310
+#define UIP_CONNS       10
311
+
312
+/**
313
+ * The maximum number of simultaneously listening TCP ports.
314
+ *
315
+ * Each listening TCP port requires 2 bytes of memory.
316
+ *
317
+ * \hideinitializer
318
+ */
319
+#define UIP_LISTENPORTS 10
320
+
321
+/**
322
+ * The size of the advertised receiver's window.
323
+ *
324
+ * Should be set low (i.e., to the size of the uip_buf buffer) is the
325
+ * application is slow to process incoming data, or high (32768 bytes)
326
+ * if the application processes data quickly.
327
+ *
328
+ * \hideinitializer
329
+ */
330
+#define UIP_RECEIVE_WINDOW   32768
331
+
332
+/**
333
+ * Determines if support for TCP urgent data notification should be
334
+ * compiled in.
335
+ *
336
+ * Urgent data (out-of-band data) is a rarely used TCP feature that
337
+ * very seldom would be required.
338
+ *
339
+ * \hideinitializer
340
+ */
341
+#define UIP_URGDATA      1
342
+
343
+/**
344
+ * The initial retransmission timeout counted in timer pulses.
345
+ *
346
+ * This should not be changed.
347
+ */
348
+#define UIP_RTO         3
349
+
350
+/**
351
+ * The maximum number of times a segment should be retransmitted
352
+ * before the connection should be aborted.
353
+ *
354
+ * This should not be changed.
355
+ */
356
+#define UIP_MAXRTX      8
357
+
358
+/**
359
+ * The maximum number of times a SYN segment should be retransmitted
360
+ * before a connection request should be deemed to have been
361
+ * unsuccessful.
362
+ *
363
+ * This should not need to be changed.
364
+ */
365
+#define UIP_MAXSYNRTX      3
366
+
367
+/**
368
+ * The TCP maximum segment size.
369
+ *
370
+ * This is should not be to set to more than UIP_BUFSIZE - UIP_LLH_LEN - 40.
371
+ */
372
+#define UIP_TCP_MSS     (UIP_BUFSIZE - UIP_LLH_LEN - 40)
373
+
374
+/**
375
+ * How long a connection should stay in the TIME_WAIT state.
376
+ *
377
+ * This configiration option has no real implication, and it should be
378
+ * left untouched.
379
+ */ 
380
+#define UIP_TIME_WAIT_TIMEOUT 120
381
+
382
+
383
+/** @} */
384
+/*------------------------------------------------------------------------------*/
385
+/**
386
+ * \defgroup uipoptarp ARP configuration options
387
+ * @{
388
+ */
389
+
390
+/**
391
+ * The size of the ARP table.
392
+ *
393
+ * This option should be set to a larger value if this uIP node will
394
+ * have many connections from the local network.
395
+ *
396
+ * \hideinitializer
397
+ */
398
+#define UIP_ARPTAB_SIZE 8
399
+
400
+/**
401
+ * The maxium age of ARP table entries measured in 10ths of seconds.
402
+ *
403
+ * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD
404
+ * default).
405
+ */
406
+#define UIP_ARP_MAXAGE 120
407
+
408
+/** @} */
409
+
410
+/*------------------------------------------------------------------------------*/
411
+
412
+/**
413
+ * \defgroup uipoptgeneral General configuration options
414
+ * @{
415
+ */
416
+
417
+/**
418
+ * The size of the uIP packet buffer.
419
+ *
420
+ * The uIP packet buffer should not be smaller than 60 bytes, and does
421
+ * not need to be larger than 1500 bytes. Lower size results in lower
422
+ * TCP throughput, larger size results in higher TCP throughput.
423
+ *
424
+ * \hideinitializer
425
+ */
426
+#define UIP_BUFSIZE     1500
427
+
428
+
429
+/**
430
+ * Determines if statistics support should be compiled in.
431
+ *
432
+ * The statistics is useful for debugging and to show the user.
433
+ *
434
+ * \hideinitializer
435
+ */
436
+#define UIP_STATISTICS  0
437
+
438
+/**
439
+ * Determines if logging of certain events should be compiled in.
440
+ *
441
+ * This is useful mostly for debugging. The function uip_log()
442
+ * must be implemented to suit the architecture of the project, if
443
+ * logging is turned on.
444
+ *
445
+ * \hideinitializer
446
+ */
447
+#define UIP_LOGGING     0
448
+
449
+/**
450
+ * Print out a uIP log message.
451
+ *
452
+ * This function must be implemented by the module that uses uIP, and
453
+ * is called by uIP whenever a log message is generated.
454
+ */
455
+void uip_log(char *msg);
456
+
457
+/**
458
+ * The link level header length.
459
+ *
460
+ * This is the offset into the uip_buf where the IP header can be
461
+ * found. For Ethernet, this should be set to 14. For SLIP, this
462
+ * should be set to 0.
463
+ *
464
+ * \hideinitializer
465
+ */
466
+#define UIP_LLH_LEN     14
467
+
468
+
469
+/** @} */
470
+/*------------------------------------------------------------------------------*/
471
+/**
472
+ * \defgroup uipoptcpu CPU architecture configuration
473
+ * @{
474
+ *
475
+ * The CPU architecture configuration is where the endianess of the
476
+ * CPU on which uIP is to be run is specified. Most CPUs today are
477
+ * little endian, and the most notable exception are the Motorolas
478
+ * which are big endian. The BYTE_ORDER macro should be changed to
479
+ * reflect the CPU architecture on which uIP is to be run.
480
+ */
481
+#ifndef LITTLE_ENDIAN
482
+#define LITTLE_ENDIAN  3412
483
+#endif /* LITTLE_ENDIAN */
484
+#ifndef BIG_ENDIAN
485
+#define BIG_ENDIAN     1234
486
+#endif /* BIGE_ENDIAN */
487
+
488
+/**
489
+ * The byte order of the CPU architecture on which uIP is to be run.
490
+ *
491
+ * This option can be either BIG_ENDIAN (Motorola byte order) or
492
+ * LITTLE_ENDIAN (Intel byte order).
493
+ *
494
+ * \hideinitializer
495
+ */
496
+#ifndef BYTE_ORDER
497
+#define BYTE_ORDER     LITTLE_ENDIAN
498
+#endif /* BYTE_ORDER */
499
+
500
+/** @} */
501
+/*------------------------------------------------------------------------------*/
502
+
503
+/**
504
+ * \defgroup uipoptapp Appication specific configurations
505
+ * @{
506
+ *
507
+ * An uIP application is implemented using a single application
508
+ * function that is called by uIP whenever a TCP/IP event occurs. The
509
+ * name of this function must be registered with uIP at compile time
510
+ * using the UIP_APPCALL definition.
511
+ *
512
+ * uIP applications can store the application state within the
513
+ * uip_conn structure by specifying the size of the application
514
+ * structure with the UIP_APPSTATE_SIZE macro.
515
+ *
516
+ * The file containing the definitions must be included in the
517
+ * uipopt.h file.
518
+ *
519
+ * The following example illustrates how this can look.
520
+ \code
521
+
522
+void httpd_appcall(void);
523
+#define UIP_APPCALL     httpd_appcall
524
+
525
+struct httpd_state {
526
+  u8_t state; 
527
+  u16_t count;
528
+  char *dataptr;
529
+  char *script;
530
+};
531
+#define UIP_APPSTATE_SIZE (sizeof(struct httpd_state))
532
+ \endcode
533
+ */
534
+
535
+/**
536
+ * \var #define UIP_APPCALL
537
+ *
538
+ * The name of the application function that uIP should call in
539
+ * response to TCP/IP events.
540
+ *
541
+ */
542
+
543
+/**
544
+ * \var #define UIP_APPSTATE_SIZE
545
+ *
546
+ * The size of the application state that is to be stored in the
547
+ * uip_conn structure.
548
+ */
549
+#define UIP_APPSTATE_SIZE 0
550
+/** @} */
551
+
552
+/* Include the header file for the application program that should be
553
+   used. If you don't use the example web server, you should change
554
+   this. */
555
+//#include "httpd.h"
556
+
557
+
558
+#endif /* __UIPOPT_H__ */

Ładowanie…
Anuluj
Zapisz