Hello,
I want to use esp_http_server in my project since it also supports websockets.
I have my html, css and js files in spiffs as 3 separate files.
Looking at the "file_serving" example in the esp-idf, the example makes use of the cmakelists.txt file
I am using the arduino framework with platformio which AFAIK do not use cmakelist.txt file.
Is there anyway to get this functionality in my project ?
Thanks
using esp_http_server using arduino framework
-
- Posts: 826
- Joined: Mon Jul 22, 2019 3:20 pm
Re: using esp_http_server using arduino framework
arduino-esp32 is a pre-built set of ESP-IDF libraries. So, all that cmake stuff is already handled for you. The relevant pieces you need are all in the file_server.c file- #includes needed, initializing the daemon, setting up handlers, and handlers to do basic responses. Past that, use the idf doco for details on the functions. Once you get into it, you'll see it is essentially the same process as what you are doing with WebServer.h.
Re: using esp_http_server using arduino framework
In the file_serving example I do not understand the "extern ..." lines shown below.
/* Get handle to embedded file upload script */
extern const unsigned char upload_script_start[] asm("_binary_upload_script_html_start");
extern const unsigned char upload_script_end[] asm("_binary_upload_script_html_end");
const size_t upload_script_size = (upload_script_end - upload_script_start);
httpd_resp_send_chunk(req, (const char *)upload_script_start, upload_script_size);
I ended up putting my index.html file in spiffs and when i need to send it to the client I open the file, count number of bytes then
save the file to a buffer to send it using httpd_resp_send(req, (char *)buf, fileLength);
Don't know if that is best way to do it but it works.
Thanks for replying. I will mark this as solved.
/* Get handle to embedded file upload script */
extern const unsigned char upload_script_start[] asm("_binary_upload_script_html_start");
extern const unsigned char upload_script_end[] asm("_binary_upload_script_html_end");
const size_t upload_script_size = (upload_script_end - upload_script_start);
httpd_resp_send_chunk(req, (const char *)upload_script_start, upload_script_size);
I ended up putting my index.html file in spiffs and when i need to send it to the client I open the file, count number of bytes then
save the file to a buffer to send it using httpd_resp_send(req, (char *)buf, fileLength);
Don't know if that is best way to do it but it works.
Thanks for replying. I will mark this as solved.
-
- Posts: 826
- Joined: Mon Jul 22, 2019 3:20 pm
Re: using esp_http_server using arduino framework
Those extern lines are including an external file to be added to ro_data during compile. In Arduino, you can accomplish the same thing with constant strings. You can see an example of how I typically do this in the OTAWebUpdater example. I prefer to only have user data in a file system. Slipstreaming the files into your code means they get replaced along with the rest of the firmware.
Who is online
Users browsing this forum: Baidu [Spider] and 81 guests