Hi Noam,

I sounds interesting,
I may confused regarding the netconn API functions:

   - what does the netconn_recv() function if I call it two or more times
   on the same netconn object?
   - is the netbuf_next() method exactly, who read further data from the
   connection?

I will check your solution and notify about the result.

Regards,
Norbert


2017-04-03 23:16 GMT+02:00 <[email protected]>:

> Send lwip-users mailing list submissions to
>         [email protected]
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://lists.nongnu.org/mailman/listinfo/lwip-users
> or, via email, send a message with subject or body 'help' to
>         [email protected]
>
> You can reach the person managing the list at
>         [email protected]
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of lwip-users digest..."
>
>
> Today's Topics:
>
>    1. Re: Transfer Mibs of data over TCP (Noam Weissman)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Mon, 3 Apr 2017 13:43:44 +0000
> From: Noam Weissman <[email protected]>
> To: Mailing list for lwIP users <[email protected]>
> Subject: Re: [lwip-users] Transfer Mibs of data over TCP
> Message-ID:
>         <AM5PR0902MB2066F1E997ED4BC95C0BB278D8080@AM5PR0902MB2066.
> eurprd09.prod.outlook.com>
>
> Content-Type: text/plain; charset="utf-8"
>
> Hi,
>
> Why not use the RAW API server that is in the contribution ?
>
> I am not using it because am using my own modified code that was created
> before the current version.
> As far as I know it works nicely and many are using it ?
>
> I have no problems accepting a large file 1MB? never had to accept a
> larger file but I  do not think it makes
> any difference.
>
> I think that if netbuf_next() fails you need to add some delay and try
> again.
> I mean add vTaskDelay(10) or similar and try again.
>
> When you transfer large amount of data you may get into cases that the
> network has some lag.
> In that case your netbuf_next() call nay fail.
>
> Doing something like this:
>
> #define READ_ERROR_DELAY          10
> #define READ_ERROR_TIMEOUT    500
>
> err_t MyRead( params )
> {
>    Int RetVal , TotalTimeOut  = 0;
>
>    Do
>    {
>       RetVal = netbuf_next();
>
>       If(RetVal == (-1))
>       {
>           vTaskDelay(READ_ERROR_DELAY / portTICK_RATE_MS);
>           TotalTimeOut += READ_ERROR_DELAY;
>       }
>       else
>       {
>           break;
>       }
>
>    } while(TotalTimeOut < READ_ERROR_TIMEOUT);
>
> }
>
>
> The above function will try to read from the socket and if fails it will
> delay for about 10 ms? that way you give
> the TCP and other system tasks time to run.
>
> If the above is not an option due to system constrains you can adapt some
> kind of state machine, per connection
> and use lwip own function sys_timeout to trigger for the above function or
> similar.
>
> Hope that gives some ideas?
>
> Good luck,
> Noam.
>
> From: lwip-users [mailto:[email protected]] On
> Behalf Of T?th Norbert
> Sent: Monday, April 03, 2017 4:03 PM
> To: [email protected]
> Subject: [lwip-users] Transfer Mibs of data over TCP
>
> Hi Folks,
>
> I develop a system based on the followings:
>
>   *       TM4C1294 TI Cortex M4 CPU
>   *       FreeRTOS 7.x
>   *       TinyFS for FAT file system handling on SD card
>   *       LwIP 1.4.1 netconn API
> I have to receive files (20-40MB) via HTTP POST request and store them
> into SD card (basically it is a simple HTTP file server).
> Due to the other design decisions and the FreeRTOS, using "netconn" API
> seems to be the most suitable for me.
> My problem is that it only works well with small files (20~100B) not with
> the desired sizes. I implemented the following logic looks like:
>
>   *   wait for an incoming connection
>   *   parse the HTTP header (excluding resource name and method)
>   *   write the rest of data from the current pbuf
>   *   repeat the following while data can be read from the connection:
>
>      *   acquire the next "part" of data by netbuf_next()
>      *   if it results -1
>
>         *   delete the current netbuf by netbuf_delete()
>         *   call netconn_recv() on the connection
>
>      *   store data (if all the above result success)
>
> Can anybody help me, what should I fix?  What did I wrong?
>
> Regards,
> Nobert
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: <http://lists.nongnu.org/archive/html/lwip-users/
> attachments/20170403/86a62e24/attachment.html>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> lwip-users mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/lwip-users
>
> ------------------------------
>
> End of lwip-users Digest, Vol 164, Issue 4
> ******************************************
>
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to