lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] proper way to add extern fs support to htttpserver_raw


From: Joseph L. Kroesche
Subject: [lwip-users] proper way to add extern fs support to htttpserver_raw
Date: Wed, 1 May 2013 17:03:11 +0000

I am using the httpserver_raw from contrib with lwip 1.4.1 with no rtos.  I am serving up web pages from the internal flash memory without any problems.  This is the fsdata_custom.c file that is prepared using makefsdata.  This all works fine.

 

However, I am struggling with the proper way to add support for an external file system, specifically SD card using FatFs.  I have all the lower layers of FatFs working properly, I can read and open files using the FatFs APIs.  I look at fs.c and I can see that I can create fs_open_custom and fs_close_custom.  So far so good.  But I do not have all the file in memory so I cant use the file->data, file->index to point to the current contents of the file.  So now I think I want to use LWIP_HTTPS_DYNAMIC_FILE_READ.  This is where I am getting stuck.  First of all, there is no equivalent call to fs_read_custom() like there is fs_open_custom().  It looks like the only way to hook in my custom file read and write is by implementing fs_canread_custom() and fs_wait_read_custom() even though I was not planning to do asynchronous reads.  I am not sure in this case what I am supposed to do in the functions fs_canread_custom() and fs_wait_read_custom() since neither of these takes any parameters like the buffer pointer and the count which is what I need to read from FatFs.

 

I did go ahead and modify fs.c fs_read() function to read from FatFs the way I thought it should work, but I am still getting stuck on what I should set file->data and file->len to.  When I look at httpd.c it looks like it still expects these to point at actual file data.  It sets hs->file = to data field of fs_file.  I also tried setting all these to 0, but then httpd.c calls fs_bytes_left()  which returns 0 because len and index are 0.  My next step will be to modify fs_bytes_left() to get bytes left from FatFs.

 

My main question is, am I supposed to be able to cleanly hook in to fs.c in order to add SD card reading via FatFs, or is the expectation that I just need to make my own fs.c?  I don’t mind doing that, but since it looks like it already supports the concept of custom file I/O (fs_open_custom, etc) I thought there was already a defined way to do what I want, and I am worried I am missing something obvious.

 

Thanks for reading.

 

-joe k

 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]