From fd28c1d104004b94ca9244d1c03a84463054eb6c Mon Sep 17 00:00:00 2001 From: Godmar Back Date: Sun, 21 Jun 2026 21:18:46 -0400 Subject: [PATCH 1/4] (#228) support disconnectedDebounceTime constant in settings_gui --- settings_gui/src/pages/VisionEditor.tsx | 34 ++++++++++++++++++++++++- settings_gui/src/types/Vision.d.ts | 4 +++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/settings_gui/src/pages/VisionEditor.tsx b/settings_gui/src/pages/VisionEditor.tsx index 12f11af1..55791822 100644 --- a/settings_gui/src/pages/VisionEditor.tsx +++ b/settings_gui/src/pages/VisionEditor.tsx @@ -29,6 +29,7 @@ import type { CameraConfig, CameraTransform, GainConstants, + UnitValue, } from '../types/Vision'; // --- Wire format conversion --- @@ -61,12 +62,17 @@ function wireToConfig(wire: VisionWireFormat): VisionConfig { cameras.sort((a, b) => a.num - b.num); return { gainConstants: wire.gainConstants, + disconnectedDebounceTime: + (wire.disconnectedDebounceTime as UnitValue) ?? defaultDebounceTime(), cameras: cameras.map((c) => c.cam), }; } function configToWire(config: VisionConfig): VisionWireFormat { - const wire: VisionWireFormat = { gainConstants: config.gainConstants }; + const wire: VisionWireFormat = { + gainConstants: config.gainConstants, + disconnectedDebounceTime: config.disconnectedDebounceTime, + }; config.cameras.forEach((cam, i) => { const n = i + 1; wire[`camera${n}Index`] = cam.index; @@ -83,6 +89,10 @@ function defaultTransform(): CameraTransform { }; } +function defaultDebounceTime(): UnitValue { + return { value: 2.0, unit: 'Seconds' }; +} + // --- SliderField --- interface SliderFieldProps { @@ -460,6 +470,28 @@ export function VisionEditor() { onChange={(gainConstants) => setData({ ...data, gainConstants })} /> + + + Connection + + + setData({ + ...data, + disconnectedDebounceTime: { + ...data.disconnectedDebounceTime, + value: parseFloat(e.target.value) || 0, + }, + }) + } + slotProps={{ htmlInput: { step: 0.1, min: 0 } }} + /> + + Cameras