From 5920d9bc776dcf508e050af4de97139fa2b96ba6 Mon Sep 17 00:00:00 2001 From: ScottW514 Date: Sat, 29 Aug 2026 17:47:05 -0400 Subject: [PATCH] Pin forgectrl 25cf969 and register the offset probe on the bench page forgectrl 25cf969 lets status.c link without the cooling engine (the image build compiles the status host tests), so the pin moves to it; verified with bitbake -c fetch. offset_probe.py joins the bench-page registry (survey, ladder and jog; the armed dwell stays a hand-run mode) and takes "survey" as a mode word. --- forgetest/forgetest/bench.py | 10 ++++++++++ .../recipes-forgefirm/forgectrl/forgectrl-pin.inc | 2 +- scripts/bench/offset_probe.py | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/forgetest/forgetest/bench.py b/forgetest/forgetest/bench.py index ea21933..3f3dffd 100644 --- a/forgetest/forgetest/bench.py +++ b/forgetest/forgetest/bench.py @@ -128,6 +128,16 @@ TOOLS = [ _arg("warm_min", "float", 20.0, "warm-up budget per check, minutes")], "desc": "Runs the real check (40 percent / 50 s, cut-profile fans) from a heater-warmed baseline, alternating " "flow and no-flow; results to the bench data directory. Slow: about 15 minutes per cycle."}, + {"id": "offset-probe", "title": "Coolant-sensor offset probe", "script": "offset_probe.py", + "safety": "dry", "where": "board", "ported": True, + "args": [_arg("mode", "choice", "survey", "survey: one actuator at a time; ladder: the air-assist " + "duty ladder; jog: the air assist at run duty while the gantry jogs", + ["survey", "ladder", "jog"])], + "desc": "Which actuator moves both coolant thermistors together? Switches the exhaust (100/50/25 " + "percent), intakes, air assist, purge, heater, pump, TEC and lid lamp one at a time, dark, " + "with both sensors at 25 Hz, and scores the common-mode step at every edge and the level " + "toggling inside every dwell; every value is restored on exit. The pump stops once for " + "8 s with the tube dark and the heater off. About five minutes."}, {"id": "critical-tier", "title": "Coolant critical-tier warm-loop drill", "script": "critical_tier_drill.py", "safety": "dry", "where": "board", "ported": True, "args": [_arg("max_seconds", "int", 1200, "give up after this long without CRITICAL", flag="--max-seconds")], diff --git a/meta-forgefirm/recipes-forgefirm/forgectrl/forgectrl-pin.inc b/meta-forgefirm/recipes-forgefirm/forgectrl/forgectrl-pin.inc index 23a3aa8..4686009 100644 --- a/meta-forgefirm/recipes-forgefirm/forgectrl/forgectrl-pin.inc +++ b/meta-forgefirm/recipes-forgefirm/forgectrl/forgectrl-pin.inc @@ -2,5 +2,5 @@ # only SRCREV and PV here - the image manifest leaves *-pin.inc out of the # layer content hash because the component entry already identifies the # pinned source (forgefirm-image-manifest.bbclass). -SRCREV = "f9b48934b32278140510401bd066dac1e1437b7e" +SRCREV = "25cf969cf149bc539ff90f875fcc7edaa6c52ae2" PV = "0.1.0" diff --git a/scripts/bench/offset_probe.py b/scripts/bench/offset_probe.py index 72873b9..4cfb622 100644 --- a/scripts/bench/offset_probe.py +++ b/scripts/bench/offset_probe.py @@ -357,7 +357,7 @@ def main(): if len(sys.argv) > 1 and sys.argv[1] == 'armed': return run_armed() ladder = len(sys.argv) > 1 and sys.argv[1] == 'ladder' - repeat = int(sys.argv[1]) if len(sys.argv) > 1 and not ladder else 2 + repeat = int(sys.argv[1]) if len(sys.argv) > 1 and sys.argv[1].isdigit() else 2 attrs = { 'exhaust': SYSFS + 'thermal/exhaust_pwm', 'intake': SYSFS + 'thermal/intake_pwm',