Example program with HTTPServer and sensor data streaming over TCPSockets, using Donatien Garnier's Net APIs and services code on top of LWIP. Files StreamServer.h and .cpp encapsulate streaming over TCPSockets. Broadcast is done by sendToAll(), and all incoming data is echoed back to the client. Echo code can be replaced with some remote control of the streaming interface. See main() that shows how to periodically send some data to all subscribed clients. To subscribe, a client should open a socket at <mbed_ip> port 123. I used few lines in TCL code to set up a quick sink for the data. HTTP files are served on port 80 concurrently to the streaming.

Dependencies:   mbed

Committer:
iva2k
Date:
Mon Jun 14 03:24:33 2010 +0000
Revision:
1:3ee499525aa5
Parent:
0:e614f7875b60

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
iva2k 0:e614f7875b60 1 /*
iva2k 0:e614f7875b60 2 * Copyright (c) 2001-2003 Swedish Institute of Computer Science.
iva2k 0:e614f7875b60 3 * All rights reserved.
iva2k 0:e614f7875b60 4 *
iva2k 0:e614f7875b60 5 * Redistribution and use in source and binary forms, with or without modification,
iva2k 0:e614f7875b60 6 * are permitted provided that the following conditions are met:
iva2k 0:e614f7875b60 7 *
iva2k 0:e614f7875b60 8 * 1. Redistributions of source code must retain the above copyright notice,
iva2k 0:e614f7875b60 9 * this list of conditions and the following disclaimer.
iva2k 0:e614f7875b60 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
iva2k 0:e614f7875b60 11 * this list of conditions and the following disclaimer in the documentation
iva2k 0:e614f7875b60 12 * and/or other materials provided with the distribution.
iva2k 0:e614f7875b60 13 * 3. The name of the author may not be used to endorse or promote products
iva2k 0:e614f7875b60 14 * derived from this software without specific prior written permission.
iva2k 0:e614f7875b60 15 *
iva2k 0:e614f7875b60 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
iva2k 0:e614f7875b60 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
iva2k 0:e614f7875b60 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
iva2k 0:e614f7875b60 19 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
iva2k 0:e614f7875b60 20 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
iva2k 0:e614f7875b60 21 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
iva2k 0:e614f7875b60 22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
iva2k 0:e614f7875b60 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
iva2k 0:e614f7875b60 24 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
iva2k 0:e614f7875b60 25 * OF SUCH DAMAGE.
iva2k 0:e614f7875b60 26 *
iva2k 0:e614f7875b60 27 * This file is part of the lwIP TCP/IP stack.
iva2k 0:e614f7875b60 28 *
iva2k 0:e614f7875b60 29 * Author: Adam Dunkels <adam@sics.se>
iva2k 0:e614f7875b60 30 *
iva2k 0:e614f7875b60 31 */
iva2k 0:e614f7875b60 32 #ifndef __LWIPOPTS_H__
iva2k 0:e614f7875b60 33 #define __LWIPOPTS_H__
iva2k 0:e614f7875b60 34
iva2k 0:e614f7875b60 35 #include "netCfg.h"
iva2k 0:e614f7875b60 36 #if NET_LWIP_STACK
iva2k 0:e614f7875b60 37
iva2k 0:e614f7875b60 38 //#include "arch/sys_arch.h"
iva2k 0:e614f7875b60 39
iva2k 0:e614f7875b60 40 /* <sys/time.h> is included in cc.h! */
iva2k 0:e614f7875b60 41 #define LWIP_TIMEVAL_PRIVATE 0
iva2k 0:e614f7875b60 42
iva2k 0:e614f7875b60 43 //#define __LWIP_DEBUG
iva2k 0:e614f7875b60 44 #include "dbg/dbg.h"
iva2k 0:e614f7875b60 45
iva2k 0:e614f7875b60 46 #ifdef __LWIP_DEBUG
iva2k 0:e614f7875b60 47
iva2k 0:e614f7875b60 48 #define LWIP_DEBUG 1
iva2k 0:e614f7875b60 49
iva2k 0:e614f7875b60 50 #define LWIP_DBG_MIN_LEVEL 0
iva2k 0:e614f7875b60 51 //#define LWIP_COMPAT_SOCKETS 1
iva2k 0:e614f7875b60 52 #define TAPIF_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 53 #define TUNIF_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 54 #define UNIXIF_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 55 #define DELIF_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 56 #define SIO_FIFO_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 57 #define TCPDUMP_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 58
iva2k 0:e614f7875b60 59 #define PPP_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 60 #define MEM_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 61 #define MEMP_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 62 #define PBUF_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 63 #define API_LIB_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 64 #define API_MSG_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 65 #define TCPIP_DEBUG LWIP_DBG_ON
iva2k 0:e614f7875b60 66 #define NETIF_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 67 #define SOCKETS_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 68 #define DEMO_DEBUG LWIP_DBG_OFF
iva2k 1:3ee499525aa5 69 #define IP_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 70 #define IP_REASS_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 71 #define RAW_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 72 #define ICMP_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 73 #define UDP_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 74 #define TCP_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 75 #define TCP_INPUT_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 76 #define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 77 #define TCP_RTO_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 78 #define TCP_CWND_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 79 #define TCP_WND_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 80 #define TCP_FR_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 81 #define TCP_QLEN_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 82 #define TCP_RST_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 83 #define ETHARP_DEBUG LWIP_DBG_OFF
iva2k 0:e614f7875b60 84
iva2k 0:e614f7875b60 85 #endif
iva2k 0:e614f7875b60 86
iva2k 0:e614f7875b60 87 /*
iva2k 0:e614f7875b60 88 extern unsigned char debug_flags;
iva2k 0:e614f7875b60 89 #define LWIP_DBG_TYPES_ON debug_flags
iva2k 0:e614f7875b60 90 */
iva2k 0:e614f7875b60 91 #define NO_SYS 1
iva2k 0:e614f7875b60 92 #define LWIP_SOCKET (NO_SYS==0)
iva2k 0:e614f7875b60 93 #define LWIP_NETCONN (NO_SYS==0)
iva2k 0:e614f7875b60 94
iva2k 0:e614f7875b60 95
iva2k 0:e614f7875b60 96 #define IP_FRAG_USES_STATIC_BUF 0
iva2k 0:e614f7875b60 97
iva2k 0:e614f7875b60 98
iva2k 0:e614f7875b60 99
iva2k 0:e614f7875b60 100 /* ---------- Memory options ---------- */
iva2k 0:e614f7875b60 101 /* MEM_ALIGNMENT: should be set to the alignment of the CPU for which
iva2k 0:e614f7875b60 102 lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2
iva2k 0:e614f7875b60 103 byte alignment -> define MEM_ALIGNMENT to 2. */
iva2k 0:e614f7875b60 104 /* MSVC port: intel processors don't need 4-byte alignment,
iva2k 0:e614f7875b60 105 but are faster that way! */
iva2k 0:e614f7875b60 106 #define MEM_ALIGNMENT 4
iva2k 0:e614f7875b60 107
iva2k 0:e614f7875b60 108 /* MEM_SIZE: the size of the heap memory. If the application will send
iva2k 0:e614f7875b60 109 a lot of data that needs to be copied, this should be set high. */
iva2k 0:e614f7875b60 110 //#define MEM_SIZE 10240
iva2k 0:e614f7875b60 111 #define MEM_SIZE 2000//5000
iva2k 0:e614f7875b60 112
iva2k 0:e614f7875b60 113 ///
iva2k 0:e614f7875b60 114 #if TARGET_LPC1768
iva2k 0:e614f7875b60 115
iva2k 0:e614f7875b60 116 #define MEM_POSITION __attribute((section("AHBSRAM0")))
iva2k 0:e614f7875b60 117
iva2k 0:e614f7875b60 118 /* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
iva2k 0:e614f7875b60 119 sends a lot of data out of ROM (or other static memory), this
iva2k 0:e614f7875b60 120 should be set high. */
iva2k 0:e614f7875b60 121 #define MEMP_NUM_PBUF 16
iva2k 0:e614f7875b60 122 /* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One
iva2k 0:e614f7875b60 123 per active RAW "connection". */
iva2k 0:e614f7875b60 124 //#define MEMP_NUM_RAW_PCB 3
iva2k 0:e614f7875b60 125 /* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
iva2k 0:e614f7875b60 126 per active UDP "connection". */
iva2k 0:e614f7875b60 127 #define MEMP_NUM_UDP_PCB 4
iva2k 0:e614f7875b60 128 /* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
iva2k 0:e614f7875b60 129 connections. */
iva2k 1:3ee499525aa5 130 #define MEMP_NUM_TCP_PCB 8
iva2k 0:e614f7875b60 131 /* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
iva2k 0:e614f7875b60 132 connections. */
iva2k 0:e614f7875b60 133 #define MEMP_NUM_TCP_PCB_LISTEN 2//4
iva2k 0:e614f7875b60 134 /* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
iva2k 0:e614f7875b60 135 segments. */
iva2k 0:e614f7875b60 136 #define MEMP_NUM_TCP_SEG 16
iva2k 0:e614f7875b60 137 /* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
iva2k 0:e614f7875b60 138 timeouts. */
iva2k 0:e614f7875b60 139 #define MEMP_NUM_SYS_TIMEOUT 12
iva2k 0:e614f7875b60 140
iva2k 0:e614f7875b60 141 /* The following four are used only with the sequential API and can be
iva2k 0:e614f7875b60 142 set to 0 if the application only will use the raw API. */
iva2k 0:e614f7875b60 143 /* MEMP_NUM_NETBUF: the number of struct netbufs. */
iva2k 0:e614f7875b60 144 #define MEMP_NUM_NETBUF 0
iva2k 0:e614f7875b60 145 /* MEMP_NUM_NETCONN: the number of struct netconns. */
iva2k 0:e614f7875b60 146 #define MEMP_NUM_NETCONN 0
iva2k 0:e614f7875b60 147 /* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used
iva2k 0:e614f7875b60 148 for sequential API communication and incoming packets. Used in
iva2k 0:e614f7875b60 149 src/api/tcpip.c. */
iva2k 0:e614f7875b60 150 #define MEMP_NUM_TCPIP_MSG_API 0
iva2k 0:e614f7875b60 151 #define MEMP_NUM_TCPIP_MSG_INPKT 0
iva2k 0:e614f7875b60 152
iva2k 0:e614f7875b60 153 /* ---------- Pbuf options ---------- */
iva2k 0:e614f7875b60 154 /* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
iva2k 0:e614f7875b60 155 #define PBUF_POOL_SIZE 8//16//100
iva2k 0:e614f7875b60 156
iva2k 0:e614f7875b60 157 /* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
iva2k 0:e614f7875b60 158 #define PBUF_POOL_BUFSIZE 128
iva2k 0:e614f7875b60 159
iva2k 0:e614f7875b60 160 /* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
iva2k 0:e614f7875b60 161 link level header. */
iva2k 0:e614f7875b60 162 //#define PBUF_LINK_HLEN 16
iva2k 0:e614f7875b60 163
iva2k 0:e614f7875b60 164 /** SYS_LIGHTWEIGHT_PROT
iva2k 0:e614f7875b60 165 * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection
iva2k 0:e614f7875b60 166 * for certain critical regions during buffer allocation, deallocation and memory
iva2k 0:e614f7875b60 167 * allocation and deallocation.
iva2k 0:e614f7875b60 168 */
iva2k 0:e614f7875b60 169 #define SYS_LIGHTWEIGHT_PROT 0 //No sys here
iva2k 0:e614f7875b60 170
iva2k 0:e614f7875b60 171 /* ---------- TCP options ---------- */
iva2k 0:e614f7875b60 172 #define LWIP_TCP 1
iva2k 0:e614f7875b60 173 #define TCP_TTL 255
iva2k 0:e614f7875b60 174
iva2k 0:e614f7875b60 175 /* Controls if TCP should queue segments that arrive out of
iva2k 0:e614f7875b60 176 order. Define to 0 if your device is low on memory. */
iva2k 0:e614f7875b60 177 #define TCP_QUEUE_OOSEQ 0
iva2k 0:e614f7875b60 178
iva2k 0:e614f7875b60 179 /* TCP Maximum segment size. */
iva2k 0:e614f7875b60 180 //#define TCP_MSS 1024
iva2k 0:e614f7875b60 181 #define TCP_MSS 0x276//536//0x276
iva2k 0:e614f7875b60 182
iva2k 0:e614f7875b60 183 /* TCP sender buffer space (bytes). */
iva2k 0:e614f7875b60 184 #define TCP_SND_BUF 2048
iva2k 0:e614f7875b60 185
iva2k 0:e614f7875b60 186 /* TCP sender buffer space (pbufs). This must be at least = 2 *
iva2k 0:e614f7875b60 187 TCP_SND_BUF/TCP_MSS for things to work. */
iva2k 0:e614f7875b60 188 #define TCP_SND_QUEUELEN (3 * TCP_SND_BUF/TCP_MSS)//(4 * TCP_SND_BUF/TCP_MSS)
iva2k 0:e614f7875b60 189
iva2k 0:e614f7875b60 190 /* TCP writable space (bytes). This must be less than or equal
iva2k 0:e614f7875b60 191 to TCP_SND_BUF. It is the amount of space which must be
iva2k 0:e614f7875b60 192 available in the tcp snd_buf for select to return writable */
iva2k 0:e614f7875b60 193 #define TCP_SNDLOWAT (TCP_SND_BUF/2)
iva2k 0:e614f7875b60 194
iva2k 0:e614f7875b60 195 /* TCP receive window. */
iva2k 0:e614f7875b60 196 #define TCP_WND 1024 //8096
iva2k 0:e614f7875b60 197
iva2k 0:e614f7875b60 198 /* Maximum number of retransmissions of data segments. */
iva2k 0:e614f7875b60 199 //#define TCP_MAXRTX 12
iva2k 0:e614f7875b60 200
iva2k 0:e614f7875b60 201 /* Maximum number of retransmissions of SYN segments. */
iva2k 0:e614f7875b60 202 //#define TCP_SYNMAXRTX 4
iva2k 0:e614f7875b60 203
iva2k 0:e614f7875b60 204 #elif TARGET_LPC2368
iva2k 0:e614f7875b60 205
iva2k 0:e614f7875b60 206 #define MEM_POSITION
iva2k 0:e614f7875b60 207
iva2k 0:e614f7875b60 208 /* MEMP_NUM_PBUF: the number of memp struct pbufs. If the application
iva2k 0:e614f7875b60 209 sends a lot of data out of ROM (or other static memory), this
iva2k 0:e614f7875b60 210 should be set high. */
iva2k 0:e614f7875b60 211 #define MEMP_NUM_PBUF 8
iva2k 0:e614f7875b60 212 /* MEMP_NUM_RAW_PCB: the number of UDP protocol control blocks. One
iva2k 0:e614f7875b60 213 per active RAW "connection". */
iva2k 0:e614f7875b60 214 //#define MEMP_NUM_RAW_PCB 3
iva2k 0:e614f7875b60 215 /* MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
iva2k 0:e614f7875b60 216 per active UDP "connection". */
iva2k 0:e614f7875b60 217 #define MEMP_NUM_UDP_PCB 2
iva2k 0:e614f7875b60 218 /* MEMP_NUM_TCP_PCB: the number of simulatenously active TCP
iva2k 0:e614f7875b60 219 connections. */
iva2k 0:e614f7875b60 220 #define MEMP_NUM_TCP_PCB 2
iva2k 0:e614f7875b60 221 /* MEMP_NUM_TCP_PCB_LISTEN: the number of listening TCP
iva2k 0:e614f7875b60 222 connections. */
iva2k 0:e614f7875b60 223 #define MEMP_NUM_TCP_PCB_LISTEN 1//4
iva2k 0:e614f7875b60 224 /* MEMP_NUM_TCP_SEG: the number of simultaneously queued TCP
iva2k 0:e614f7875b60 225 segments. */
iva2k 0:e614f7875b60 226 #define MEMP_NUM_TCP_SEG 8
iva2k 0:e614f7875b60 227 /* MEMP_NUM_SYS_TIMEOUT: the number of simulateously active
iva2k 0:e614f7875b60 228 timeouts. */
iva2k 0:e614f7875b60 229 #define MEMP_NUM_SYS_TIMEOUT 12
iva2k 0:e614f7875b60 230
iva2k 0:e614f7875b60 231 /* The following four are used only with the sequential API and can be
iva2k 0:e614f7875b60 232 set to 0 if the application only will use the raw API. */
iva2k 0:e614f7875b60 233 /* MEMP_NUM_NETBUF: the number of struct netbufs. */
iva2k 0:e614f7875b60 234 #define MEMP_NUM_NETBUF 0
iva2k 0:e614f7875b60 235 /* MEMP_NUM_NETCONN: the number of struct netconns. */
iva2k 0:e614f7875b60 236 #define MEMP_NUM_NETCONN 0
iva2k 0:e614f7875b60 237 /* MEMP_NUM_TCPIP_MSG_*: the number of struct tcpip_msg, which is used
iva2k 0:e614f7875b60 238 for sequential API communication and incoming packets. Used in
iva2k 0:e614f7875b60 239 src/api/tcpip.c. */
iva2k 0:e614f7875b60 240 #define MEMP_NUM_TCPIP_MSG_API 0
iva2k 0:e614f7875b60 241 #define MEMP_NUM_TCPIP_MSG_INPKT 0
iva2k 0:e614f7875b60 242
iva2k 0:e614f7875b60 243 /* ---------- Pbuf options ---------- */
iva2k 0:e614f7875b60 244 /* PBUF_POOL_SIZE: the number of buffers in the pbuf pool. */
iva2k 0:e614f7875b60 245 #define PBUF_POOL_SIZE 4//16//100
iva2k 0:e614f7875b60 246
iva2k 0:e614f7875b60 247 /* PBUF_POOL_BUFSIZE: the size of each pbuf in the pbuf pool. */
iva2k 0:e614f7875b60 248 #define PBUF_POOL_BUFSIZE 128
iva2k 0:e614f7875b60 249
iva2k 0:e614f7875b60 250 /* PBUF_LINK_HLEN: the number of bytes that should be allocated for a
iva2k 0:e614f7875b60 251 link level header. */
iva2k 0:e614f7875b60 252 //#define PBUF_LINK_HLEN 16
iva2k 0:e614f7875b60 253
iva2k 0:e614f7875b60 254 /** SYS_LIGHTWEIGHT_PROT
iva2k 0:e614f7875b60 255 * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task protection
iva2k 0:e614f7875b60 256 * for certain critical regions during buffer allocation, deallocation and memory
iva2k 0:e614f7875b60 257 * allocation and deallocation.
iva2k 0:e614f7875b60 258 */
iva2k 0:e614f7875b60 259 #define SYS_LIGHTWEIGHT_PROT 0 //No sys here
iva2k 0:e614f7875b60 260
iva2k 0:e614f7875b60 261 /* ---------- TCP options ---------- */
iva2k 0:e614f7875b60 262 #define LWIP_TCP 1
iva2k 0:e614f7875b60 263 #define TCP_TTL 255
iva2k 0:e614f7875b60 264
iva2k 0:e614f7875b60 265 /* Controls if TCP should queue segments that arrive out of
iva2k 0:e614f7875b60 266 order. Define to 0 if your device is low on memory. */
iva2k 0:e614f7875b60 267 #define TCP_QUEUE_OOSEQ 0
iva2k 0:e614f7875b60 268
iva2k 0:e614f7875b60 269 /* TCP Maximum segment size. */
iva2k 0:e614f7875b60 270 //#define TCP_MSS 1024
iva2k 0:e614f7875b60 271 #define TCP_MSS 0x276//536//0x276
iva2k 0:e614f7875b60 272
iva2k 0:e614f7875b60 273 /* TCP sender buffer space (bytes). */
iva2k 0:e614f7875b60 274 #define TCP_SND_BUF 1024
iva2k 0:e614f7875b60 275
iva2k 0:e614f7875b60 276 /* TCP sender buffer space (pbufs). This must be at least = 2 *
iva2k 0:e614f7875b60 277 TCP_SND_BUF/TCP_MSS for things to work. */
iva2k 0:e614f7875b60 278 #define TCP_SND_QUEUELEN (3 * TCP_SND_BUF/TCP_MSS)//(4 * TCP_SND_BUF/TCP_MSS)
iva2k 0:e614f7875b60 279
iva2k 0:e614f7875b60 280 /* TCP writable space (bytes). This must be less than or equal
iva2k 0:e614f7875b60 281 to TCP_SND_BUF. It is the amount of space which must be
iva2k 0:e614f7875b60 282 available in the tcp snd_buf for select to return writable */
iva2k 0:e614f7875b60 283 #define TCP_SNDLOWAT (TCP_SND_BUF/2)
iva2k 0:e614f7875b60 284
iva2k 0:e614f7875b60 285 /* TCP receive window. */
iva2k 0:e614f7875b60 286 #define TCP_WND 1024 //8096
iva2k 0:e614f7875b60 287
iva2k 0:e614f7875b60 288 /* Maximum number of retransmissions of data segments. */
iva2k 0:e614f7875b60 289 //#define TCP_MAXRTX 12
iva2k 0:e614f7875b60 290
iva2k 0:e614f7875b60 291 /* Maximum number of retransmissions of SYN segments. */
iva2k 0:e614f7875b60 292 //#define TCP_SYNMAXRTX 4
iva2k 0:e614f7875b60 293
iva2k 0:e614f7875b60 294 #endif
iva2k 0:e614f7875b60 295
iva2k 0:e614f7875b60 296 /* ---------- ARP options ---------- */
iva2k 0:e614f7875b60 297 #define LWIP_ARP (NET_ETH | NET_ZG2100)
iva2k 0:e614f7875b60 298 #define ARP_TABLE_SIZE 2//4//10
iva2k 0:e614f7875b60 299 #define ARP_QUEUEING 0//1
iva2k 0:e614f7875b60 300 #define ETHARP_TRUST_IP_MAC 1
iva2k 0:e614f7875b60 301
iva2k 0:e614f7875b60 302 /* ---------- IP options ---------- */
iva2k 0:e614f7875b60 303 /* Define IP_FORWARD to 1 if you wish to have the ability to forward
iva2k 0:e614f7875b60 304 IP packets across network interfaces. If you are going to run lwIP
iva2k 0:e614f7875b60 305 on a device with only one network interface, define this to 0. */
iva2k 0:e614f7875b60 306 #define IP_FORWARD 0
iva2k 0:e614f7875b60 307
iva2k 0:e614f7875b60 308
iva2k 0:e614f7875b60 309 /* IP reassembly and segmentation.These are orthogonal even
iva2k 0:e614f7875b60 310 * if they both deal with IP fragments */
iva2k 0:e614f7875b60 311 /*
iva2k 0:e614f7875b60 312 #define IP_REASSEMBLY 1
iva2k 0:e614f7875b60 313 #define IP_REASS_MAX_PBUFS 10
iva2k 0:e614f7875b60 314 #define MEMP_NUM_REASSDATA 10
iva2k 0:e614f7875b60 315 #define IP_FRAG 1
iva2k 0:e614f7875b60 316 */
iva2k 0:e614f7875b60 317 /* ---------- ICMP options ---------- */
iva2k 0:e614f7875b60 318 #define ICMP_TTL 255
iva2k 0:e614f7875b60 319
iva2k 0:e614f7875b60 320 /* ---------- DHCP options ---------- */
iva2k 0:e614f7875b60 321 /* Define LWIP_DHCP to 1 if you want DHCP configuration of
iva2k 0:e614f7875b60 322 interfaces. */
iva2k 0:e614f7875b60 323 #define LWIP_DHCP (NET_ETH | NET_ZG2100)
iva2k 0:e614f7875b60 324
iva2k 0:e614f7875b60 325 /* 1 if you want to do an ARP check on the offered address
iva2k 0:e614f7875b60 326 (recommended if using DHCP). */
iva2k 0:e614f7875b60 327 #define DHCP_DOES_ARP_CHECK (LWIP_DHCP)
iva2k 0:e614f7875b60 328
iva2k 0:e614f7875b60 329 /* ---------- AUTOIP options ------- */
iva2k 0:e614f7875b60 330 #define LWIP_AUTOIP 0
iva2k 0:e614f7875b60 331
iva2k 0:e614f7875b60 332 /* ---------- SNMP options ---------- */
iva2k 0:e614f7875b60 333 /** @todo SNMP is experimental for now
iva2k 0:e614f7875b60 334 @note UDP must be available for SNMP transport */
iva2k 0:e614f7875b60 335 #ifndef LWIP_SNMP
iva2k 0:e614f7875b60 336 #define LWIP_SNMP 0
iva2k 0:e614f7875b60 337 #endif
iva2k 0:e614f7875b60 338
iva2k 0:e614f7875b60 339
iva2k 0:e614f7875b60 340 #ifndef SNMP_PRIVATE_MIB
iva2k 0:e614f7875b60 341 #define SNMP_PRIVATE_MIB 0
iva2k 0:e614f7875b60 342 #endif
iva2k 0:e614f7875b60 343
iva2k 0:e614f7875b60 344
iva2k 0:e614f7875b60 345 /* ---------- UDP options ---------- */
iva2k 0:e614f7875b60 346 #define LWIP_UDP 1
iva2k 0:e614f7875b60 347 #define UDP_TTL 255
iva2k 0:e614f7875b60 348
iva2k 0:e614f7875b60 349 /* ---------- DNS options ---------- */
iva2k 0:e614f7875b60 350 #define LWIP_DNS 1
iva2k 0:e614f7875b60 351
iva2k 0:e614f7875b60 352 /* ---------- RAW options ---------- */
iva2k 0:e614f7875b60 353 #define LWIP_RAW 0
iva2k 0:e614f7875b60 354 #define RAW_TTL 255
iva2k 0:e614f7875b60 355
iva2k 0:e614f7875b60 356 /* ---------- Statistics options ---------- */
iva2k 0:e614f7875b60 357 /* individual STATS options can be turned off by defining them to 0
iva2k 0:e614f7875b60 358 * (e.g #define TCP_STATS 0). All of them are turned off if LWIP_STATS
iva2k 0:e614f7875b60 359 * is 0
iva2k 0:e614f7875b60 360 * */
iva2k 0:e614f7875b60 361
iva2k 0:e614f7875b60 362 #define LWIP_STATS 0
iva2k 0:e614f7875b60 363
iva2k 0:e614f7875b60 364 /* ---------- PPP options ---------- */
iva2k 0:e614f7875b60 365
iva2k 0:e614f7875b60 366 #define PPP_SUPPORT NET_PPP /* Set > 0 for PPP */
iva2k 0:e614f7875b60 367
iva2k 0:e614f7875b60 368 #if PPP_SUPPORT > 0
iva2k 0:e614f7875b60 369
iva2k 0:e614f7875b60 370 #define NUM_PPP 1 /* Max PPP sessions. */
iva2k 0:e614f7875b60 371
iva2k 0:e614f7875b60 372
iva2k 0:e614f7875b60 373 /* Select modules to enable. Ideally these would be set in the makefile but
iva2k 0:e614f7875b60 374 * we're limited by the command line length so you need to modify the settings
iva2k 0:e614f7875b60 375 * in this file.
iva2k 0:e614f7875b60 376 */
iva2k 0:e614f7875b60 377 #define PAP_SUPPORT 1 /* Set > 0 for PAP. */
iva2k 0:e614f7875b60 378 #define CHAP_SUPPORT 1 /* Set > 0 for CHAP. */
iva2k 0:e614f7875b60 379 #define MSCHAP_SUPPORT 0 /* Set > 0 for MSCHAP (NOT FUNCTIONAL!) */
iva2k 0:e614f7875b60 380 #define CBCP_SUPPORT 0 /* Set > 0 for CBCP (NOT FUNCTIONAL!) */
iva2k 0:e614f7875b60 381 #define CCP_SUPPORT 0 /* Set > 0 for CCP (NOT FUNCTIONAL!) */
iva2k 0:e614f7875b60 382 #define VJ_SUPPORT 1 /* Set > 0 for VJ header compression. */
iva2k 0:e614f7875b60 383 #define MD5_SUPPORT 1 /* Set > 0 for MD5 (see also CHAP) */
iva2k 0:e614f7875b60 384
iva2k 0:e614f7875b60 385
iva2k 0:e614f7875b60 386 /*
iva2k 0:e614f7875b60 387 * Timeouts.
iva2k 0:e614f7875b60 388 */
iva2k 0:e614f7875b60 389 #define FSM_DEFTIMEOUT 6 /* Timeout time in seconds */
iva2k 0:e614f7875b60 390 #define FSM_DEFMAXTERMREQS 2 /* Maximum Terminate-Request transmissions */
iva2k 0:e614f7875b60 391 #define FSM_DEFMAXCONFREQS 10 /* Maximum Configure-Request transmissions */
iva2k 0:e614f7875b60 392 #define FSM_DEFMAXNAKLOOPS 5 /* Maximum number of nak loops */
iva2k 0:e614f7875b60 393
iva2k 0:e614f7875b60 394 #define UPAP_DEFTIMEOUT 6 /* Timeout (seconds) for retransmitting req */
iva2k 0:e614f7875b60 395 #define UPAP_DEFREQTIME 30 /* Time to wait for auth-req from peer */
iva2k 0:e614f7875b60 396
iva2k 0:e614f7875b60 397 #define CHAP_DEFTIMEOUT 6 /* Timeout time in seconds */
iva2k 0:e614f7875b60 398 #define CHAP_DEFTRANSMITS 10 /* max # times to send challenge */
iva2k 0:e614f7875b60 399
iva2k 0:e614f7875b60 400
iva2k 0:e614f7875b60 401 /* Interval in seconds between keepalive echo requests, 0 to disable. */
iva2k 0:e614f7875b60 402 #if 1
iva2k 0:e614f7875b60 403 #define LCP_ECHOINTERVAL 0
iva2k 0:e614f7875b60 404 #else
iva2k 0:e614f7875b60 405
iva2k 0:e614f7875b60 406 #define LCP_ECHOINTERVAL 10
iva2k 0:e614f7875b60 407 #endif
iva2k 0:e614f7875b60 408
iva2k 0:e614f7875b60 409
iva2k 0:e614f7875b60 410 /* Number of unanswered echo requests before failure. */
iva2k 0:e614f7875b60 411 #define LCP_MAXECHOFAILS 3
iva2k 0:e614f7875b60 412
iva2k 0:e614f7875b60 413 /* Max Xmit idle time (in jiffies) before resend flag char. */
iva2k 0:e614f7875b60 414 #define PPP_MAXIDLEFLAG 0//Send it every time//100
iva2k 0:e614f7875b60 415
iva2k 0:e614f7875b60 416 /*
iva2k 0:e614f7875b60 417 * Packet sizes
iva2k 0:e614f7875b60 418 *
iva2k 0:e614f7875b60 419 * Note - lcp shouldn't be allowed to negotiate stuff outside these
iva2k 0:e614f7875b60 420 * limits. See lcp.h in the pppd directory.
iva2k 0:e614f7875b60 421 * (XXX - these constants should simply be shared by lcp.c instead
iva2k 0:e614f7875b60 422 * of living in lcp.h)
iva2k 0:e614f7875b60 423 */
iva2k 0:e614f7875b60 424 #define PPP_MTU 1500 /* Default MTU (size of Info field) */
iva2k 0:e614f7875b60 425 #if 0
iva2k 0:e614f7875b60 426 #define PPP_MAXMTU 65535 - (PPP_HDRLEN + PPP_FCSLEN)
iva2k 0:e614f7875b60 427 #else
iva2k 0:e614f7875b60 428
iva2k 0:e614f7875b60 429 #define PPP_MAXMTU 1500 /* Largest MTU we allow */
iva2k 0:e614f7875b60 430 #endif
iva2k 0:e614f7875b60 431
iva2k 0:e614f7875b60 432 #define PPP_MINMTU 64
iva2k 0:e614f7875b60 433 #define PPP_MRU 1500 /* default MRU = max length of info field */
iva2k 0:e614f7875b60 434 #define PPP_MAXMRU 1500 /* Largest MRU we allow */
iva2k 0:e614f7875b60 435 #define PPP_DEFMRU 296 /* Try for this */
iva2k 0:e614f7875b60 436 #define PPP_MINMRU 128 /* No MRUs below this */
iva2k 0:e614f7875b60 437
iva2k 0:e614f7875b60 438
iva2k 0:e614f7875b60 439 #define MAXNAMELEN 64 /* max length of hostname or name for auth */
iva2k 0:e614f7875b60 440 #define MAXSECRETLEN 64 /* max length of password or secret */
iva2k 0:e614f7875b60 441
iva2k 0:e614f7875b60 442 #endif /* PPP_SUPPORT > 0 */
iva2k 0:e614f7875b60 443
iva2k 0:e614f7875b60 444 //C++ Compat
iva2k 0:e614f7875b60 445 #define try vTry
iva2k 0:e614f7875b60 446
iva2k 0:e614f7875b60 447 #endif
iva2k 0:e614f7875b60 448
iva2k 0:e614f7875b60 449
iva2k 0:e614f7875b60 450 #endif /* __LWIPOPTS_H__ */