Used in Live Traffic Update Nokia LCD Display Project

Fork of NetServices by Segundo Equipo

Committer:
rrajan8
Date:
Wed Mar 06 19:07:23 2013 +0000
Revision:
8:92b57208ab99
Parent:
0:ac1725ba162c
This project utilizes mbed's networking features to display live traffic updates on the Nokia LCD using the MapQuest API's Traffic Web Service.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
segundo 0:ac1725ba162c 1 /**
segundo 0:ac1725ba162c 2 * @file
segundo 0:ac1725ba162c 3 * Modules initialization
segundo 0:ac1725ba162c 4 *
segundo 0:ac1725ba162c 5 */
segundo 0:ac1725ba162c 6
segundo 0:ac1725ba162c 7 /*
segundo 0:ac1725ba162c 8 * Copyright (c) 2001-2004 Swedish Institute of Computer Science.
segundo 0:ac1725ba162c 9 * All rights reserved.
segundo 0:ac1725ba162c 10 *
segundo 0:ac1725ba162c 11 * Redistribution and use in source and binary forms, with or without modification,
segundo 0:ac1725ba162c 12 * are permitted provided that the following conditions are met:
segundo 0:ac1725ba162c 13 *
segundo 0:ac1725ba162c 14 * 1. Redistributions of source code must retain the above copyright notice,
segundo 0:ac1725ba162c 15 * this list of conditions and the following disclaimer.
segundo 0:ac1725ba162c 16 * 2. Redistributions in binary form must reproduce the above copyright notice,
segundo 0:ac1725ba162c 17 * this list of conditions and the following disclaimer in the documentation
segundo 0:ac1725ba162c 18 * and/or other materials provided with the distribution.
segundo 0:ac1725ba162c 19 * 3. The name of the author may not be used to endorse or promote products
segundo 0:ac1725ba162c 20 * derived from this software without specific prior written permission.
segundo 0:ac1725ba162c 21 *
segundo 0:ac1725ba162c 22 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
segundo 0:ac1725ba162c 23 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
segundo 0:ac1725ba162c 24 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
segundo 0:ac1725ba162c 25 * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
segundo 0:ac1725ba162c 26 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
segundo 0:ac1725ba162c 27 * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
segundo 0:ac1725ba162c 28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
segundo 0:ac1725ba162c 29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
segundo 0:ac1725ba162c 30 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
segundo 0:ac1725ba162c 31 * OF SUCH DAMAGE.
segundo 0:ac1725ba162c 32 *
segundo 0:ac1725ba162c 33 * This file is part of the lwIP TCP/IP stack.
segundo 0:ac1725ba162c 34 *
segundo 0:ac1725ba162c 35 * Author: Adam Dunkels <adam@sics.se>
segundo 0:ac1725ba162c 36 *
segundo 0:ac1725ba162c 37 */
segundo 0:ac1725ba162c 38
segundo 0:ac1725ba162c 39 #include "lwip/opt.h"
segundo 0:ac1725ba162c 40
segundo 0:ac1725ba162c 41 #include "lwip/init.h"
segundo 0:ac1725ba162c 42 #include "lwip/stats.h"
segundo 0:ac1725ba162c 43 #include "lwip/sys.h"
segundo 0:ac1725ba162c 44 #include "lwip/mem.h"
segundo 0:ac1725ba162c 45 #include "lwip/memp.h"
segundo 0:ac1725ba162c 46 #include "lwip/pbuf.h"
segundo 0:ac1725ba162c 47 #include "lwip/netif.h"
segundo 0:ac1725ba162c 48 #include "lwip/sockets.h"
segundo 0:ac1725ba162c 49 #include "lwip/ip.h"
segundo 0:ac1725ba162c 50 #include "lwip/raw.h"
segundo 0:ac1725ba162c 51 #include "lwip/udp.h"
segundo 0:ac1725ba162c 52 #include "lwip/tcp_impl.h"
segundo 0:ac1725ba162c 53 #include "lwip/snmp_msg.h"
segundo 0:ac1725ba162c 54 #include "lwip/autoip.h"
segundo 0:ac1725ba162c 55 #include "lwip/igmp.h"
segundo 0:ac1725ba162c 56 #include "lwip/dns.h"
segundo 0:ac1725ba162c 57 #include "lwip/timers.h"
segundo 0:ac1725ba162c 58 #include "netif/etharp.h"
segundo 0:ac1725ba162c 59
segundo 0:ac1725ba162c 60 /* Compile-time sanity checks for configuration errors.
segundo 0:ac1725ba162c 61 * These can be done independently of LWIP_DEBUG, without penalty.
segundo 0:ac1725ba162c 62 */
segundo 0:ac1725ba162c 63 #ifndef BYTE_ORDER
segundo 0:ac1725ba162c 64 #error "BYTE_ORDER is not defined, you have to define it in your cc.h"
segundo 0:ac1725ba162c 65 #endif
segundo 0:ac1725ba162c 66 #if (!IP_SOF_BROADCAST && IP_SOF_BROADCAST_RECV)
segundo 0:ac1725ba162c 67 #error "If you want to use broadcast filter per pcb on recv operations, you have to define IP_SOF_BROADCAST=1 in your lwipopts.h"
segundo 0:ac1725ba162c 68 #endif
segundo 0:ac1725ba162c 69 #if (!LWIP_ARP && ARP_QUEUEING)
segundo 0:ac1725ba162c 70 #error "If you want to use ARP Queueing, you have to define LWIP_ARP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 71 #endif
segundo 0:ac1725ba162c 72 #if (!LWIP_UDP && LWIP_UDPLITE)
segundo 0:ac1725ba162c 73 #error "If you want to use UDP Lite, you have to define LWIP_UDP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 74 #endif
segundo 0:ac1725ba162c 75 #if (!LWIP_UDP && LWIP_SNMP)
segundo 0:ac1725ba162c 76 #error "If you want to use SNMP, you have to define LWIP_UDP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 77 #endif
segundo 0:ac1725ba162c 78 #if (!LWIP_UDP && LWIP_DHCP)
segundo 0:ac1725ba162c 79 #error "If you want to use DHCP, you have to define LWIP_UDP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 80 #endif
segundo 0:ac1725ba162c 81 #if (!LWIP_UDP && LWIP_IGMP)
segundo 0:ac1725ba162c 82 #error "If you want to use IGMP, you have to define LWIP_UDP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 83 #endif
segundo 0:ac1725ba162c 84 #if (!LWIP_UDP && LWIP_SNMP)
segundo 0:ac1725ba162c 85 #error "If you want to use SNMP, you have to define LWIP_UDP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 86 #endif
segundo 0:ac1725ba162c 87 #if (!LWIP_UDP && LWIP_DNS)
segundo 0:ac1725ba162c 88 #error "If you want to use DNS, you have to define LWIP_UDP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 89 #endif
segundo 0:ac1725ba162c 90 #if (LWIP_ARP && ARP_QUEUEING && (MEMP_NUM_ARP_QUEUE<=0))
segundo 0:ac1725ba162c 91 #error "If you want to use ARP Queueing, you have to define MEMP_NUM_ARP_QUEUE>=1 in your lwipopts.h"
segundo 0:ac1725ba162c 92 #endif
segundo 0:ac1725ba162c 93 #if (LWIP_RAW && (MEMP_NUM_RAW_PCB<=0))
segundo 0:ac1725ba162c 94 #error "If you want to use RAW, you have to define MEMP_NUM_RAW_PCB>=1 in your lwipopts.h"
segundo 0:ac1725ba162c 95 #endif
segundo 0:ac1725ba162c 96 #if (LWIP_UDP && (MEMP_NUM_UDP_PCB<=0))
segundo 0:ac1725ba162c 97 #error "If you want to use UDP, you have to define MEMP_NUM_UDP_PCB>=1 in your lwipopts.h"
segundo 0:ac1725ba162c 98 #endif
segundo 0:ac1725ba162c 99 #if (LWIP_TCP && (MEMP_NUM_TCP_PCB<=0))
segundo 0:ac1725ba162c 100 #error "If you want to use TCP, you have to define MEMP_NUM_TCP_PCB>=1 in your lwipopts.h"
segundo 0:ac1725ba162c 101 #endif
segundo 0:ac1725ba162c 102 #if (LWIP_TCP && (TCP_WND > 0xffff))
segundo 0:ac1725ba162c 103 #error "If you want to use TCP, TCP_WND must fit in an u16_t, so, you have to reduce it in your lwipopts.h"
segundo 0:ac1725ba162c 104 #endif
segundo 0:ac1725ba162c 105 #if (LWIP_TCP && (TCP_SND_QUEUELEN > 0xffff))
segundo 0:ac1725ba162c 106 #error "If you want to use TCP, TCP_SND_QUEUELEN must fit in an u16_t, so, you have to reduce it in your lwipopts.h"
segundo 0:ac1725ba162c 107 #endif
segundo 0:ac1725ba162c 108 #if (LWIP_TCP && ((TCP_MAXRTX > 12) || (TCP_SYNMAXRTX > 12)))
segundo 0:ac1725ba162c 109 #error "If you want to use TCP, TCP_MAXRTX and TCP_SYNMAXRTX must less or equal to 12 (due to tcp_backoff table), so, you have to reduce them in your lwipopts.h"
segundo 0:ac1725ba162c 110 #endif
segundo 0:ac1725ba162c 111 #if (LWIP_TCP && TCP_LISTEN_BACKLOG && (TCP_DEFAULT_LISTEN_BACKLOG < 0) || (TCP_DEFAULT_LISTEN_BACKLOG > 0xff))
segundo 0:ac1725ba162c 112 #error "If you want to use TCP backlog, TCP_DEFAULT_LISTEN_BACKLOG must fit into an u8_t"
segundo 0:ac1725ba162c 113 #endif
segundo 0:ac1725ba162c 114 #if (LWIP_IGMP && (MEMP_NUM_IGMP_GROUP<=1))
segundo 0:ac1725ba162c 115 #error "If you want to use IGMP, you have to define MEMP_NUM_IGMP_GROUP>1 in your lwipopts.h"
segundo 0:ac1725ba162c 116 #endif
segundo 0:ac1725ba162c 117 #if (LWIP_NETIF_API && (NO_SYS==1))
segundo 0:ac1725ba162c 118 #error "If you want to use NETIF API, you have to define NO_SYS=0 in your lwipopts.h"
segundo 0:ac1725ba162c 119 #endif
segundo 0:ac1725ba162c 120 #if ((LWIP_SOCKET || LWIP_NETCONN) && (NO_SYS==1))
segundo 0:ac1725ba162c 121 #error "If you want to use Sequential API, you have to define NO_SYS=0 in your lwipopts.h"
segundo 0:ac1725ba162c 122 #endif
segundo 0:ac1725ba162c 123 #if ((LWIP_NETCONN || LWIP_SOCKET) && (MEMP_NUM_TCPIP_MSG_API<=0))
segundo 0:ac1725ba162c 124 #error "If you want to use Sequential API, you have to define MEMP_NUM_TCPIP_MSG_API>=1 in your lwipopts.h"
segundo 0:ac1725ba162c 125 #endif
segundo 0:ac1725ba162c 126 #if (!LWIP_NETCONN && LWIP_SOCKET)
segundo 0:ac1725ba162c 127 #error "If you want to use Socket API, you have to define LWIP_NETCONN=1 in your lwipopts.h"
segundo 0:ac1725ba162c 128 #endif
segundo 0:ac1725ba162c 129 #if (((!LWIP_DHCP) || (!LWIP_AUTOIP)) && LWIP_DHCP_AUTOIP_COOP)
segundo 0:ac1725ba162c 130 #error "If you want to use DHCP/AUTOIP cooperation mode, you have to define LWIP_DHCP=1 and LWIP_AUTOIP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 131 #endif
segundo 0:ac1725ba162c 132 #if (((!LWIP_DHCP) || (!LWIP_ARP)) && DHCP_DOES_ARP_CHECK)
segundo 0:ac1725ba162c 133 #error "If you want to use DHCP ARP checking, you have to define LWIP_DHCP=1 and LWIP_ARP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 134 #endif
segundo 0:ac1725ba162c 135 #if (!LWIP_ARP && LWIP_AUTOIP)
segundo 0:ac1725ba162c 136 #error "If you want to use AUTOIP, you have to define LWIP_ARP=1 in your lwipopts.h"
segundo 0:ac1725ba162c 137 #endif
segundo 0:ac1725ba162c 138 #if (LWIP_SNMP && (SNMP_CONCURRENT_REQUESTS<=0))
segundo 0:ac1725ba162c 139 #error "If you want to use SNMP, you have to define SNMP_CONCURRENT_REQUESTS>=1 in your lwipopts.h"
segundo 0:ac1725ba162c 140 #endif
segundo 0:ac1725ba162c 141 #if (LWIP_SNMP && (SNMP_TRAP_DESTINATIONS<=0))
segundo 0:ac1725ba162c 142 #error "If you want to use SNMP, you have to define SNMP_TRAP_DESTINATIONS>=1 in your lwipopts.h"
segundo 0:ac1725ba162c 143 #endif
segundo 0:ac1725ba162c 144 #if (LWIP_TCP && ((LWIP_EVENT_API && LWIP_CALLBACK_API) || (!LWIP_EVENT_API && !LWIP_CALLBACK_API)))
segundo 0:ac1725ba162c 145 #error "One and exactly one of LWIP_EVENT_API and LWIP_CALLBACK_API has to be enabled in your lwipopts.h"
segundo 0:ac1725ba162c 146 #endif
segundo 0:ac1725ba162c 147 /* There must be sufficient timeouts, taking into account requirements of the subsystems. */
segundo 0:ac1725ba162c 148 #if LWIP_TIMERS && (MEMP_NUM_SYS_TIMEOUT < (LWIP_TCP + IP_REASSEMBLY + LWIP_ARP + (2*LWIP_DHCP) + LWIP_AUTOIP + LWIP_IGMP + LWIP_DNS + PPP_SUPPORT))
segundo 0:ac1725ba162c 149 #error "MEMP_NUM_SYS_TIMEOUT is too low to accomodate all required timeouts"
segundo 0:ac1725ba162c 150 #endif
segundo 0:ac1725ba162c 151 #if (IP_REASSEMBLY && (MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS))
segundo 0:ac1725ba162c 152 #error "MEMP_NUM_REASSDATA > IP_REASS_MAX_PBUFS doesn't make sense since each struct ip_reassdata must hold 2 pbufs at least!"
segundo 0:ac1725ba162c 153 #endif
segundo 0:ac1725ba162c 154 #if (MEM_LIBC_MALLOC && MEM_USE_POOLS)
segundo 0:ac1725ba162c 155 #error "MEM_LIBC_MALLOC and MEM_USE_POOLS may not both be simultaneously enabled in your lwipopts.h"
segundo 0:ac1725ba162c 156 #endif
segundo 0:ac1725ba162c 157 #if (MEM_USE_POOLS && !MEMP_USE_CUSTOM_POOLS)
segundo 0:ac1725ba162c 158 #error "MEM_USE_POOLS requires custom pools (MEMP_USE_CUSTOM_POOLS) to be enabled in your lwipopts.h"
segundo 0:ac1725ba162c 159 #endif
segundo 0:ac1725ba162c 160 #if (PBUF_POOL_BUFSIZE <= MEM_ALIGNMENT)
segundo 0:ac1725ba162c 161 #error "PBUF_POOL_BUFSIZE must be greater than MEM_ALIGNMENT or the offset may take the full first pbuf"
segundo 0:ac1725ba162c 162 #endif
segundo 0:ac1725ba162c 163 #if (TCP_QUEUE_OOSEQ && !LWIP_TCP)
segundo 0:ac1725ba162c 164 #error "TCP_QUEUE_OOSEQ requires LWIP_TCP"
segundo 0:ac1725ba162c 165 #endif
segundo 0:ac1725ba162c 166 #if (DNS_LOCAL_HOSTLIST && !DNS_LOCAL_HOSTLIST_IS_DYNAMIC && !(defined(DNS_LOCAL_HOSTLIST_INIT)))
segundo 0:ac1725ba162c 167 #error "you have to define define DNS_LOCAL_HOSTLIST_INIT {{'host1', 0x123}, {'host2', 0x234}} to initialize DNS_LOCAL_HOSTLIST"
segundo 0:ac1725ba162c 168 #endif
segundo 0:ac1725ba162c 169 #if PPP_SUPPORT && !PPPOS_SUPPORT & !PPPOE_SUPPORT
segundo 0:ac1725ba162c 170 #error "PPP_SUPPORT needs either PPPOS_SUPPORT or PPPOE_SUPPORT turned on"
segundo 0:ac1725ba162c 171 #endif
segundo 0:ac1725ba162c 172 #if !LWIP_ETHERNET && (LWIP_ARP || PPPOE_SUPPORT)
segundo 0:ac1725ba162c 173 #error "LWIP_ETHERNET needs to be turned on for LWIP_ARP or PPPOE_SUPPORT"
segundo 0:ac1725ba162c 174 #endif
segundo 0:ac1725ba162c 175 #if LWIP_IGMP && !defined(LWIP_RAND)
segundo 0:ac1725ba162c 176 #error "When using IGMP, LWIP_RAND() needs to be defined to a random-function returning an u32_t random value"
segundo 0:ac1725ba162c 177 #endif
segundo 0:ac1725ba162c 178 #if LWIP_TCPIP_CORE_LOCKING_INPUT && !LWIP_TCPIP_CORE_LOCKING
segundo 0:ac1725ba162c 179 #error "When using LWIP_TCPIP_CORE_LOCKING_INPUT, LWIP_TCPIP_CORE_LOCKING must be enabled, too"
segundo 0:ac1725ba162c 180 #endif
segundo 0:ac1725ba162c 181 #if LWIP_TCP && LWIP_NETIF_TX_SINGLE_PBUF && !TCP_OVERSIZE
segundo 0:ac1725ba162c 182 #error "LWIP_NETIF_TX_SINGLE_PBUF needs TCP_OVERSIZE enabled to create single-pbuf TCP packets"
segundo 0:ac1725ba162c 183 #endif
segundo 0:ac1725ba162c 184 #if IP_FRAG && IP_FRAG_USES_STATIC_BUF && LWIP_NETIF_TX_SINGLE_PBUF
segundo 0:ac1725ba162c 185 #error "LWIP_NETIF_TX_SINGLE_PBUF does not work with IP_FRAG_USES_STATIC_BUF==1 as that creates pbuf queues"
segundo 0:ac1725ba162c 186 #endif
segundo 0:ac1725ba162c 187
segundo 0:ac1725ba162c 188
segundo 0:ac1725ba162c 189 /* Compile-time checks for deprecated options.
segundo 0:ac1725ba162c 190 */
segundo 0:ac1725ba162c 191 #ifdef MEMP_NUM_TCPIP_MSG
segundo 0:ac1725ba162c 192 #error "MEMP_NUM_TCPIP_MSG option is deprecated. Remove it from your lwipopts.h."
segundo 0:ac1725ba162c 193 #endif
segundo 0:ac1725ba162c 194 #ifdef MEMP_NUM_API_MSG
segundo 0:ac1725ba162c 195 #error "MEMP_NUM_API_MSG option is deprecated. Remove it from your lwipopts.h."
segundo 0:ac1725ba162c 196 #endif
segundo 0:ac1725ba162c 197 #ifdef TCP_REXMIT_DEBUG
segundo 0:ac1725ba162c 198 #error "TCP_REXMIT_DEBUG option is deprecated. Remove it from your lwipopts.h."
segundo 0:ac1725ba162c 199 #endif
segundo 0:ac1725ba162c 200 #ifdef RAW_STATS
segundo 0:ac1725ba162c 201 #error "RAW_STATS option is deprecated. Remove it from your lwipopts.h."
segundo 0:ac1725ba162c 202 #endif
segundo 0:ac1725ba162c 203 #ifdef ETHARP_QUEUE_FIRST
segundo 0:ac1725ba162c 204 #error "ETHARP_QUEUE_FIRST option is deprecated. Remove it from your lwipopts.h."
segundo 0:ac1725ba162c 205 #endif
segundo 0:ac1725ba162c 206 #ifdef ETHARP_ALWAYS_INSERT
segundo 0:ac1725ba162c 207 #error "ETHARP_ALWAYS_INSERT option is deprecated. Remove it from your lwipopts.h."
segundo 0:ac1725ba162c 208 #endif
segundo 0:ac1725ba162c 209
segundo 0:ac1725ba162c 210 #ifdef LWIP_DEBUG
segundo 0:ac1725ba162c 211 static void
segundo 0:ac1725ba162c 212 lwip_sanity_check(void)
segundo 0:ac1725ba162c 213 {
segundo 0:ac1725ba162c 214 /* Warnings */
segundo 0:ac1725ba162c 215 #if LWIP_NETCONN
segundo 0:ac1725ba162c 216 if (MEMP_NUM_NETCONN > (MEMP_NUM_TCP_PCB+MEMP_NUM_TCP_PCB_LISTEN+MEMP_NUM_UDP_PCB+MEMP_NUM_RAW_PCB))
segundo 0:ac1725ba162c 217 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_NETCONN should be less than the sum of MEMP_NUM_{TCP,RAW,UDP}_PCB+MEMP_NUM_TCP_PCB_LISTEN\n"));
segundo 0:ac1725ba162c 218 #endif /* LWIP_NETCONN */
segundo 0:ac1725ba162c 219 #if LWIP_TCP
segundo 0:ac1725ba162c 220 if (MEMP_NUM_TCP_SEG < TCP_SND_QUEUELEN)
segundo 0:ac1725ba162c 221 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: MEMP_NUM_TCP_SEG should be at least as big as TCP_SND_QUEUELEN\n"));
segundo 0:ac1725ba162c 222 if (TCP_SND_BUF < 2 * TCP_MSS)
segundo 0:ac1725ba162c 223 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_BUF must be at least as much as (2 * TCP_MSS) for things to work smoothly\n"));
segundo 0:ac1725ba162c 224 if (TCP_SND_QUEUELEN < (2 * (TCP_SND_BUF/TCP_MSS)))
segundo 0:ac1725ba162c 225 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SND_QUEUELEN must be at least as much as (2 * TCP_SND_BUF/TCP_MSS) for things to work\n"));
segundo 0:ac1725ba162c 226 if (TCP_SNDLOWAT >= TCP_SND_BUF)
segundo 0:ac1725ba162c 227 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SNDLOWAT must be less than TCP_SND_BUF.\n"));
segundo 0:ac1725ba162c 228 if (TCP_SNDQUEUELOWAT >= TCP_SND_QUEUELEN)
segundo 0:ac1725ba162c 229 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_SNDQUEUELOWAT must be less than TCP_SND_QUEUELEN.\n"));
segundo 0:ac1725ba162c 230 if (TCP_WND > (PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE))
segundo 0:ac1725ba162c 231 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is larger than space provided by PBUF_POOL_SIZE*PBUF_POOL_BUFSIZE\n"));
segundo 0:ac1725ba162c 232 if (TCP_WND < TCP_MSS)
segundo 0:ac1725ba162c 233 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: TCP_WND is smaller than MSS\n"));
segundo 0:ac1725ba162c 234 #endif /* LWIP_TCP */
segundo 0:ac1725ba162c 235 #if LWIP_SOCKET
segundo 0:ac1725ba162c 236 /* Check that the SO_* socket options and SOF_* lwIP-internal flags match */
segundo 0:ac1725ba162c 237 if (SO_ACCEPTCONN != SOF_ACCEPTCONN)
segundo 0:ac1725ba162c 238 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: SO_ACCEPTCONN != SOF_ACCEPTCONN\n"));
segundo 0:ac1725ba162c 239 if (SO_REUSEADDR != SOF_REUSEADDR)
segundo 0:ac1725ba162c 240 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: SO_REUSEADDR != SOF_REUSEADDR\n"));
segundo 0:ac1725ba162c 241 if (SO_KEEPALIVE != SOF_KEEPALIVE)
segundo 0:ac1725ba162c 242 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: SO_KEEPALIVE != SOF_KEEPALIVE\n"));
segundo 0:ac1725ba162c 243 if (SO_BROADCAST != SOF_BROADCAST)
segundo 0:ac1725ba162c 244 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: SO_BROADCAST != SOF_BROADCAST\n"));
segundo 0:ac1725ba162c 245 if (SO_LINGER != SOF_LINGER)
segundo 0:ac1725ba162c 246 LWIP_PLATFORM_DIAG(("lwip_sanity_check: WARNING: SO_LINGER != SOF_LINGER\n"));
segundo 0:ac1725ba162c 247 #endif /* LWIP_SOCKET */
segundo 0:ac1725ba162c 248 }
segundo 0:ac1725ba162c 249 #else /* LWIP_DEBUG */
segundo 0:ac1725ba162c 250 #define lwip_sanity_check()
segundo 0:ac1725ba162c 251 #endif /* LWIP_DEBUG */
segundo 0:ac1725ba162c 252
segundo 0:ac1725ba162c 253 /**
segundo 0:ac1725ba162c 254 * Perform Sanity check of user-configurable values, and initialize all modules.
segundo 0:ac1725ba162c 255 */
segundo 0:ac1725ba162c 256 void
segundo 0:ac1725ba162c 257 lwip_init(void)
segundo 0:ac1725ba162c 258 {
segundo 0:ac1725ba162c 259 /* Sanity check user-configurable values */
segundo 0:ac1725ba162c 260 lwip_sanity_check();
segundo 0:ac1725ba162c 261
segundo 0:ac1725ba162c 262 /* Modules initialization */
segundo 0:ac1725ba162c 263 stats_init();
segundo 0:ac1725ba162c 264 #if !NO_SYS
segundo 0:ac1725ba162c 265 sys_init();
segundo 0:ac1725ba162c 266 #endif /* !NO_SYS */
segundo 0:ac1725ba162c 267 mem_init();
segundo 0:ac1725ba162c 268 memp_init();
segundo 0:ac1725ba162c 269 pbuf_init();
segundo 0:ac1725ba162c 270 netif_init();
segundo 0:ac1725ba162c 271 #if LWIP_SOCKET
segundo 0:ac1725ba162c 272 lwip_socket_init();
segundo 0:ac1725ba162c 273 #endif /* LWIP_SOCKET */
segundo 0:ac1725ba162c 274 ip_init();
segundo 0:ac1725ba162c 275 #if LWIP_ARP
segundo 0:ac1725ba162c 276 etharp_init();
segundo 0:ac1725ba162c 277 #endif /* LWIP_ARP */
segundo 0:ac1725ba162c 278 #if LWIP_RAW
segundo 0:ac1725ba162c 279 raw_init();
segundo 0:ac1725ba162c 280 #endif /* LWIP_RAW */
segundo 0:ac1725ba162c 281 #if LWIP_UDP
segundo 0:ac1725ba162c 282 udp_init();
segundo 0:ac1725ba162c 283 #endif /* LWIP_UDP */
segundo 0:ac1725ba162c 284 #if LWIP_TCP
segundo 0:ac1725ba162c 285 tcp_init();
segundo 0:ac1725ba162c 286 #endif /* LWIP_TCP */
segundo 0:ac1725ba162c 287 #if LWIP_SNMP
segundo 0:ac1725ba162c 288 snmp_init();
segundo 0:ac1725ba162c 289 #endif /* LWIP_SNMP */
segundo 0:ac1725ba162c 290 #if LWIP_AUTOIP
segundo 0:ac1725ba162c 291 autoip_init();
segundo 0:ac1725ba162c 292 #endif /* LWIP_AUTOIP */
segundo 0:ac1725ba162c 293 #if LWIP_IGMP
segundo 0:ac1725ba162c 294 igmp_init();
segundo 0:ac1725ba162c 295 #endif /* LWIP_IGMP */
segundo 0:ac1725ba162c 296 #if LWIP_DNS
segundo 0:ac1725ba162c 297 dns_init();
segundo 0:ac1725ba162c 298 #endif /* LWIP_DNS */
segundo 0:ac1725ba162c 299
segundo 0:ac1725ba162c 300 #if LWIP_TIMERS
segundo 0:ac1725ba162c 301 sys_timeouts_init();
segundo 0:ac1725ba162c 302 #endif /* LWIP_TIMERS */
segundo 0:ac1725ba162c 303 }