From 8da67e52bc056581fbad688eb2d6e9eb6cc7d710 Mon Sep 17 00:00:00 2001 From: Eduardo Silva Date: Mon, 1 Jun 2026 22:55:16 +0100 Subject: [PATCH] must clean this up, but it fixes hanging up trying to probe devices --- cdashdisplay/connect.go | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/cdashdisplay/connect.go b/cdashdisplay/connect.go index 38bfece..bf899c2 100644 --- a/cdashdisplay/connect.go +++ b/cdashdisplay/connect.go @@ -50,6 +50,8 @@ func findDisplayPort() (*communication.WalkieTalkie, error) { var wt *communication.WalkieTalkie for _, port := range ports { + pLogger.Info(fmt.Sprintf("Trying port %s", port)) + wt = &communication.WalkieTalkie{ Cfg: &serial.Config{ Name: port, @@ -58,8 +60,26 @@ func findDisplayPort() (*communication.WalkieTalkie, error) { }, } - err = probe(wt) + pLogger.Info(fmt.Sprintf("Started probing port %s", port)) + + probeResult := make(chan error, 1) + + go func() { + probeResult <- probe(wt) + }() + + select { + case err = <-probeResult: + // Probe completed normally (could be success or error) + case <-time.After(2 * time.Second): + // Hard timeout reached + err = fmt.Errorf("probe completely hung/timed out: %s", port) + } + + pLogger.Info(fmt.Sprintf("Finished probing port %s", port)) + if err == nil { + pLogger.Info(fmt.Sprintf("Success probing port %s: %+v", port, err)) break }