summaryrefslogtreecommitdiff
path: root/fw/src/http.c
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2025-03-23 17:53:24 +0100
committerxengineering <me@xengineering.eu>2025-03-26 21:18:17 +0100
commitb073db4017008ceb638a9c23c8cc93e60a3a7fdb (patch)
tree3359897450d1a0d187eb1fc2c47f36a6475691fd /fw/src/http.c
parent6ebbc6cd9876744c09547bcb4ce2c39a89ce0f6c (diff)
downloadiot-contact-b073db4017008ceb638a9c23c8cc93e60a3a7fdb.tar
iot-contact-b073db4017008ceb638a9c23c8cc93e60a3a7fdb.tar.zst
iot-contact-b073db4017008ceb638a9c23c8cc93e60a3a7fdb.zip
fw: app: Move application firmware code here
This makes the structure of the `fw` folder more clear and separates application-related code from bootloader- or rtos-related code.
Diffstat (limited to 'fw/src/http.c')
-rw-r--r--fw/src/http.c112
1 files changed, 0 insertions, 112 deletions
diff --git a/fw/src/http.c b/fw/src/http.c
deleted file mode 100644
index e206f86..0000000
--- a/fw/src/http.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * This Source Code Form is subject to the terms of the Mozilla Public License,
- * v. 2.0. If a copy of the MPL was not distributed with this file, You can
- * obtain one at https://mozilla.org/MPL/2.0/.
- */
-
-
-#include <stdint.h>
-
-#include <zephyr/init.h>
-#include <zephyr/logging/log.h>
-#include <zephyr/net/http/server.h>
-#include <zephyr/net/http/service.h>
-#include <zephyr/net/http/status.h>
-
-#include "ws.h"
-
-
-LOG_MODULE_REGISTER(http);
-
-
-static const uint8_t index_html_gz[] = {
- #include "index.html.gz.inc"
-};
-
-struct http_resource_detail_static index_resource_detail = {
- .common = {
- .type = HTTP_RESOURCE_TYPE_STATIC,
- .bitmask_of_supported_http_methods = BIT(HTTP_GET),
- .content_encoding = "gzip",
- .content_type = "text/html",
- },
- .static_data = index_html_gz,
- .static_data_len = sizeof(index_html_gz),
-};
-
-static const uint8_t js_html_gz[] = {
- #include "iot-contact.js.gz.inc"
-};
-
-struct http_resource_detail_static js_resource_detail = {
- .common = {
- .type = HTTP_RESOURCE_TYPE_STATIC,
- .bitmask_of_supported_http_methods = BIT(HTTP_GET),
- .content_encoding = "gzip",
- .content_type = "text/javascript",
- },
- .static_data = js_html_gz,
- .static_data_len = sizeof(js_html_gz),
-};
-
-static int favicon_handler(
- struct http_client_ctx *client,
- enum http_data_status status,
- const struct http_request_ctx *request_ctx,
- struct http_response_ctx *response_ctx,
- void *user_data
-) {
- LOG_DBG("Handling favicon request");
-
- response_ctx->body = NULL;
- response_ctx->body_len = 0;
- response_ctx->final_chunk = true;
- response_ctx->status = HTTP_204_NO_CONTENT;
-
- LOG_DBG("Favicon request handled");
- return 0;
-}
-
-static struct http_resource_detail_dynamic favicon_resource_detail = {
- .common = {
- .type = HTTP_RESOURCE_TYPE_DYNAMIC,
- .bitmask_of_supported_http_methods = BIT(HTTP_GET),
- },
- .cb = favicon_handler,
- .user_data = NULL,
-};
-
-static uint8_t websocket_read_buffer[1024];
-
-struct http_resource_detail_websocket websocket_resource_detail = {
- .common = {
- .type = HTTP_RESOURCE_TYPE_WEBSOCKET,
- .bitmask_of_supported_http_methods = BIT(HTTP_GET),
- },
- .cb = ws_upgrade_handler,
- .data_buffer = websocket_read_buffer,
- .data_buffer_len = sizeof(websocket_read_buffer),
-};
-
-static uint16_t http_port = 80;
-
-HTTP_SERVICE_DEFINE(http_service, NULL, &http_port, 1, 10, NULL, NULL);
-
-HTTP_RESOURCE_DEFINE(index_resource, http_service, "/", &index_resource_detail);
-HTTP_RESOURCE_DEFINE(websocket_resource, http_service, "/", &websocket_resource_detail);
-HTTP_RESOURCE_DEFINE(favicon_resource, http_service, "/favicon.ico", &favicon_resource_detail);
-HTTP_RESOURCE_DEFINE(js_resource, http_service, "/iot-contact.js", &js_resource_detail);
-
-int init_http_server(void) {
- LOG_DBG("Starting HTTP server");
-
- int ret = http_server_start();
- if (ret < 0) {
- LOG_ERR("Failed to start HTTP server (%d)", ret);
- return ret;
- }
-
- LOG_INF("HTTP server was started");
- return 0;
-}
-SYS_INIT(init_http_server, APPLICATION, 99);