/**
* \file
*
* \brief LwIP configuration.
*
* Copyright (c) 2013-2018 Microchip Technology
Inc. and its subsidiaries.
*
* \asf_license_start
*
* \page License
*
* Subject to your compliance with these terms,
you may use Microchip
* software and any derivatives exclusively with
Microchip products.
* It is your responsibility to comply with third
party license terms applicable
* to your use of third party software (including
open source software) that
* may accompany Microchip software.
*
* THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS".
NO WARRANTIES,
* WHETHER EXPRESS, IMPLIED OR STATUTORY, APPLY TO
THIS SOFTWARE,
* INCLUDING ANY IMPLIED WARRANTIES OF
NON-INFRINGEMENT, MERCHANTABILITY,
* AND FITNESS FOR A PARTICULAR PURPOSE. IN NO
EVENT WILL MICROCHIP BE
* LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
INCIDENTAL OR CONSEQUENTIAL
* LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
WHATSOEVER RELATED TO THE
* SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
BEEN ADVISED OF THE
* POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO
THE FULLEST EXTENT
* ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON
ALL CLAIMS IN ANY WAY
* RELATED TO THIS SOFTWARE WILL NOT EXCEED THE
AMOUNT OF FEES, IF ANY,
* THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR
THIS SOFTWARE.
*
* \asf_license_stop
*
*/
#ifndef __LWIPOPTS_H__
#define __LWIPOPTS_H__
/* Include ethernet configuration first */
#include "conf_eth.h"
#include "board.h"
/*
-----------------------------------------------
-------------- LwIP API Support ---------------
-----------------------------------------------
*/
#define SNMP_LWIP_ENTERPRISE_OID
TRIMM_ENTERPRISE_OID
#define LWIP_HTTPD_DYNAMIC_FILE_READ 1
#define HTTPD_ENABLE_HTTPS 1
#define LWIP_ALTCP_TLS 1
#define LWIP_ALTCP_TLS_MBEDTLS 1
#define LWIP_ALTCP 1
#define LWIP_HTTPD_SUPPORT_POST 1
#define HTTPD_MAX_RETRIES 10 //tbs 3-19-2020
increased from 4 to prevent time out on bad
connections
#define PPP_SUPPORT 0
#define PPPOE_SUPPORT 0
#define SNMP_LWIP_MIB2 1
#define LWIP_SNMP 1
#define LWIP_SNMP_V3 1
#define MIB2_STATS 1
#define SNMP_USE_RAW 1
//#define HTTPD_DEBUG LWIP_DBG_ON
#define ALTCP_MBEDTLS_DEBUG LWIP_DBG_ON
//#define TCP_OUTPUT_DEBUG LWIP_DBG_ON |
LWIP_DBG_LEVEL_SEVERE
//#define DHCP_DEBUG LWIP_DBG_ON
/**
* NO_SYS==1: Provides VERY minimal functionality.
Otherwise,
* use lwIP facilities.
* Uses Raw API only.
*/
#define NO_SYS 1
/**
* LWIP_NETIF_STATUS_CALLBACK==1: Support a
callback function whenever an interface
* changes its up/down status (i.e., due to DHCP
IP acquistion)
*/
#define LWIP_NETIF_STATUS_CALLBACK 1
/**
* LWIP_RAW==1: Enable application layer to hook
into the IP layer itself.
* Used to implement custom transport protocol (!=
than Raw API).
*/
#define LWIP_RAW 0
/**
* 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 0
/* These are not available when using "NO_SYS" */
#define LWIP_NETCONN 0
#define LWIP_SOCKET 0
/* Uncomment following line to use DHCP instead of
fixed IP */
#define DHCP_USED
/*
------------------------------------
---------- Memory options ----------
------------------------------------
*/
/**
* MEM_ALIGNMENT: should be set to the alignment
of the CPU
* 4 byte alignment -> #define MEM_ALIGNMENT
4
* 2 byte alignment -> #define MEM_ALIGNMENT
2
*/
#define MEM_ALIGNMENT 4
/**
* MEM_SIZE: the size of the heap memory. If the
application will send
* a lot of data that needs to be copied, this
should be set high.
*/
#define MEM_SIZE 27 * 1024
/**
* MEMP_NUM_UDP_PCB: the number of UDP protocol
control blocks. One
* per active UDP "connection".
* (requires the LWIP_UDP option)
*/
#define MEMP_NUM_UDP_PCB 2
/**
* MEMP_NUM_TCP_PCB: the number of simulatenously
active TCP connections.
* (requires the LWIP_TCP option)
*/
#define MEMP_NUM_TCP_PCB 20
/**
* MEMP_NUM_TCP_PCB_LISTEN: the number of
listening TCP connections.
* (requires the LWIP_TCP option)
*/
#define MEMP_NUM_TCP_PCB_LISTEN 6
/**
* MEMP_NUM_TCP_SEG: the number of simultaneously
queued TCP segments.
* (requires the LWIP_TCP option)
*/
#define MEMP_NUM_TCP_SEG 20
/**
* MEMP_NUM_REASSDATA: the number of IP packets
simultaneously queued for
* reassembly (whole packets, not fragments!)
*/
#define MEMP_NUM_REASSDATA 4
/**
* MEMP_NUM_FRAG_PBUF: the number of IP fragments
simultaneously sent
* (fragments, not whole packets!).
* This is only used with
IP_FRAG_USES_STATIC_BUF==0 and
* LWIP_NETIF_TX_SINGLE_PBUF==0 and only has to be
> 1 with DMA-enabled MACs
* where the packet is not yet sent when
netif->output returns.
*/
#define MEMP_NUM_FRAG_PBUF 6
/**
* MEMP_NUM_PBUF: the number of memp struct pbufs
(used for PBUF_ROM and PBUF_REF).
* If the application sends a lot of data out of
ROM (or other static memory),
* this should be set high.
*/
#define MEMP_NUM_PBUF 10
/**
* MEMP_NUM_NETBUF: the number of struct netbufs.
* (only needed if you use the sequential API,
like api_lib.c)
*/
#define MEMP_NUM_NETBUF 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 0
/**
* PBUF_POOL_SIZE: the number of buffers in the
pbuf pool.
*/
#define PBUF_POOL_SIZE 50
/**
* PBUF_POOL_BUFSIZE: the size of each pbuf in the
pbuf pool.
*/
#define PBUF_POOL_BUFSIZE
GMAC_FRAME_LENTGH_MAX
/*
----------------------------------
---------- DHCP options ----------
----------------------------------
*/
#if defined(DHCP_USED)
/**
* LWIP_DHCP==1: Enable DHCP module.
*/
#define LWIP_DHCP 1
#endif
/*
---------------------------------
---------- UDP options ----------
---------------------------------
*/
/**
* LWIP_UDP==1: Turn on UDP.
*/
#define LWIP_UDP 1
/*
---------------------------------
---------- TCP options ----------
---------------------------------
*/
/**
* LWIP_TCP==1: Turn on TCP.
*/
#define LWIP_TCP 1
/**
* TCP_MSS: The maximum segment size controls the
maximum amount of
* payload bytes per packet. For maximum
throughput, set this as
* high as possible for your network (i.e. 1460
bytes for standard
* ethernet).
* For the receive side, this MSS is advertised to
the remote side
* when opening a connection. For the transmit
size, this MSS sets
* an upper limit on the MSS advertised by the
remote host.
*/
#define TCP_MSS (1460)
/**
* TCP_WND: The size of a TCP window. This must
be at least
* (2 * TCP_MSS) for things to work well
*/
#define TCP_WND (32 * TCP_MSS)
//should be more than 16k for TLS/HTTPS
/**
* TCP_SND_BUF: TCP sender buffer space (bytes).
* To achieve good performance, this should be at
least 2 * TCP_MSS.
*/
#define TCP_SND_BUF (4 * TCP_MSS)
/*
------------------------------------
---------- Thread options ----------
------------------------------------
*/
/** The stack sizes allocated to the netif stack:
(256 * 4) = 1048 bytes. */
#define netifINTERFACE_TASK_STACK_SIZE 256
/** The priority of the netif stack. */
#define netifINTERFACE_TASK_PRIORITY
(tskIDLE_PRIORITY + 4)
/** The stack sizes allocated to the TCPIP stack:
(256 * 4) = 1048 bytes. */
#define TCPIP_THREAD_STACKSIZE 256
/** The priority of the TCPIP stack. */
#define TCPIP_THREAD_PRIO
(tskIDLE_PRIORITY + 5)
/** The mailbox size for the tcpip thread messages
*/
#define TCPIP_MBOX_SIZE 16
#define DEFAULT_ACCEPTMBOX_SIZE 16
#define DEFAULT_RAW_RECVMBOX_SIZE 16
#define DEFAULT_TCP_RECVMBOX_SIZE 16
/*
----------------------------------------
---------- Statistics options ----------
----------------------------------------
*/
/**
* LWIP_STATS==1: Enable statistics collection in
lwip_stats.
*/
#define LWIP_STATS 1
/**
* LWIP_STATS_DISPLAY==1: Compile in the
statistics output functions.
*/
#define LWIP_STATS_DISPLAY 0
/**
* LWIP_STATS_LARGE==1: Use 32 bits counter
instead of 16.
*/
#define LWIP_STATS_LARGE 0
#if LWIP_STATS
#define LINK_STATS 0
#define IP_STATS 0
#define IPFRAG_STATS 0
#define ICMP_STATS 0
#define IGMP_STATS 0
#define UDP_STATS 0
#define TCP_STATS 0
#define MEM_STATS 0
#define MEMP_STATS 0
#define SYS_STATS 0
#endif
/* Left outside to avoid warning. */
#define ETHARP_STATS 0
/*
---------------------------------------
---------- Debugging options ----------
---------------------------------------
*/
//#define LWIP_NOASSERT
#define LWIP_DEBUG
#define LWIP_DBG_MIN_LEVEL
LWIP_DBG_LEVEL_WARNING
#define LWIP_DBG_TYPES_ON
LWIP_DBG_ON
// \note For a list of all possible lwIP
configurations, check
http://lwip.wikia.com/wiki/Lwipopts.h
#endif /* __LWIPOPTS_H__ */