/*
 *
 *    Copyright (c) 2012-2013 Nest Labs, Inc.
 *    All rights reserved.
 *
 *    Description:
 *      This file describes common compile-time constants used for
 *      configuring LwIP, shared across all products and platforms.
 *
 */

#ifndef __COMMON_LWIPOPTS_H__
#define __COMMON_LWIPOPTS_H__

/** LWIP_TIMEVAL_PRIVATE: if you want to use the struct timeval provided
 * by your system, set this to 0 and include <sys/time.h> in cc.h
 */ 
#define LWIP_TIMEVAL_PRIVATE           (0)

/**
 * LwIP has three memory models it can work with for general memory
 * allocation:
 *
 *   1) Standard C Library APIs and default platform heap.
 *
 *        - Enabled by asserting MEM_LIBC_MALLOC
 *
 *   2) LwIP APIs and LwIP-internal heap (from BSS data).
 *
 *        - Enabled by deasserting MEM_LIBC_MALLOC
 *
 *   3) Pre-allocated binned memory and object pools (from BSS data).
 *
 *        - Enabled by deasserting MEM_LIBC_MALLOC and asserting
 *          MEM_USE_POOLS.
 *
 */

/**
 * Do use the Standard C Library heap and associated APIs.
 */
#define MEM_LIBC_MALLOC                (0)

/**
 * Do not use memory pools to create fixed, statically allocated pools of
 * memory in lieu of the Standard C Library heap and APIs.
 */
#define MEM_USE_POOLS                  (0)

/**
 * Do not use custom memory pools for specific, named LwIP objects, sourced
 * from lwippools.h.
 */
#define MEM_USE_CUSTOM_POOLS           (MEM_USE_POOLS)

/**
 * MEM_SIZE: The size of the built-in LwIP heap memory.
 *
 * We size this for:
 *
 *   1 @ 1500 bytes for maximally-sized MTU
 *   2 @  120 bytes for outstanding transport header
 *   2 @  132 bytes for outstanding IPv6 NDP packets
 *   5 @    9 bytes for LwIP heap structure
 *
 *   2409 + 16 byte alignment -> 2064
 */
#define MEM_SIZE                        2064

/** Define LWIP_COMPAT_MUTEX if the port has no mutexes and binary semaphores
 *  should be used instead
 */
#define LWIP_COMPAT_MUTEX              (1)

/**
 * SYS_LIGHTWEIGHT_PROT==1: if you want inter-task protection for certain
 * critical regions during buffer allocation, deallocation and memory
 * allocation and deallocation.
 */
#define SYS_LIGHTWEIGHT_PROT           (1)

/**
 * LWIP_DHCP==1: Enable DHCP module.
 */
#define LWIP_DHCP                      (1)

/**
 * Enable automatic IPv4 link-local address assignment.
 */
#define LWIP_AUTOIP                    (1)

/**
 * Allow DHCP and automatic IPv4 link-local address assignment to
 * work cooperatively.
 */
#define LWIP_DHCP_AUTOIP_COOP          (0)

/**
 * LWIP_PROVIDE_ERRNO: errno definitions from the Standard C Library.
 */
#undef  LWIP_PROVIDE_ERRNO

/**
 * ERRNO: set errno on interface invocation failures
 */
#define ERRNO                          (1)

/**
 * MEMP_NUM_RAW_PCB: Number of raw connection PCBs
 * (requires the LWIP_RAW option)
 */
#ifndef MEMP_NUM_RAW_PCB
#define MEMP_NUM_RAW_PCB                (5)
#endif

/**
 * MEMP_NUM_UDP_PCB: the number of UDP protocol control blocks. One
 * per active UDP "connection".
 * (requires the LWIP_UDP option)
 * LWIP_DHCP and LWIP_DNS are used by LWIP, and the 5 are used by UDP endpoints in InetLayer.
 *
 * See #INET_CONFIG_NUM_UDP_ENDPOINTS for InetLayer configuration.
 */
#ifndef MEMP_NUM_UDP_PCB
#define MEMP_NUM_UDP_PCB                (5 + (LWIP_DHCP) + (LWIP_DNS))
#endif

/* ARP before DHCP causes multi-second delay  - turn it off */
#define DHCP_DOES_ARP_CHECK            (0)

/**
 * LWIP_HAVE_LOOPIF==1: Support loop interface (127.0.0.1) and loopif.c
 */
#define LWIP_HAVE_LOOPIF               (1)

/**
 * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP
 * address equal to the netif IP address, looping them back up the stack.
 */
#define LWIP_NETIF_LOOPBACK            (0)

/**
 * MEMP_NUM_NETCONN: the number of struct netconns.
 * (only needed if you use the sequential API, like api_lib.c)
 */
#define MEMP_NUM_NETCONN               (1)

/**
 * LWIP_SO_RCVTIMEO==1: Enable SO_RCVTIMEO processing.
 */
#define LWIP_SO_RCVTIMEO               (1)


/**
 * LWIP_IGMP==1: Turn on IGMP module.
 */
#define LWIP_IGMP                      (1)


/**
 * SO_REUSE==1: Enable SO_REUSEADDR option.
 * Required by IGMP for reuse of multicast address and port by other sockets
 */
#define SO_REUSE                       (1)

/**
 * When using IGMP, LWIP_RAND() needs to be defined to a random-function returning an u32_t random value
 */
#define LWIP_RAND()                    (u32_t)lrand48()

/**
 * LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS==1: Randomize the local port
 * for the first local TCP/UDP PCB. This can prevent creating
 * predictable port numbers after booting a system (see RFC-6065).
 */
#define LWIP_RANDOMIZE_INITIAL_LOCAL_PORTS (1)

/**
 * LWIP_DNS==1: Turn on DNS module. UDP must be available for DNS
 * transport.
 */
#define LWIP_DNS                        (1)
#define LWIP_DNS_RAND_ID                (1)

/**
 * LWIP_POSIX_SOCKETS_IO_NAMES==1: Enable POSIX-style sockets functions names.
 * Disable this option if you use a POSIX operating system that uses the same
 * names (read, write & close). (only used if you use sockets.c)
 *
 * We disable this because this otherwise collides with the Standard C
 * Library where both LWIP and its headers are included.
 */
#define LWIP_POSIX_SOCKETS_IO_NAMES     (0)

#ifdef LWIP_SO_RCVBUF
#if ( LWIP_SO_RCVBUF == 1 )
#include <limits.h>  /* Needed because RECV_BUFSIZE_DEFAULT is defined as INT_MAX */
#endif /* if ( LWIP_SO_RCVBUF == 1 ) */
#endif /* ifdef LWIP_SO_RCVBUF */

/**
 * LWIP_STATS : Turn off statistics gathering
 */
#define LWIP_STATS                     (0)

#ifdef BUILD_FEATURE_NETWORK_STATS
#undef LWIP_STATS
#define LWIP_STATS 1
#define LWIP_STATS_DISPLAY 1
#undef MEMP_STATS
#define MEMP_STATS 1
#endif


/**
 * LWIP_IPV6==1: Enable IPv6
 */
#define LWIP_IPV6                       1

/**
 * LWIP_IPV6_AUTOCONFIG==0: Disable stateless address
 * autoconfiguration (SLAAC).
 */
#define LWIP_IPV6_AUTOCONFIG            (0)


/**
 * LWIP_IPV6_NUM_ADDRESSES: Number of IPv6 addresses per netif.
 * Currently:
 *    Link-Local, Mesh-Local, Weave Legacy ULA, Weave Thread ULA
 *
 *    TODO: We actually don't use the Mesh-Local address, so we can reuse this slot and retain 3 addresses
 */
#define LWIP_IPV6_NUM_ADDRESSES         4

/**
 * LWIP_IPV6_DHCP6==0: Disable DHCPv6 stateful address autoconfiguration.
 */
#ifndef LWIP_IPV6_DHCP6
#define LWIP_IPV6_DHCP6                 1
#endif

/**
 * Enable locking in the lwip (tcpip) thread.
 */
#ifndef LWIP_TCPIP_CORE_LOCKING
#define LWIP_TCPIP_CORE_LOCKING         1
#endif
 
/**
 * Controls if TCP should queue segments that arrive out of
 * order. Define to 0 if your device is low on memory.
 * This had been disabled for DOLO-738 (pbuf scarcity apparently
 * had a bad effect on download times). 
 * We are enabling it again for TOPAZ-3661 (OTA downloads are 
 * timing out because our CDN now requires the devices to 
 * store out-of-sequence segments; otherwise the F-RTO Recovery 
 * algorithm on the sender side does not work and the download stalls).
 * We don't see the problem mentioned in DOLO-738 anymore.
 */
#define TCP_QUEUE_OOSEQ        1

/**
 * ARP_QUEUEING==1: Multiple outgoing packets are queued during
 * hardware address resolution. By default, only the most recent
 * packet is queued per IP address.  This is sufficient for most
 * protocols and mainly reduces TCP connection startup time. Set this
 * to 1 if you know your application sends more than one packet in a
 * row to an IP address that is not in the ARP cache.
 */
#define ARP_QUEUEING                    (0)

/**
 * MEMP_NUM_ARP_QUEUE: the number of simulateously queued outgoing
 * packets (pbufs) that are waiting for an ARP request (to resolve
 * their destination address) to finish.  (requires the ARP_QUEUEING
 * option)
 */
#define MEMP_NUM_ARP_QUEUE              (PBUF_POOL_SIZE)

/**
 * LWIP_ND6_QUEUEING==1: queue outgoing IPv6 packets while MAC address
 * is being resolved.
 */
#define LWIP_ND6_QUEUEING               (LWIP_IPV6)

/**
 * MEMP_NUM_ND6_QUEUE: Max number of IPv6 packets to queue during MAC
 * resolution.
 */
#define MEMP_NUM_ND6_QUEUE              (PBUF_POOL_SIZE)

/**
 * LWIP_MULTICAST_PING: respond to multicast pings (default is unicast only)
 */
#define LWIP_MULTICAST_PING             (1)

/**
 * Debug printing
 * By default enable debug printing for debug build, but set level to off
 * This allows user to change any desired debug level to on.
 */
#ifdef DEBUG
#undef  LWIP_DEBUG
#define MEMP_OVERFLOW_CHECK            ( 0 )
#define MEMP_SANITY_CHECK              ( 0 )
#define MEM_DEBUG                      (LWIP_DBG_OFF)
#define MEMP_DEBUG                     (LWIP_DBG_OFF)
#define PBUF_DEBUG                     (LWIP_DBG_OFF)
#define API_LIB_DEBUG                  (LWIP_DBG_OFF)
#define API_MSG_DEBUG                  (LWIP_DBG_OFF)
#define TCPIP_DEBUG                    (LWIP_DBG_OFF)
#define NETIF_DEBUG                    (LWIP_DBG_OFF)
#define SOCKETS_DEBUG                  (LWIP_DBG_OFF)
#define DEMO_DEBUG                     (LWIP_DBG_OFF)
#define DHCP_DEBUG                     (LWIP_DBG_OFF)
#define AUTOIP_DEBUG                   (LWIP_DBG_OFF)
#define ETHARP_DEBUG                   (LWIP_DBG_OFF)
#define IP_DEBUG                       (LWIP_DBG_OFF)
#define IP_REASS_DEBUG                 (LWIP_DBG_OFF)
#define IP6_DEBUG                      (LWIP_DBG_OFF)
#define RAW_DEBUG                      (LWIP_DBG_OFF)
#define ICMP_DEBUG                     (LWIP_DBG_OFF)
#define UDP_DEBUG                      (LWIP_DBG_OFF)
#define TCP_DEBUG                      (LWIP_DBG_OFF)
#define TCP_INPUT_DEBUG                (LWIP_DBG_OFF)
#define TCP_OUTPUT_DEBUG               (LWIP_DBG_OFF)
#define TCP_RTO_DEBUG                  (LWIP_DBG_OFF)
#define TCP_CWND_DEBUG                 (LWIP_DBG_OFF)
#define TCP_WND_DEBUG                  (LWIP_DBG_OFF)
#define TCP_FR_DEBUG                   (LWIP_DBG_OFF)
#define TCP_QLEN_DEBUG                 (LWIP_DBG_OFF)
#define TCP_RST_DEBUG                  (LWIP_DBG_OFF)
#define PPP_DEBUG                      (LWIP_DBG_OFF)

#define LWIP_DBG_TYPES_ON              (LWIP_DBG_OFF)   /* (LWIP_DBG_ON|LWIP_DBG_TRACE|LWIP_DBG_STATE|LWIP_DBG_FRESH|LWIP_DBG_HALT) */
#endif

/**
 * LwIP defaults the size of most mailboxes (i.e. message queues) to
 * zero (0). That generally makes RTOSes such as FreeRTOS very
 * unhappy. Specify reasonable defaults instead.
 */
#define TCPIP_MBOX_SIZE                 6

#define DEFAULT_RAW_RECVMBOX_SIZE       6

#define DEFAULT_UDP_RECVMBOX_SIZE       6

#define DEFAULT_TCP_RECVMBOX_SIZE       6

/**
 * Disable processing of incoming Router Advertisements.
 */
#define LWIP_ND6_LISTEN_RA              0

/**
 * Disable IPV6 router discovery.
 */
#define LWIP_IPV6_ROUTER_SUPPORT        0

/**
 * Enable TCP keepalives, for Weave WDM subscriptions
 */
#define LWIP_TCP_KEEPALIVE              1

/**
 * Limit the DNS TTL to 15 minutes.
 * The value is in seconds.
 */

#define DNS_MAX_TTL                     (60 * 15)

#endif /* __COMMON_LWIPOPTS_H__ */
