Summary Files Commits Branches @commit @diff @stats
diff options
context:
space:
mode:
Commitb1960f8badfa7fddfc47eeefb04add97af26e3e8 (patch)
Author
 Syndamia <kamen@syndamia.com>
2024-05-19 21:03:59 +0300
Committer
 Syndamia <kamen@syndamia.com>
2024-05-19 21:03:59 +0300
Files92d43c88b1b041935c528ec93852fce6da0b8f3f
uni-projects-b1960f8badfa7fddfc47eeefb04add97af26e3e8.tar
uni-projects-b1960f8badfa7fddfc47eeefb04add97af26e3e8.tar.gz
uni-projects-b1960f8badfa7fddfc47eeefb04add97af26e3e8.zip
Parentc438065a1aab0f67f79199815b108f19b10f9b2e (diff)
[iot/goam] Split webserver get requests
One gets the index page, the other directly returns a file from spiffs
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>