a bit more robust.

This commit is contained in:
Erik Brakkee 2026-05-26 15:41:10 +02:00
parent 2bbca6f082
commit e9dd5bbc99

View File

@ -3,12 +3,29 @@ package main
import ( import (
"context" "context"
"fmt" "fmt"
"io"
"github.com/half2me/antgo/ant" "github.com/half2me/antgo/ant"
"github.com/half2me/antgo/device" "github.com/half2me/antgo/device"
"github.com/half2me/antgo/driver/usb" "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() { func main() {
drv, err := usb.GetDevice(0x0fcf, 0x1008) drv, err := usb.GetDevice(0x0fcf, 0x1008)
if err != nil { if err != nil {
@ -18,13 +35,11 @@ func main() {
fmt.Println("device opened") fmt.Println("device opened")
if err := device.ResetWait(drv); err != nil { if err := resetAndWait(drv); err != nil {
panic(fmt.Sprintf("reset failed: %v", err)) panic(err)
} }
fmt.Println("reset ok")
if err := device.StartRxScanModeWait(drv); err != nil { if err := device.StartRxScanModeWait(drv); err != nil {
panic(fmt.Sprintf("scan mode failed: %v", err)) panic(err)
} }
fmt.Println("scan mode started") fmt.Println("scan mode started")
@ -39,7 +54,8 @@ func main() {
switch msg.DeviceType() { switch msg.DeviceType() {
case ant.DEVICE_TYPE_POWER: case ant.DEVICE_TYPE_POWER:
cur := ant.PowerMessage(msg) 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())
} }
} }