src.nth.io/

summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/app_main.c8
-rw-r--r--main/http_api.c16
2 files changed, 23 insertions, 1 deletions
diff --git a/main/app_main.c b/main/app_main.c
index a60496d..00a77bb 100644
--- a/main/app_main.c
+++ b/main/app_main.c
@@ -10,6 +10,7 @@
#include "touch.h"
#include "viewport_state.h"
+#include "esp_app_desc.h"
#include "esp_event.h"
#include "esp_log.h"
#include "esp_netif.h"
@@ -39,7 +40,12 @@ void app_main(void)
viewport_state_init();
nvs_config_load(); // apply persisted config over defaults (best-effort)
- ESP_LOGI(TAG, "Scrypted Viewport boot (v%s)", VIEWPORT_VERSION);
+ // PROJECT_VER comes from CMakeLists.txt — git short hash + dirty
+ // marker. Logged in the very first line so any captured boot log
+ // tells us exactly which build is running.
+ const esp_app_desc_t *desc = esp_app_get_description();
+ ESP_LOGI(TAG, "Scrypted Viewport boot (v%s build=%s)",
+ VIEWPORT_VERSION, desc ? desc->version : "?");
// ------------------------------------------------------------------
// Networking. Driver starts even with no cable plugged in; we just
diff --git a/main/http_api.c b/main/http_api.c
index c490a85..69e555e 100644
--- a/main/http_api.c
+++ b/main/http_api.c
@@ -499,6 +499,22 @@ static esp_err_t frame_post_handler(httpd_req_t *req)
state_machine_frame_painted(); // reset idle timer
+ // Server-Timing per-stage breakdown so the Scrypted side can build
+ // a unified end-to-end trace per frame (joined by X-Frame-Seq).
+ // Units are ms with 0.1ms precision — paint is sub-millisecond
+ // so the decimal matters there. Scrypted subtracts the sum from
+ // its own (fetch_start → Response_headers) measurement to derive
+ // the network up + handler-dispatch overhead it can't see directly.
+ char st_hdr[160];
+ snprintf(st_hdr, sizeof(st_hdr),
+ "recv;dur=%.1f, dec;dur=%.1f, paint;dur=%.1f, post;dur=%.1f, handle;dur=%.1f",
+ (t_recv - t_first_byte) / 1000.0,
+ (t_decode - t_recv) / 1000.0,
+ (t_paint - t_decode) / 1000.0,
+ (t_post - t_paint) / 1000.0,
+ (t_post - t_entry) / 1000.0);
+ httpd_resp_set_hdr(req, "Server-Timing", st_hdr);
+
httpd_resp_set_status(req, "204 No Content");
return httpd_resp_send(req, NULL, 0);
}