|
From: | Sirjee Rooplall |
Subject: | [lwip-users] LWIP 1.3.2 and PPP |
Date: | Thu, 11 Feb 2010 12:02:37 +0200 |
Hi as stated above I am using LWIP 1.3.2 and the
PPP stack.
I use the follwoing API's.
netconn_new
netconn_connect
netconn_delete
netconn_recv - This is called from a freeRTOS task
every 10ms, to check if any data has arrived.
netbuf_data
I have LWIP_SO_RCVTIMEO
defined as 1.
I am using PPP over serial through modem to
sever.
Before I call nettcon_recv to check for data I set
a receive timeout:
pxSeverConnectionHandle->recv_timeout =
10000; // wait for incoming message 10seconds max.
Now here is the problem.
Everything works fine provided the server replies
within the 10 seconds.
If netconn_recv timeout, it sets the conn->err
to conn->err = ERR_TIMEOUT; // which is -13 and referred to FATAL
error.
The next time netconn_recev is called it encounter
this piece of code which says:
if (ERR_IS_FATAL(conn->err))
{
return NULL; } because the conn->err is set to -13 which is
fatal error, netconn_recv always returns without checking the mailbox for a
message which may take more than 10 seconds to come.
Now the reason I am using the receive timeout in
netconn_recv is because previously it wait forever for a message and if the
message does not come, after 20 seconds I close the socket in another Task, and
that caused my system to crash because netconn_recv was pending on that socket
handle.
In this system using PPP and modem + GPRS it is
possible that a message may not arrive, and retries are implemented etc to cater
for this.
My question is How do I work around this
ERR_IS_FATAL condition, without breaking any LWIP rules?
Kind Regards,
Sirjee Rooplall Figment Design laboratories (Pty) Ltd mailto: address@hidden Mobile: +27 (0)83 230 8466 ![]() |
[Prev in Thread] | Current Thread | [Next in Thread] |