feat: Add HTTP server with static file serving from LittleFS, system API endpoints, and CORS support.

This commit is contained in:
2026-03-03 14:31:01 -05:00
parent cfe7332899
commit fe8d2974ea

View File

@@ -8,6 +8,10 @@
#include "esp_log.h" #include "esp_log.h"
#include "esp_vfs.h" #include "esp_vfs.h"
#ifdef CONFIG_CALENDINK_DEPLOY_WEB_PAGES
#include "esp_littlefs.h"
#endif
// Project // Project
#include "api/system/info.cpp" #include "api/system/info.cpp"
#include "api/system/reboot.cpp" #include "api/system/reboot.cpp"
@@ -171,6 +175,33 @@ internal esp_err_t cors_options_handler(httpd_req_t *req)
internal httpd_handle_t start_webserver(void) internal httpd_handle_t start_webserver(void)
{ {
#ifdef CONFIG_CALENDINK_DEPLOY_WEB_PAGES
esp_vfs_littlefs_conf_t conf = {};
conf.base_path = "/www";
conf.partition_label = "www";
conf.format_if_mount_failed = false;
conf.dont_mount = false;
esp_err_t ret = esp_vfs_littlefs_register(&conf);
if (ret != ESP_OK)
{
if (ret == ESP_FAIL)
{
ESP_LOGE(TAG, "Failed to mount or format filesystem");
}
else if (ret == ESP_ERR_NOT_FOUND)
{
ESP_LOGE(TAG, "Failed to find LittleFS partition");
}
else
{
ESP_LOGE(TAG, "Failed to initialize LittleFS (%s)", esp_err_to_name(ret));
}
}
else
{
ESP_LOGI(TAG, "LittleFS mounted on /www");
}
#endif
http_server_data_t *rest_context = http_server_data_t *rest_context =
(http_server_data_t *)calloc(1, sizeof(http_server_data_t)); (http_server_data_t *)calloc(1, sizeof(http_server_data_t));
if (rest_context == NULL) if (rest_context == NULL)
@@ -221,5 +252,8 @@ internal void stop_webserver(httpd_handle_t server)
if (server) if (server)
{ {
httpd_stop(server); httpd_stop(server);
#ifdef CONFIG_CALENDINK_DEPLOY_WEB_PAGES
esp_vfs_littlefs_unregister("www");
#endif
} }
} }