14#if DETWS_ENABLE_DASHBOARD
22#if DETWS_ENABLE_WEBSOCKET
33#if DETWS_ENABLE_WEBSOCKET
37static DashRoutesCtx s_dashr;
39static void dash_page_handler(uint8_t slot_id,
HttpReq *req)
46static void dash_layout_handler(uint8_t slot_id,
HttpReq *req)
50 detws_dashboard_layout_json(buf,
sizeof(buf));
52 s_dashr.srv->send(slot_id, 200, DET_MIME_JSON, buf);
55static void dash_sse_connect(uint8_t sse_id)
58 if (s_dashr.srv && detws_dashboard_values_json(buf,
sizeof(buf)) > 0)
59 s_dashr.srv->sse_send(sse_id, buf);
62#if DETWS_ENABLE_WEBSOCKET
63static void dash_ws_connect(uint8_t ws_id)
67static void dash_ws_message(uint8_t ws_id)
71 detws_dashboard_dispatch_control(
ws_payload(ws_id));
73static void dash_ws_close(uint8_t ws_id)
79void detws_dashboard_begin(
DetWebServer &server,
const char *path,
const DetwsWidget *widgets, uint8_t count)
81 s_dashr.srv = &server;
82 detws_dashboard_configure(widgets, count);
84 if (!path || !path[0])
88 snprintf(layout_path,
sizeof(layout_path),
"%s/layout", path);
89 snprintf(s_dashr.stream_path,
sizeof(s_dashr.stream_path),
"%s/stream", path);
93 server.on_sse(s_dashr.stream_path, dash_sse_connect);
94#if DETWS_ENABLE_WEBSOCKET
95 snprintf(s_dashr.ws_path,
sizeof(s_dashr.ws_path),
"%s/ws", path);
96 server.on_ws(s_dashr.ws_path, dash_ws_connect, dash_ws_message, dash_ws_close);
100void detws_dashboard_publish()
105 if (detws_dashboard_values_json(buf,
sizeof(buf)) > 0)
106 s_dashr.srv->sse_broadcast(s_dashr.stream_path, buf);
#define DETWS_DASHBOARD_JSON_BUF
Stack buffer for the dashboard layout / values JSON (bytes).
#define MAX_PATH_LEN
Maximum URL path length (including leading /).
#define MAX_WS_CONNS
Maximum simultaneous WebSocket connections.
Single-port HTTP server with deterministic, zero-allocation execution.
void on(const char *path, HttpMethod method, Handler callback)
Register a route handler.
Real-time SVG telemetry dashboard (DETWS_ENABLE_DASHBOARD).
Layer 7 (Application) - public HTTP routing API.
@ HTTP_GET
Safe, idempotent read.
Shared HTTP Content-Type ("MIME") string constants (one source of truth).
Fully-parsed HTTP/1.1 request.
const char DETWS_DASHBOARD_PAGE[]
Real-time SVG telemetry dashboard page (DETWS_ENABLE_DASHBOARD).
Layer 7 (Application) - embedded web assets generated from src/web/input/.
const char * ws_payload(uint8_t ws_id)
The NUL-terminated reassembled message payload for ws_id, or nullptr if the slot is out of range / in...
Layer 6 (Presentation) – WebSocket frame parser and connection pool.