Ethernet for Nucleo and Disco board STM32F746 works with gcc and arm. IAC is untested
Fork of F7_Ethernet by
Diff: lwip/net/net_decl_lwip.h
- Revision:
- 0:d26c1b55cfca
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lwip/net/net_decl_lwip.h Sun Jun 19 16:23:40 2016 +0000 @@ -0,0 +1,299 @@ +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Copyright (c) Microsoft Corporation. All rights reserved. +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +#ifndef _NET_DECL_LWIP_H_ +#define _NET_DECL_LWIP_H_ + +#ifndef TCPIP_LWIP +#include <lwip_selector.h> +#endif + +#ifndef TCPIP_LWIP +#error Only include net_decl_lwip.h when using LWIP stack +#endif + +#include "network_defines_lwip.h" + +#define NO_SYS 0 +#define ERRNO 1 + + +#ifdef PLATFORM_DEPENDENT__MEM_SIZE +#define MEM_SIZE PLATFORM_DEPENDENT__MEM_SIZE +#else +#define MEM_SIZE MEM_SIZE__default +#endif + +#ifdef PLATFORM_DEPENDENT__MEMP_NUM_PBUF +#define MEMP_NUM_PBUF PLATFORM_DEPENDENT__MEMP_NUM_PBUF +#else +#define MEMP_NUM_PBUF MEMP_NUM_PBUF__default +#endif + +#ifdef PLATFORM_DEPENDENT__MEMP_NUM_UDP_PCB +#define MEMP_NUM_UDP_PCB PLATFORM_DEPENDENT__MEMP_NUM_UDP_PCB +#else +#define MEMP_NUM_UDP_PCB MEMP_NUM_UDP_PCB__default +#endif + +#ifdef PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB +#define MEMP_NUM_TCP_PCB PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB +#else +#define MEMP_NUM_TCP_PCB MEMP_NUM_TCP_PCB__default +#endif + +#ifdef PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB_LISTEN +#define MEMP_NUM_TCP_PCB_LISTEN PLATFORM_DEPENDENT__MEMP_NUM_TCP_PCB_LISTEN +#else +#define MEMP_NUM_TCP_PCB_LISTEN MEMP_NUM_TCP_PCB_LISTEN__default +#endif + +#ifdef PLATFORM_DEPENDENT__MEMP_NUM_TCP_SEG +#define MEMP_NUM_TCP_SEG PLATFORM_DEPENDENT__MEMP_NUM_TCP_SEG +#else +#define MEMP_NUM_TCP_SEG MEMP_NUM_TCP_SEG__default +#endif + +#ifdef PLATFORM_DEPENDENT__MEMP_NUM_SYS_TIMEOUT +#define MEMP_NUM_SYS_TIMEOUT PLATFORM_DEPENDENT__MEMP_NUM_SYS_TIMEOUT +#else +#define MEMP_NUM_SYS_TIMEOUT MEMP_NUM_SYS_TIMEOUT__default +#endif + +#ifdef PLATFORM_DEPENDENT__MEMP_NUM_NETBUF +#define MEMP_NUM_NETBUF PLATFORM_DEPENDENT__MEMP_NUM_NETBUF +#else +#define MEMP_NUM_NETBUF MEMP_NUM_NETBUF__default +#endif + +#ifdef PLATFORM_DEPENDENT__MEMP_NUM_NETCONN +#define MEMP_NUM_NETCONN PLATFORM_DEPENDENT__MEMP_NUM_NETCONN +#else +#define MEMP_NUM_NETCONN MEMP_NUM_NETCONN__default +#endif + +#ifdef PLATFORM_DEPENDENT__PBUF_POOL_SIZE +#define PBUF_POOL_SIZE PLATFORM_DEPENDENT__PBUF_POOL_SIZE +#else +#define PBUF_POOL_SIZE PBUF_POOL_SIZE__default +#endif + +#ifdef PLATFORM_DEPENDENT__PBUF_POOL_BUFSIZE +#define PBUF_POOL_BUFSIZE PLATFORM_DEPENDENT__PBUF_POOL_BUFSIZE +#else +#define PBUF_POOL_BUFSIZE PBUF_POOL_BUFSIZE__default +#endif + +#ifdef PLATFORM_DEPENDENT__TCP_MSS +#define TCP_MSS PLATFORM_DEPENDENT__TCP_MSS +#else +#define TCP_MSS TCP_MSS__default +#endif + +#ifdef PLATFORM_DEPENDENT__TCP_SND_BUF +#define TCP_SND_BUF PLATFORM_DEPENDENT__TCP_SND_BUF +#else +#define TCP_SND_BUF TCP_SND_BUF__default +#endif + +#ifdef PLATFORM_DEPENDENT__TCP_SND_QUEUELEN +#define TCP_SND_QUEUELEN PLATFORM_DEPENDENT__TCP_SND_QUEUELEN +#else +#define TCP_SND_QUEUELEN TCP_SND_QUEUELEN__default +#endif + +#ifdef PLATFORM_DEPENDENT__TCP_WND +#define TCP_WND PLATFORM_DEPENDENT__TCP_WND +#else +#define TCP_WND TCP_WND__default +#endif + +#ifdef PLATFORM_DEPENDENT__TCP_SNDLOWAT +#define TCP_SNDLOWAT PLATFORM_DEPENDENT__TCP_SNDLOWAT +#else +#define TCP_SNDLOWAT TCP_SNDLOWAT__default +#endif + +//--// + +/* LWIP options that are the same for all configurations */ + +/* MEM_ALIGNMENT: should be set to the alignment of the CPU for which + lwIP is compiled. 4 byte alignment -> define MEM_ALIGNMENT to 4, 2 + byte alignment -> define MEM_ALIGNMENT to 2. */ +#ifndef MEM_ALIGNMENT +#define MEM_ALIGNMENT 4 +#endif + +/* These two control whether reclaimer functions should be compiled + in. Should always be turned on (1). */ +#ifndef MEM_RECLAIM +#define MEM_RECLAIM 1 +#endif +#ifndef MEMP_RECLAIM +#define MEMP_RECLAIM 1 +#endif + +#ifndef ETH_PAD_SIZE +#define ETH_PAD_SIZE 0 +#endif + +/* PBUF_LINK_HLEN: the number of bytes that should be allocated for a + link level header. */ +#ifndef PBUF_LINK_HLEN +#define PBUF_LINK_HLEN (14 + ETH_PAD_SIZE) +#endif + +/* ---------- TCP options ---------- */ +#ifndef LWIP_TCP +#define LWIP_TCP 1 +#endif +#ifndef TCP_TTL +#define TCP_TTL 255 +#endif + +#ifndef TCP_OVERSIZE +#define TCP_OVERSIZE TCP_MSS +#endif + +/* Controls if TCP should queue segments that arrive out of + order. Define to 0 if your device is low on memory. */ +#ifndef TCP_QUEUE_OOSEQ +#define TCP_QUEUE_OOSEQ 0 +#endif + +/* Maximum number of retransmissions of data segments. */ +#ifndef TCP_MAXRTX +#define TCP_MAXRTX 6 +#endif + +/* Maximum number of retransmissions of SYN segments. */ +#ifndef TCP_SYNMAXRTX +#define TCP_SYNMAXRTX 4 +#endif + +/* ---------- ARP options ---------- */ +#ifndef ARP_TABLE_SIZE +#define ARP_TABLE_SIZE 10 +#endif +#ifndef ARP_QUEUEING +#define ARP_QUEUEING 0 +#endif + +/* ---------- IP options ---------- */ +/* Define IP_FORWARD to 1 if you wish to have the ability to forward + IP packets across network interfaces. If you are going to run lwIP + on a device with only one network interface, define this to 0. */ +#ifndef IP_FORWARD +#define IP_FORWARD 1 +#endif + +/* If defined to 1, IP options are allowed (but not parsed). If + defined to 0, all packets with IP options are dropped. */ +#ifndef IP_OPTIONS +#define IP_OPTIONS 1 +#endif + +/* IP reassembly and segmentation.These are orthogonal even + * if they both deal with IP fragments */ +#ifndef IP_REASSEMBLY +#define IP_REASSEMBLY 1 +#endif +#ifndef IP_FRAG +#define IP_FRAG 1 +#endif + +/* ---------- ICMP options ---------- */ +#ifndef ICMP_TTL +#define ICMP_TTL 255 +#endif + +/* ---------- DHCP options ---------- */ +/* Define LWIP_DHCP to 1 if you want DHCP configuration of + interfaces. */ +#ifndef LWIP_DHCP +#define LWIP_DHCP 1 +#endif + +/* 1 if you want to do an ARP check on the offered address + (recommended). */ +#ifndef DHCP_DOES_ARP_CHECK +#define DHCP_DOES_ARP_CHECK 0 +#endif + +/* ---------- UDP options ---------- */ +#ifndef LWIP_UDP +#define LWIP_UDP 1 +#endif +#ifndef UDP_TTL +#define UDP_TTL 255 +#endif + +/* ---------- Statistics options ---------- */ +#ifndef LWIP_STATS +#define LWIP_STATS 0 +#endif + +/** SYS_LIGHTWEIGHT_PROT + * define SYS_LIGHTWEIGHT_PROT in lwipopts.h if you want inter-task + * protection for certain critical regions during buffer allocation + * and deallocation and memory allocation and deallocation. + */ +#ifndef SYS_LIGHTWEIGHT_PROT +#define SYS_LIGHTWEIGHT_PROT 1 +#endif + +#ifndef LWIP_COMPAT_SOCKETS +#define LWIP_COMPAT_SOCKETS 1 +#endif + +#ifndef LWIP_PROVIDE_ERRNO +#define LWIP_PROVIDE_ERRNO 1 +#endif + +/* ---------- SNMP options ---------- */ +#ifndef LWIP_SNMP +#define LWIP_SNMP 0 /*LwIP 1.2.0*/ +#endif +#ifndef LWIP_IGMP +#define LWIP_IGMP 1 /*LwIP 1.2.0*/ +#endif + +// thread priorities are in VDK terms - 1 is highest, 30 is lowest +#ifndef TCPIP_THREAD_PRIO +#define TCPIP_THREAD_PRIO 5 +#endif +#ifndef DEFAULT_THREAD_PRIO +#define DEFAULT_THREAD_PRIO 10 +#endif +#ifndef LOW_THREAD_PRIO +#define LOW_THREAD_PRIO 29 +#endif + +//--// RAM size estimate macro + +#if 0 // TODO - implement similar for LWIP +#define NETWORK_RAM_SIZE_ESTIMATE() (\ + _NETWORK_SIZEOF_NONE + \ + NETWORK_MULTICAST_LIST_SIZE * (_NETWORK_SIZEOF_MCLISTSIZE) + \ + NETWORK_PACKET_POOL_0__NUM_PACKETS * (NETWORK_PACKET_POOL_0__PACKET_SIZE + _NETWORK_SIZEOF_DCU) + \ + NETWORK_PACKET_POOL_1__NUM_PACKETS * (NETWORK_PACKET_POOL_1__PACKET_SIZE + _NETWORK_SIZEOF_DCU) + \ + NETWORK_PACKET_POOL_2__NUM_PACKETS * (NETWORK_PACKET_POOL_2__PACKET_SIZE + _NETWORK_SIZEOF_DCU) + \ + NETWORK_PACKET_POOL_3__NUM_PACKETS * (NETWORK_PACKET_POOL_3__PACKET_SIZE + _NETWORK_SIZEOF_DCU) + \ + NETWORK_PACKET_POOL_4__NUM_PACKETS * (NETWORK_PACKET_POOL_4__PACKET_SIZE + _NETWORK_SIZEOF_DCU) + \ + NETWORK_PACKET_POOL_5__NUM_PACKETS * (NETWORK_PACKET_POOL_5__PACKET_SIZE + _NETWORK_SIZEOF_DCU) + \ + _NETWORK_TOTAL_PACKET_COUNT * _NETWORK_SIZEOF_PACKET_OVERHEAD + \ + NETWORK_NUM_IFACES * _NETWORK_SIZEOF_IFACE + \ + NETWORK_ROUTINGTABLE_SIZE * _NETWORK_SIZEOF_ROUTINGTABLE + \ + NETWORK_ARP_NUM_TABLE_ENTRIES * _NETWORK_SIZEOF_ARP_ENTRY + \ + NETWORK_TCP_NUM_PORTS__SUPPORTED * _NETWORK_SIZEOF_TCPPORT + \ + NETWORK_UDP_NUM_PORTS__SUPPORTED * _NETWORK_SIZEOF_UDPPORT + \ + NETWORK_FRAG_TABLE_SIZE * _NETWORK_SIZEOF_FRAG_ENTRY + \ + NETWORK_NAT_NUM_ENTRIES * _NETWORK_SIZEOF_NAT_ENTRY ) \ + +typedef char NETWORK_COMPILE_TIME_ASSERT[NETWORK_MEMORY_POOL__SIZE - NETWORK_RAM_SIZE_ESTIMATE()]; +#endif + +#endif //_NET_DECL_LWIP_H_ +