diff options
| Commit | b1960f8badfa7fddfc47eeefb04add97af26e3e8 (patch) | |
|---|---|---|
| Author | 2024-05-19 21:03:59 +0300 | |
| Committer | 2024-05-19 21:03:59 +0300 | |
| Files | 92d43c88b1b041935c528ec93852fce6da0b8f3f | |
| uni-projects-b1960f8badfa7fddfc47eeefb04add97af26e3e8.tar uni-projects-b1960f8badfa7fddfc47eeefb04add97af26e3e8.tar.gz uni-projects-b1960f8badfa7fddfc47eeefb04add97af26e3e8.zip | ||
| Parent | c438065a1aab0f67f79199815b108f19b10f9b2e (diff) | |
[iot/goam] Split webserver get requests
One gets the index page, the other directly returns a file from spiffs
3 files changed, 43 insertions, 10 deletions
| -rw-r--r-- | Year 3/Internet of things/goam/main/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | Year 3/Internet of things/goam/main/webserver.c | 43 | ||||
| -rw-r--r-- | Year 3/Internet of things/goam/webserver-src/index.html | 9 |
diff --git a/Year 3/Internet of things/goam/main/CMakeLists.txt b/Year 3/Internet of things/goam/main/CMakeLists.txt index 89e5331..fdaee6e 100644 --- a/Year 3/Internet of things/goam/main/CMakeLists.txt +++ b/Year 3/Internet of things/goam/main/CMakeLists.txt @@ -5,4 +5,5 @@ idf_component_register(SRCS "main.c" "wifi.c" "webserver.c" "spiffs.c" + EMBED_FILES "../webserver-src/index.html" INCLUDE_DIRS "") diff --git a/Year 3/Internet of things/goam/main/webserver.c b/Year 3/Internet of things/goam/main/webserver.c index f803315..3815b7f 100644 --- a/Year 3/Internet of things/goam/main/webserver.c +++ b/Year 3/Internet of things/goam/main/webserver.c @@ -63,18 +63,33 @@ static bool request_get_query(httpd_req_t *req, const char* query_name, char* bu } } +static char* index_page = NULL; +static size_t index_page_len = 0; static esp_err_t get_handler(httpd_req_t *req) { - /* Set some custom headers */ - /* httpd_resp_set_hdr(req, "Content-Type", "image/jpeg"); */ + httpd_resp_send(req, index_page, index_page_len); + /* After sending the HTTP response the old HTTP request + * headers are lost. Check if HTTP request headers can be read now. */ + if (httpd_req_get_hdr_value_len(req, "Host") == 0) { + ESP_LOGI(TAG, "Request headers lost"); + } + return ESP_OK; +} +static const httpd_uri_t get_page = { + .uri = "/*", + .method = HTTP_GET, + .handler = get_handler, + .user_ctx = NULL +}; + +static esp_err_t get_image_handler(httpd_req_t *req) +{ ESP_ERROR_CHECK(httpd_resp_set_type(req, "image/jpeg")); - /* Send response with custom headers and body set as the - * string passed in user context*/ - /* const char resp_str[] = "<html><head><title>Hello</title></head><body>World</body></html>"; */ + char* resp_str = NULL; - size_t length = spiffs_read("/spiffs/capture.jpeg", &resp_str); + size_t length = spiffs_read(req->uri, &resp_str); httpd_resp_send(req, resp_str, length); free(resp_str); @@ -86,10 +101,10 @@ static esp_err_t get_handler(httpd_req_t *req) } return ESP_OK; } -static const httpd_uri_t get_page = { - .uri = "/*", - .method = HTTP_GET, - .handler = get_handler, +static const httpd_uri_t get_image = { + .uri = SPIFFS_PREFIX "/*", + .method = HTTP_GET, + .handler = get_image_handler, .user_ctx = NULL }; @@ -116,9 +131,16 @@ static void connect_handler(void* arg, esp_event_base_t event_base, int32_t even } } +#define SET_EMBEDDED_PTR(var, var_size, conv_filename) \ + extern const unsigned char var ## _start[] asm("_binary_" conv_filename "_start"); \ + extern const unsigned char var ## _end[] asm("_binary_" conv_filename "_end"); \ + var = (char*)(var ## _start); var_size = (var ## _end - var ## _start); + void webserver_init() { ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &connect_handler, NULL)); /* ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &disconnect_handler, &server)); */ + + SET_EMBEDDED_PTR(index_page, index_page_len, "index_html"); } void webserver_start() @@ -138,5 +160,6 @@ void webserver_start() ESP_LOGI(TAG, "Registering URI handlers"); + httpd_register_uri_handler(server, &get_image); httpd_register_uri_handler(server, &get_page); } diff --git a/Year 3/Internet of things/goam/webserver-src/index.html b/Year 3/Internet of things/goam/webserver-src/index.html new file mode 100644 index 0000000..24214a6 --- /dev/null +++ b/Year 3/Internet of things/goam/webserver-src/index.html @@ -0,0 +1,9 @@ +<html> + <head> + <title>GoAm</title> + </head> + <body> + <p>Latest image:</p> + <img src="/spiffs/capture.jpeg"> + </body> +</html> |
