lwIP 2.1.0 Lightweight IP stack

Macros
Netconn
lwIP » Options (lwipopts.h) » Thread-safe APIs

## Macros
#define | LWIP_NETCONN 1
#define | LWIP_TCPIP_TIMEOUT 0
#define | LWIP_NETCONN_SEM_PER_THREAD 0
#define | LWIP_NETCONN_FULLDUPLEX 0

## Detailed Description

## Macro Definition Documentation

## ◆ LWIP_NETCONN

#define LWIP_NETCONN 1

LWIP_NETCONN==1: Enable Netconn API (require to use api_lib.c)

## ◆ LWIP_NETCONN_FULLDUPLEX

#define LWIP_NETCONN_FULLDUPLEX 0

LWIP_NETCONN_FULLDUPLEX==1: Enable code that allows reading from one thread, writing from a 2nd thread and closing from a 3rd thread at the same time. ATTENTION: This is currently really alpha! Some requirements:

- LWIP_NETCONN_SEM_PER_THREAD==1 is required to use one socket/netconn from multiple threads at once
- sys_mbox_free() has to unblock receive tasks waiting on recvmbox/acceptmbox and prevent a task pending on this during/after deletion

## ◆ LWIP_NETCONN_SEM_PER_THREAD

#define LWIP_NETCONN_SEM_PER_THREAD 0

LWIP_NETCONN_SEM_PER_THREAD==1: Use one (thread-local) semaphore per thread calling socket/netconn functions instead of allocating one semaphore per netconn (and per select etc.) ATTENTION: a thread-local semaphore for API calls is needed:

- LWIP_NETCONN_THREAD_SEM_GET() returning a sys_sem_t*
- LWIP_NETCONN_THREAD_SEM_ALLOC() creating the semaphore
- LWIP_NETCONN_THREAD_SEM_FREE() freeing the semaphore The latter 2 can be invoked up by calling netconn_thread_init()/netconn_thread_cleanup(). Ports may call these for threads created with sys_thread_new().

## ◆ LWIP_TCPIP_TIMEOUT

#define LWIP_TCPIP_TIMEOUT 0

LWIP_TCPIP_TIMEOUT==1: Enable tcpip_timeout/tcpip_untimeout to create timers running in tcpip_thread from another thread.