OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [uIP_Demo_IAR_ARM7/] [uip/] [uipopt.h] - Blame information for rev 820

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 583 jeremybenn
/**
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: uipopt.h 2 2011-07-17 20:13:17Z filepang@gmail.com $
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
 
134
#define UIP_IPADDR0     172U  /**< The first octet of the IP address of
135
                               this uIP node, if UIP_FIXEDADDR is
136
                               1. \hideinitializer */
137
#define UIP_IPADDR1     25U /**< The second octet of the IP address of
138
                               this uIP node, if UIP_FIXEDADDR is
139
                               1. \hideinitializer */
140
#define UIP_IPADDR2     218U   /**< The third octet of the IP address of
141
                               this uIP node, if UIP_FIXEDADDR is
142
                               1. \hideinitializer */
143
#define UIP_IPADDR3     11U  /**< The fourth octet of the IP address of
144
                               this uIP node, if UIP_FIXEDADDR is
145
                               1. \hideinitializer */
146
 
147
#define UIP_NETMASK0    255 /**< The first octet of the netmask of
148
                               this uIP node, if UIP_FIXEDADDR is
149
                               1. \hideinitializer */
150
#define UIP_NETMASK1    255 /**< The second octet of the netmask of
151
                               this uIP node, if UIP_FIXEDADDR is
152
                               1. \hideinitializer */
153
#define UIP_NETMASK2    0 /**< The third octet of the netmask of
154
                               this uIP node, if UIP_FIXEDADDR is
155
                               1. \hideinitializer */
156
#define UIP_NETMASK3    0   /**< The fourth octet of the netmask of
157
                               this uIP node, if UIP_FIXEDADDR is
158
                               1. \hideinitializer */
159
 
160
#define UIP_DRIPADDR0   172 /**< The first octet of the IP address of
161
                               the default router, if UIP_FIXEDADDR is
162
                               1. \hideinitializer */
163
#define UIP_DRIPADDR1   25 /**< The second octet of the IP address of
164
                               the default router, if UIP_FIXEDADDR is
165
                               1. \hideinitializer */
166
#define UIP_DRIPADDR2   218   /**< The third octet of the IP address of
167
                               the default router, if UIP_FIXEDADDR is
168
                               1. \hideinitializer */
169
#define UIP_DRIPADDR3   3   /**< The fourth octet of the IP address of
170
                               the default router, if UIP_FIXEDADDR is
171
                               1. \hideinitializer */
172
 
173
 
174
 
175
/**
176
 * Specifies if the uIP ARP module should be compiled with a fixed
177
 * Ethernet MAC address or not.
178
 *
179
 * If this configuration option is 0, the macro uip_setethaddr() can
180
 * be used to specify the Ethernet address at run-time.
181
 *
182
 * \hideinitializer
183
 */
184
#define UIP_FIXEDETHADDR 0
185
 
186
#define UIP_ETHADDR0    0x00  /**< The first octet of the Ethernet
187
                                 address if UIP_FIXEDETHADDR is
188
                                 1. \hideinitializer */
189
#define UIP_ETHADDR1    0xbd  /**< The second octet of the Ethernet
190
                                 address if UIP_FIXEDETHADDR is
191
                                 1. \hideinitializer */
192
#define UIP_ETHADDR2    0x3b  /**< The third octet of the Ethernet
193
                                 address if UIP_FIXEDETHADDR is
194
                                 1. \hideinitializer */
195
#define UIP_ETHADDR3    0x33  /**< The fourth octet of the Ethernet
196
                                 address if UIP_FIXEDETHADDR is
197
                                 1. \hideinitializer */
198
#define UIP_ETHADDR4    0x06  /**< The fifth octet of the Ethernet
199
                                 address if UIP_FIXEDETHADDR is
200
                                 1. \hideinitializer */
201
#define UIP_ETHADDR5    0x65  /**< The sixth octet of the Ethernet
202
                                 address if UIP_FIXEDETHADDR is
203
                                 1. \hideinitializer */
204
 
205
/** @} */
206
/*------------------------------------------------------------------------------*/
207
/**
208
 * \defgroup uipoptip IP configuration options
209
 * @{
210
 *
211
 */
212
/**
213
 * The IP TTL (time to live) of IP packets sent by uIP.
214
 *
215
 * This should normally not be changed.
216
 */
217
#define UIP_TTL         255
218
 
219
/**
220
 * Turn on support for IP packet reassembly.
221
 *
222
 * uIP supports reassembly of fragmented IP packets. This features
223
 * requires an additonal amount of RAM to hold the reassembly buffer
224
 * and the reassembly code size is approximately 700 bytes.  The
225
 * reassembly buffer is of the same size as the uip_buf buffer
226
 * (configured by UIP_BUFSIZE).
227
 *
228
 * \note IP packet reassembly is not heavily tested.
229
 *
230
 * \hideinitializer
231
 */
232
#define UIP_REASSEMBLY 0
233
 
234
/**
235
 * The maximum time an IP fragment should wait in the reassembly
236
 * buffer before it is dropped.
237
 *
238
 */
239
#define UIP_REASS_MAXAGE 40
240
 
241
/** @} */
242
 
243
/*------------------------------------------------------------------------------*/
244
/**
245
 * \defgroup uipoptudp UDP configuration options
246
 * @{
247
 *
248
 * \note The UDP support in uIP is still not entirely complete; there
249
 * is no support for sending or receiving broadcast or multicast
250
 * packets, but it works well enough to support a number of vital
251
 * applications such as DNS queries, though
252
 */
253
 
254
/**
255
 * Toggles wether UDP support should be compiled in or not.
256
 *
257
 * \hideinitializer
258
 */
259
#define UIP_UDP           0
260
 
261
/**
262
 * Toggles if UDP checksums should be used or not.
263
 *
264
 * \note Support for UDP checksums is currently not included in uIP,
265
 * so this option has no function.
266
 *
267
 * \hideinitializer
268
 */
269
#define UIP_UDP_CHECKSUMS 0
270
 
271
/**
272
 * The maximum amount of concurrent UDP connections.
273
 *
274
 * \hideinitializer
275
 */
276
#define UIP_UDP_CONNS    2
277
 
278
/**
279
 * The name of the function that should be called when UDP datagrams arrive.
280
 *
281
 * \hideinitializer
282
 */
283
#define UIP_UDP_APPCALL  udp_appcall
284
 
285
/** @} */
286
/*------------------------------------------------------------------------------*/
287
/**
288
 * \defgroup uipopttcp TCP configuration options
289
 * @{
290
 */
291
 
292
/**
293
 * Determines if support for opening connections from uIP should be
294
 * compiled in.
295
 *
296
 * If the applications that are running on top of uIP for this project
297
 * do not need to open outgoing TCP connections, this configration
298
 * option can be turned off to reduce the code size of uIP.
299
 *
300
 * \hideinitializer
301
 */
302
#define UIP_ACTIVE_OPEN 0
303
 
304
/**
305
 * The maximum number of simultaneously open TCP connections.
306
 *
307
 * Since the TCP connections are statically allocated, turning this
308
 * configuration knob down results in less RAM used. Each TCP
309
 * connection requires approximatly 30 bytes of memory.
310
 *
311
 * \hideinitializer
312
 */
313
#define UIP_CONNS       25
314
 
315
/**
316
 * The maximum number of simultaneously listening TCP ports.
317
 *
318
 * Each listening TCP port requires 2 bytes of memory.
319
 *
320
 * \hideinitializer
321
 */
322
#define UIP_LISTENPORTS 10
323
 
324
/**
325
 * The size of the advertised receiver's window.
326
 *
327
 * Should be set low (i.e., to the size of the uip_buf buffer) is the
328
 * application is slow to process incoming data, or high (32768 bytes)
329
 * if the application processes data quickly.
330
 *
331
 * \hideinitializer
332
 */
333
#define UIP_RECEIVE_WINDOW   32768
334
 
335
/**
336
 * Determines if support for TCP urgent data notification should be
337
 * compiled in.
338
 *
339
 * Urgent data (out-of-band data) is a rarely used TCP feature that
340
 * very seldom would be required.
341
 *
342
 * \hideinitializer
343
 */
344
#define UIP_URGDATA      1
345
 
346
/**
347
 * The initial retransmission timeout counted in timer pulses.
348
 *
349
 * This should not be changed.
350
 */
351
#define UIP_RTO         3
352
 
353
/**
354
 * The maximum number of times a segment should be retransmitted
355
 * before the connection should be aborted.
356
 *
357
 * This should not be changed.
358
 */
359
#define UIP_MAXRTX      8
360
 
361
/**
362
 * The maximum number of times a SYN segment should be retransmitted
363
 * before a connection request should be deemed to have been
364
 * unsuccessful.
365
 *
366
 * This should not need to be changed.
367
 */
368
#define UIP_MAXSYNRTX      3
369
 
370
/**
371
 * The TCP maximum segment size.
372
 *
373
 * This is should not be to set to more than UIP_BUFSIZE - UIP_LLH_LEN - 40.
374
 */
375
#define UIP_TCP_MSS     (UIP_BUFSIZE - UIP_LLH_LEN - 40)
376
 
377
/**
378
 * How long a connection should stay in the TIME_WAIT state.
379
 *
380
 * This configiration option has no real implication, and it should be
381
 * left untouched.
382
 */
383
#define UIP_TIME_WAIT_TIMEOUT 120
384
 
385
 
386
/** @} */
387
/*------------------------------------------------------------------------------*/
388
/**
389
 * \defgroup uipoptarp ARP configuration options
390
 * @{
391
 */
392
 
393
/**
394
 * The size of the ARP table.
395
 *
396
 * This option should be set to a larger value if this uIP node will
397
 * have many connections from the local network.
398
 *
399
 * \hideinitializer
400
 */
401
#define UIP_ARPTAB_SIZE 8
402
 
403
/**
404
 * The maxium age of ARP table entries measured in 10ths of seconds.
405
 *
406
 * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD
407
 * default).
408
 */
409
#define UIP_ARP_MAXAGE 120
410
 
411
/** @} */
412
 
413
/*------------------------------------------------------------------------------*/
414
 
415
/**
416
 * \defgroup uipoptgeneral General configuration options
417
 * @{
418
 */
419
 
420
/**
421
 * The size of the uIP packet buffer.
422
 *
423
 * The uIP packet buffer should not be smaller than 60 bytes, and does
424
 * not need to be larger than 1500 bytes. Lower size results in lower
425
 * TCP throughput, larger size results in higher TCP throughput.
426
 *
427
 * \hideinitializer
428
 */
429
#define UIP_BUFSIZE     1480
430
 
431
 
432
/**
433
 * Determines if statistics support should be compiled in.
434
 *
435
 * The statistics is useful for debugging and to show the user.
436
 *
437
 * \hideinitializer
438
 */
439
#define UIP_STATISTICS  1
440
 
441
/**
442
 * Determines if logging of certain events should be compiled in.
443
 *
444
 * This is useful mostly for debugging. The function uip_log()
445
 * must be implemented to suit the architecture of the project, if
446
 * logging is turned on.
447
 *
448
 * \hideinitializer
449
 */
450
#define UIP_LOGGING 0
451
 
452
/**
453
 * Print out a uIP log message.
454
 *
455
 * This function must be implemented by the module that uses uIP, and
456
 * is called by uIP whenever a log message is generated.
457
 */
458
void uip_log(char *msg);
459
 
460
/**
461
 * The link level header length.
462
 *
463
 * This is the offset into the uip_buf where the IP header can be
464
 * found. For Ethernet, this should be set to 14. For SLIP, this
465
 * should be set to 0.
466
 *
467
 * \hideinitializer
468
 */
469
#define UIP_LLH_LEN     14
470
 
471
 
472
/** @} */
473
/*------------------------------------------------------------------------------*/
474
/**
475
 * \defgroup uipoptcpu CPU architecture configuration
476
 * @{
477
 *
478
 * The CPU architecture configuration is where the endianess of the
479
 * CPU on which uIP is to be run is specified. Most CPUs today are
480
 * little endian, and the most notable exception are the Motorolas
481
 * which are big endian. The BYTE_ORDER macro should be changed to
482
 * reflect the CPU architecture on which uIP is to be run.
483
 */
484
#ifndef LITTLE_ENDIAN
485
#define LITTLE_ENDIAN  3412
486
#endif /* LITTLE_ENDIAN */
487
#ifndef BIG_ENDIAN
488
#define BIG_ENDIAN     1234
489
#endif /* BIGE_ENDIAN */
490
 
491
/**
492
 * The byte order of the CPU architecture on which uIP is to be run.
493
 *
494
 * This option can be either BIG_ENDIAN (Motorola byte order) or
495
 * LITTLE_ENDIAN (Intel byte order).
496
 *
497
 * \hideinitializer
498
 */
499
#ifndef BYTE_ORDER
500
#define BYTE_ORDER     LITTLE_ENDIAN
501
#endif /* BYTE_ORDER */
502
 
503
/** @} */
504
/*------------------------------------------------------------------------------*/
505
 
506
/**
507
 * \defgroup uipoptapp Appication specific configurations
508
 * @{
509
 *
510
 * An uIP application is implemented using a single application
511
 * function that is called by uIP whenever a TCP/IP event occurs. The
512
 * name of this function must be registered with uIP at compile time
513
 * using the UIP_APPCALL definition.
514
 *
515
 * uIP applications can store the application state within the
516
 * uip_conn structure by specifying the size of the application
517
 * structure with the UIP_APPSTATE_SIZE macro.
518
 *
519
 * The file containing the definitions must be included in the
520
 * uipopt.h file.
521
 *
522
 * The following example illustrates how this can look.
523
 \code
524
 
525
void httpd_appcall(void);
526
#define UIP_APPCALL     httpd_appcall
527
 
528
struct httpd_state {
529
  u8_t state;
530
  u16_t count;
531
  char *dataptr;
532
  char *script;
533
};
534
#define UIP_APPSTATE_SIZE (sizeof(struct httpd_state))
535
 \endcode
536
 */
537
 
538
/**
539
 * \var #define UIP_APPCALL
540
 *
541
 * The name of the application function that uIP should call in
542
 * response to TCP/IP events.
543
 *
544
 */
545
 
546
/**
547
 * \var #define UIP_APPSTATE_SIZE
548
 *
549
 * The size of the application state that is to be stored in the
550
 * uip_conn structure.
551
 */
552
/** @} */
553
 
554
/* Include the header file for the application program that should be
555
   used. If you don't use the example web server, you should change
556
   this. */
557
#include "httpd.h"
558
 
559
 
560
#endif /* __UIPOPT_H__ */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.