Official mbed lwIP library (version 1.4.0)

Dependents:   LwIPNetworking NetServicesMin EthernetInterface EthernetInterface_RSF ... more

Legacy Networking Libraries

This is an mbed 2 networking library. For mbed OS 5, lwip has been integrated with built-in networking interfaces. The networking libraries have been revised to better support additional network stacks and thread safety here.

This library is based on the code of lwIP v1.4.0

Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
All rights reserved. 

Redistribution and use in source and binary forms, with or without modification, 
are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
   this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.
3. The name of the author may not be used to endorse or promote products
   derived from this software without specific prior written permission. 

THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT 
SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
OF SUCH DAMAGE.
Committer:
mbed_official
Date:
Mon Dec 09 15:15:09 2013 +0000
Revision:
14:3d3ad63396b2
Parent:
12:931deec14b08
Child:
16:092c37b63ee8
Synchronized with git revision 28b16e995df50b06bab7ba109952dfca9d867b67

Full URL: https://github.com/mbedmicro/mbed/commit/28b16e995df50b06bab7ba109952dfca9d867b67/

[LPC4088]: Networking was broking when splitting peripheral RAM into two...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 6:00bf89892c76 1 /* Copyright (C) 2012 mbed.org, MIT License
emilmont 6:00bf89892c76 2 *
emilmont 6:00bf89892c76 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
emilmont 6:00bf89892c76 4 * and associated documentation files (the "Software"), to deal in the Software without restriction,
emilmont 6:00bf89892c76 5 * including without limitation the rights to use, copy, modify, merge, publish, distribute,
emilmont 6:00bf89892c76 6 * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
emilmont 6:00bf89892c76 7 * furnished to do so, subject to the following conditions:
emilmont 6:00bf89892c76 8 *
emilmont 6:00bf89892c76 9 * The above copyright notice and this permission notice shall be included in all copies or
emilmont 6:00bf89892c76 10 * substantial portions of the Software.
emilmont 6:00bf89892c76 11 *
emilmont 6:00bf89892c76 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
emilmont 6:00bf89892c76 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
emilmont 6:00bf89892c76 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
emilmont 6:00bf89892c76 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
emilmont 6:00bf89892c76 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
emilmont 6:00bf89892c76 17 */
emilmont 6:00bf89892c76 18
emilmont 6:00bf89892c76 19 #ifndef LWIPOPTS_H
emilmont 6:00bf89892c76 20 #define LWIPOPTS_H
emilmont 6:00bf89892c76 21
emilmont 6:00bf89892c76 22 #include "lwipopts_conf.h"
emilmont 6:00bf89892c76 23
emilmont 6:00bf89892c76 24 // Operating System
emilmont 6:00bf89892c76 25 #define NO_SYS 0
emilmont 6:00bf89892c76 26
emilmont 6:00bf89892c76 27 #if NO_SYS == 0
emilmont 6:00bf89892c76 28 #include "cmsis_os.h"
emilmont 6:00bf89892c76 29
bogdanm 12:931deec14b08 30 #define SYS_LIGHTWEIGHT_PROT 1
bogdanm 12:931deec14b08 31
emilmont 6:00bf89892c76 32 #define LWIP_RAW 0
emilmont 6:00bf89892c76 33
bogdanm 11:4b3f6f8b92d2 34 #define TCPIP_MBOX_SIZE 8
bogdanm 11:4b3f6f8b92d2 35 #define DEFAULT_TCP_RECVMBOX_SIZE 8
bogdanm 11:4b3f6f8b92d2 36 #define DEFAULT_UDP_RECVMBOX_SIZE 8
bogdanm 11:4b3f6f8b92d2 37 #define DEFAULT_RAW_RECVMBOX_SIZE 8
bogdanm 11:4b3f6f8b92d2 38 #define DEFAULT_ACCEPTMBOX_SIZE 8
emilmont 6:00bf89892c76 39
emilmont 6:00bf89892c76 40 #define TCPIP_THREAD_STACKSIZE 1024
bogdanm 11:4b3f6f8b92d2 41 #define TCPIP_THREAD_PRIO (osPriorityNormal)
emilmont 6:00bf89892c76 42
emilmont 6:00bf89892c76 43 #define DEFAULT_THREAD_STACKSIZE 512
emilmont 6:00bf89892c76 44
emilmont 6:00bf89892c76 45 #define MEMP_NUM_SYS_TIMEOUT 16
emilmont 6:00bf89892c76 46 #endif
emilmont 6:00bf89892c76 47
emilmont 6:00bf89892c76 48 // 32-bit alignment
emilmont 6:00bf89892c76 49 #define MEM_ALIGNMENT 4
emilmont 6:00bf89892c76 50
mbed_official 14:3d3ad63396b2 51 #if defined(TARGET_LPC4088)
mbed_official 14:3d3ad63396b2 52 #define MEM_SIZE 15360
mbed_official 14:3d3ad63396b2 53 #else
emilmont 6:00bf89892c76 54 #define MEM_SIZE 16362
mbed_official 14:3d3ad63396b2 55 #endif
emilmont 6:00bf89892c76 56
emilmont 6:00bf89892c76 57 #define PBUF_POOL_SIZE 5
emilmont 6:00bf89892c76 58 #define MEMP_NUM_TCP_PCB_LISTEN 4
emilmont 6:00bf89892c76 59 #define MEMP_NUM_TCP_PCB 4
emilmont 6:00bf89892c76 60 #define MEMP_NUM_PBUF 8
emilmont 6:00bf89892c76 61
emilmont 6:00bf89892c76 62 #define TCP_QUEUE_OOSEQ 0
emilmont 6:00bf89892c76 63 #define TCP_OVERSIZE 0
emilmont 6:00bf89892c76 64
emilmont 6:00bf89892c76 65 #define LWIP_DHCP 1
emilmont 6:00bf89892c76 66 #define LWIP_DNS 1
emilmont 6:00bf89892c76 67
emilmont 8:f9d0ac9dd036 68 // Support Multicast
emilmont 8:f9d0ac9dd036 69 #include "stdlib.h"
emilmont 8:f9d0ac9dd036 70 #define LWIP_IGMP 1
emilmont 8:f9d0ac9dd036 71 #define LWIP_RAND() rand()
emilmont 8:f9d0ac9dd036 72
emilmont 6:00bf89892c76 73 #define LWIP_COMPAT_SOCKETS 0
emilmont 6:00bf89892c76 74 #define LWIP_POSIX_SOCKETS_IO_NAMES 0
emilmont 6:00bf89892c76 75 #define LWIP_SO_RCVTIMEO 1
emilmont 6:00bf89892c76 76 #define LWIP_TCP_KEEPALIVE 1
emilmont 6:00bf89892c76 77
emilmont 6:00bf89892c76 78 // Debug Options
emilmont 6:00bf89892c76 79 // #define LWIP_DEBUG
emilmont 6:00bf89892c76 80 #define UDP_LPC_EMAC LWIP_DBG_OFF
emilmont 6:00bf89892c76 81 #define SYS_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 82 #define PPP_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 83 #define IP_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 84 #define MEM_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 85 #define MEMP_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 86 #define PBUF_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 87 #define API_LIB_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 88 #define API_MSG_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 89 #define TCPIP_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 90 #define SOCKETS_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 91 #define TCP_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 92 #define TCP_INPUT_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 93 #define TCP_FR_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 94 #define TCP_RTO_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 95 #define TCP_CWND_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 96 #define TCP_WND_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 97 #define TCP_OUTPUT_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 98 #define TCP_RST_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 99 #define TCP_QLEN_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 100 #define ETHARP_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 101 #define NETIF_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 102 #define DHCP_DEBUG LWIP_DBG_OFF
emilmont 6:00bf89892c76 103
emilmont 6:00bf89892c76 104 #ifdef LWIP_DEBUG
emilmont 6:00bf89892c76 105 #define MEMP_OVERFLOW_CHECK 1
emilmont 6:00bf89892c76 106 #define MEMP_SANITY_CHECK 1
emilmont 6:00bf89892c76 107 #else
bogdanm 12:931deec14b08 108 #define LWIP_NOASSERT 1
emilmont 6:00bf89892c76 109 #define LWIP_STATS 0
emilmont 6:00bf89892c76 110 #endif
emilmont 6:00bf89892c76 111
emilmont 6:00bf89892c76 112 #define LWIP_PLATFORM_BYTESWAP 1
emilmont 6:00bf89892c76 113
emilmont 6:00bf89892c76 114 #if LWIP_TRANSPORT_ETHERNET
emilmont 6:00bf89892c76 115
emilmont 6:00bf89892c76 116 /* MSS should match the hardware packet size */
emilmont 6:00bf89892c76 117 #define TCP_MSS 1460
emilmont 6:00bf89892c76 118 #define TCP_SND_BUF (2 * TCP_MSS)
emilmont 6:00bf89892c76 119 #define TCP_WND (2 * TCP_MSS)
emilmont 6:00bf89892c76 120 #define TCP_SND_QUEUELEN (2 * TCP_SND_BUF/TCP_MSS)
emilmont 6:00bf89892c76 121
emilmont 6:00bf89892c76 122 // Broadcast
emilmont 6:00bf89892c76 123 #define IP_SOF_BROADCAST 1
emilmont 6:00bf89892c76 124 #define IP_SOF_BROADCAST_RECV 1
emilmont 6:00bf89892c76 125
emilmont 6:00bf89892c76 126 #define LWIP_BROADCAST_PING 1
emilmont 6:00bf89892c76 127
emilmont 6:00bf89892c76 128 #define LWIP_CHECKSUM_ON_COPY 1
emilmont 6:00bf89892c76 129
emilmont 6:00bf89892c76 130 #define LWIP_NETIF_HOSTNAME 1
emilmont 6:00bf89892c76 131 #define LWIP_NETIF_STATUS_CALLBACK 1
emilmont 7:b061c4dba951 132 #define LWIP_NETIF_LINK_CALLBACK 1
emilmont 6:00bf89892c76 133
emilmont 6:00bf89892c76 134 #elif LWIP_TRANSPORT_PPP
emilmont 6:00bf89892c76 135
emilmont 6:00bf89892c76 136 #define TCP_SND_BUF (3 * 536)
emilmont 6:00bf89892c76 137 #define TCP_WND (2 * 536)
emilmont 6:00bf89892c76 138
emilmont 6:00bf89892c76 139 #define LWIP_ARP 0
emilmont 6:00bf89892c76 140
emilmont 6:00bf89892c76 141 #define PPP_SUPPORT 1
emilmont 6:00bf89892c76 142 #define CHAP_SUPPORT 1
emilmont 6:00bf89892c76 143 #define PAP_SUPPORT 1
emilmont 6:00bf89892c76 144 #define PPP_THREAD_STACKSIZE 4*192
emilmont 6:00bf89892c76 145 #define PPP_THREAD_PRIO 0
emilmont 6:00bf89892c76 146
emilmont 6:00bf89892c76 147 #define MAXNAMELEN 64 /* max length of hostname or name for auth */
emilmont 6:00bf89892c76 148 #define MAXSECRETLEN 64
emilmont 6:00bf89892c76 149
emilmont 6:00bf89892c76 150 #else
emilmont 6:00bf89892c76 151 #error A transport mechanism (Ethernet or PPP) must be defined
emilmont 6:00bf89892c76 152 #endif
emilmont 6:00bf89892c76 153
emilmont 6:00bf89892c76 154 #endif /* LWIPOPTS_H_ */