UIPEthernet library for Arduino IDE, Eclipse with arduino plugin and MBED/SMeshStudio (AVR,STM32F,ESP8266,Intel ARC32,Nordic nRF51,Teensy boards,Realtek Ameba(RTL8195A,RTL8710)), ENC28j60 network chip. Compatible with Wiznet W5100 Ethernet library API. Compiled and tested on Nucleo-F302R8. Master repository is: https://github.com/UIPEthernet/UIPEthernet/

Committer:
cassyarduino
Date:
Tue Jan 23 15:08:43 2018 +0100
Revision:
39:deeb00b81cc9
Parent:
0:e3fb1267e3c3
Release: 2.0.4

Who changed what in which revision?

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