From e9dd5bbc99cdf1db2a4f08d01f09b650403dc22f Mon Sep 17 00:00:00 2001 From: Erik Brakkee Date: Tue, 26 May 2026 15:41:10 +0200 Subject: [PATCH] a bit more robust. --- cmd/bridge/main.go | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/cmd/bridge/main.go b/cmd/bridge/main.go index 2dbf75d..1c9bdff 100644 --- a/cmd/bridge/main.go +++ b/cmd/bridge/main.go @@ -3,12 +3,29 @@ package main import ( "context" "fmt" + "io" "github.com/half2me/antgo/ant" "github.com/half2me/antgo/device" "github.com/half2me/antgo/driver/usb" ) +func resetAndWait(drv io.ReadWriter) error { + if _, err := drv.Write(ant.SystemResetMessage()); err != nil { + return err + } + // drain until we see the startup message (0x6F) + for { + msg, err := ant.ReadMsg(drv) + if err != nil { + return err + } + if msg.Class() == ant.MESSAGE_STARTUP { + return nil + } + } +} + func main() { drv, err := usb.GetDevice(0x0fcf, 0x1008) if err != nil { @@ -18,13 +35,11 @@ func main() { fmt.Println("device opened") - if err := device.ResetWait(drv); err != nil { - panic(fmt.Sprintf("reset failed: %v", err)) + if err := resetAndWait(drv); err != nil { + panic(err) } - fmt.Println("reset ok") - if err := device.StartRxScanModeWait(drv); err != nil { - panic(fmt.Sprintf("scan mode failed: %v", err)) + panic(err) } fmt.Println("scan mode started") @@ -39,7 +54,8 @@ func main() { switch msg.DeviceType() { case ant.DEVICE_TYPE_POWER: cur := ant.PowerMessage(msg) - fmt.Printf("power: %dW cadence: %d rpm\n", cur.InstantaneousPower(), cur.InstantaneousCadence()) + fmt.Printf("%v: power: %dW cadence: %d rpm\n", + msg.DeviceNumber(), cur.InstantaneousPower(), cur.InstantaneousCadence()) } }