src.nth.io/

summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2026-06-19 19:07:55 -0500
committerLuke Hoersten <[email protected]>2026-06-19 19:07:55 -0500
commit846e4dbfed188154332fa01058e13df8336f0476 (patch)
tree1f956c62334aef09f6422e04726fcf3598a2b2e5 /CMakeLists.txt
parent4cf36e2569a85f63aa0726cd0318dce0aa9e71bd (diff)
unified end-to-end per-frame instrumentation + version stamps
Cross-side timing was opaque: script saw "req=70ms" but couldn't split TCP/dispatch overhead from firmware decode time, and firmware serial logs and Scrypted console logs couldn't be correlated. Firmware /frame handler now emits Server-Timing on every response with per-stage breakdown: Server-Timing: recv;dur=X, dec;dur=Y, paint;dur=Z, post;dur=W, handle;dur=total Script parses it, joins by X-Frame-Seq implicitly (one POST per seq), derives net_up = req − fw_total, and logs a multi-line p50/p95 breakdown every 10 fetches: fetch "kitchen" #10 (jpeg=137KB) wall p50=65ms p95=140ms emit→post p50=0ms p95=2ms (queue wait) req p50=62ms p95=135ms (fetch → Response headers) net_up p50=43ms p95=110ms (TCP + body wire + dispatch) fw_recv p50=12ms p95=18ms (body off the wire) fw_dec p50=6ms p95=8ms (hardware JPEG) fw_paint p50=0.1ms p95=0.2ms (backbuffer flip) fw_post p50=0.4ms p95=0.6ms body-read p50=1ms (drain — empty body) inflight d0=8 d1=2 d2=0 stale-drops=0 Plus version stamps on both sides for the "is the user on the right code" question: - CMakeLists: PROJECT_VER = git short hash + -dirty marker if dirty. esp_app_get_description()->version exposes it at runtime. Boot log: "Scrypted Viewport boot (v0.1.0 build=4cf36e2-dirty)". - TS: SCRIPT_VERSION const at the top, bumped per commit, logged at script-eval: "Scrypted Viewport up (script=4cf36e2). Callback ..."
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt23
1 files changed, 22 insertions, 1 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5281b89..9ca9c34 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,27 @@
cmake_minimum_required(VERSION 3.16)
-set(PROJECT_VER "0.1")
+# Stamp the build with the current git short hash + dirty marker so
+# the firmware can log it at boot and we can verify which commit is
+# running on the device when reading log output. Falls back to
+# "unknown" outside a git checkout.
+execute_process(
+ COMMAND git rev-parse --short HEAD
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ OUTPUT_VARIABLE GIT_HASH
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ ERROR_QUIET)
+execute_process(
+ COMMAND git diff --quiet HEAD --
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+ RESULT_VARIABLE GIT_DIRTY_RC
+ ERROR_QUIET)
+if(NOT GIT_HASH)
+ set(GIT_HASH "unknown")
+endif()
+if(NOT GIT_DIRTY_RC EQUAL 0)
+ set(GIT_HASH "${GIT_HASH}-dirty")
+endif()
+set(PROJECT_VER "${GIT_HASH}")
set(PROJECT_VER_NUMBER 1)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)