Hi
 
In the raw API there is a dedecated callback that tells me that the data is out 
and confirmed. I have been looking for something similar in the netconn API (in 
order to know when a buffer used in netconn_write can be freed without having 
to use NETCONN_COPY). I tried creating a netconn using  
"xNetConn = netconn_new_with_callback ( NETCONN_TCP, NetConnClientCallback );"  
  // netconn kept alive until no transfer for a few seconds
 
// called in the context of the TCP thread
statuc void NetConnClientCallback ( TNetConn aConn, ENetEvent aEv, UInt16 aLen )
{
    if ( aEv == NETCONN_EVT_SENDPLUS )
    {
        mClientSendCnt -= aLen;

        if ( mClientSendCnt == 0 )
            RTOS_SemPost ( gSemTcpClnHandle );
    }
} // NetConnClientCallback 

Basically it works, i.e. the semaphore is eventually posted, but unbearably 
slow (delay of ca. 200ms for each frame). Without this callback, using 
NETCONN_COPY for netconn_write, the throughput is at least 120 times better. 
Thus I conclude that I have misused the callback function for something it is 
not designed for. On the other hand I do not find a better way to get a "done" 
trigger. Is there a better way or do I have to copy the outgoing data (which 
would violate the concept of a non-copy interface)?
 
Walter
 


 _____________________________

SOLON Inverters AG
Burgerfeldstrasse 19
CH-8730 Uznach SG, Schweiz

Phone: +41 55 246 41 14
Direct:  +41 55 246 58 52
Fax:     +41 55 246 41 16
www.solon.com <http://www.soloninverters.com/> 

 

 
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to