mbed OS5

Fork of UIPEthernet by Zoltan Hudak

Committer:
pilotak
Date:
Sun Aug 06 16:01:26 2017 +0000
Revision:
9:e55652bed36c
Parent:
8:4acb22344932
mBed OS5

Who changed what in which revision?

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