fix tcpip.c for LWIP_TIMERS==0

This commit is contained in:
sg 2016-08-25 21:15:26 +02:00
parent 2980a12373
commit 452f5d6296
3 changed files with 18 additions and 11 deletions

View File

@ -65,6 +65,13 @@ static sys_mbox_t mbox;
sys_mutex_t lock_tcpip_core; sys_mutex_t lock_tcpip_core;
#endif /* LWIP_TCPIP_CORE_LOCKING */ #endif /* LWIP_TCPIP_CORE_LOCKING */
#if LWIP_TIMERS
/* wait for a message, timeouts are processed while waiting */
#define TCPIP_MBOX_FETCH(mbox, msg) sys_timeouts_mbox_fetch(mbox, msg)
#else /* LWIP_TIMERS */
/* wait for a message with timers disabled (e.g. pass a timer-check trigger into tcpip_thread) */
#define TCPIP_MBOX_FETCH(mbox, msg) sys_mbox_fetch(mbox, msg)
#endif /* LWIP_TIMERS */
/** /**
* The main lwIP thread. This thread has exclusive access to lwIP core functions * The main lwIP thread. This thread has exclusive access to lwIP core functions
@ -91,7 +98,7 @@ tcpip_thread(void *arg)
UNLOCK_TCPIP_CORE(); UNLOCK_TCPIP_CORE();
LWIP_TCPIP_THREAD_ALIVE(); LWIP_TCPIP_THREAD_ALIVE();
/* wait for a message, timeouts are processed while waiting */ /* wait for a message, timeouts are processed while waiting */
sys_timeouts_mbox_fetch(&mbox, (void **)&msg); TCPIP_MBOX_FETCH(&mbox, (void **)&msg);
LOCK_TCPIP_CORE(); LOCK_TCPIP_CORE();
if (msg == NULL) { if (msg == NULL) {
LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: invalid message: NULL\n")); LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: invalid message: NULL\n"));
@ -119,7 +126,7 @@ tcpip_thread(void *arg)
break; break;
#endif /* !LWIP_TCPIP_CORE_LOCKING_INPUT */ #endif /* !LWIP_TCPIP_CORE_LOCKING_INPUT */
#if LWIP_TCPIP_TIMEOUT #if LWIP_TCPIP_TIMEOUT && LWIP_TIMERS
case TCPIP_MSG_TIMEOUT: case TCPIP_MSG_TIMEOUT:
LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: TIMEOUT %p\n", (void *)msg)); LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: TIMEOUT %p\n", (void *)msg));
sys_timeout(msg->msg.tmo.msecs, msg->msg.tmo.h, msg->msg.tmo.arg); sys_timeout(msg->msg.tmo.msecs, msg->msg.tmo.h, msg->msg.tmo.arg);
@ -130,7 +137,7 @@ tcpip_thread(void *arg)
sys_untimeout(msg->msg.tmo.h, msg->msg.tmo.arg); sys_untimeout(msg->msg.tmo.h, msg->msg.tmo.arg);
memp_free(MEMP_TCPIP_MSG_API, msg); memp_free(MEMP_TCPIP_MSG_API, msg);
break; break;
#endif /* LWIP_TCPIP_TIMEOUT */ #endif /* LWIP_TCPIP_TIMEOUT && LWIP_TIMERS */
case TCPIP_MSG_CALLBACK: case TCPIP_MSG_CALLBACK:
LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: CALLBACK %p\n", (void *)msg)); LWIP_DEBUGF(TCPIP_DEBUG, ("tcpip_thread: CALLBACK %p\n", (void *)msg));
@ -249,7 +256,7 @@ tcpip_callback_with_block(tcpip_callback_fn function, void *ctx, u8_t block)
return ERR_OK; return ERR_OK;
} }
#if LWIP_TCPIP_TIMEOUT #if LWIP_TCPIP_TIMEOUT && LWIP_TIMERS
/** /**
* call sys_timeout in tcpip_thread * call sys_timeout in tcpip_thread
* *
@ -304,7 +311,7 @@ tcpip_untimeout(sys_timeout_handler h, void *arg)
sys_mbox_post(&mbox, msg); sys_mbox_post(&mbox, msg);
return ERR_OK; return ERR_OK;
} }
#endif /* LWIP_TCPIP_TIMEOUT */ #endif /* LWIP_TCPIP_TIMEOUT && LWIP_TIMERS */
/** /**

View File

@ -112,10 +112,10 @@ enum tcpip_msg_type {
TCPIP_MSG_API, TCPIP_MSG_API,
TCPIP_MSG_API_CALL, TCPIP_MSG_API_CALL,
TCPIP_MSG_INPKT, TCPIP_MSG_INPKT,
#if LWIP_TCPIP_TIMEOUT #if LWIP_TCPIP_TIMEOUT && LWIP_TIMERS
TCPIP_MSG_TIMEOUT, TCPIP_MSG_TIMEOUT,
TCPIP_MSG_UNTIMEOUT, TCPIP_MSG_UNTIMEOUT,
#endif /* LWIP_TCPIP_TIMEOUT */ #endif /* LWIP_TCPIP_TIMEOUT && LWIP_TIMERS */
TCPIP_MSG_CALLBACK, TCPIP_MSG_CALLBACK,
TCPIP_MSG_CALLBACK_STATIC TCPIP_MSG_CALLBACK_STATIC
}; };
@ -141,13 +141,13 @@ struct tcpip_msg {
tcpip_callback_fn function; tcpip_callback_fn function;
void *ctx; void *ctx;
} cb; } cb;
#if LWIP_TCPIP_TIMEOUT #if LWIP_TCPIP_TIMEOUT && LWIP_TIMERS
struct { struct {
u32_t msecs; u32_t msecs;
sys_timeout_handler h; sys_timeout_handler h;
void *arg; void *arg;
} tmo; } tmo;
#endif /* LWIP_TCPIP_TIMEOUT */ #endif /* LWIP_TCPIP_TIMEOUT && LWIP_TIMERS */
} msg; } msg;
}; };

View File

@ -90,10 +90,10 @@ err_t tcpip_trycallback(struct tcpip_callback_msg* msg);
err_t pbuf_free_callback(struct pbuf *p); err_t pbuf_free_callback(struct pbuf *p);
err_t mem_free_callback(void *m); err_t mem_free_callback(void *m);
#if LWIP_TCPIP_TIMEOUT #if LWIP_TCPIP_TIMEOUT && LWIP_TIMERS
err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg); err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg);
err_t tcpip_untimeout(sys_timeout_handler h, void *arg); err_t tcpip_untimeout(sys_timeout_handler h, void *arg);
#endif /* LWIP_TCPIP_TIMEOUT */ #endif /* LWIP_TCPIP_TIMEOUT && LWIP_TIMERS */
#ifdef __cplusplus #ifdef __cplusplus
} }