no more init() and package level config.
This commit is contained in:
parent
ed4f75a93d
commit
e99348c66d
@ -30,59 +30,56 @@ func newConfig() *config {
|
|||||||
return &config{}
|
return &config{}
|
||||||
}
|
}
|
||||||
|
|
||||||
var rootCmd = &cobra.Command{
|
func main() {
|
||||||
Use: "bridge",
|
rootCmd := &cobra.Command{
|
||||||
Short: "ANT+ to Bluetooth LE bridge",
|
Use: "bridge",
|
||||||
Long: `Bridge an ANT+ cycling power trainer over Bluetooth Low Energy.
|
Short: "ANT+ to Bluetooth LE bridge",
|
||||||
|
Long: `Bridge an ANT+ cycling power trainer over Bluetooth Low Energy.
|
||||||
This allows these trainers to be used with modern devices that don't support ANT+.`,
|
This allows these trainers to be used with modern devices that don't support ANT+.`,
|
||||||
Version: fmt.Sprintf("%s (built %s)", Version, BuildTime),
|
Version: fmt.Sprintf("%s (built %s)", Version, BuildTime),
|
||||||
RunE: func(cmd *cobra.Command, args []string) error {
|
RunE: func(cmd *cobra.Command, args []string) error {
|
||||||
c := newConfig()
|
c := newConfig()
|
||||||
|
|
||||||
c.vendor = cmd.Flags().Lookup("vendor").Value.String()
|
c.vendor = cmd.Flags().Lookup("vendor").Value.String()
|
||||||
c.product = cmd.Flags().Lookup("product").Value.String()
|
c.product = cmd.Flags().Lookup("product").Value.String()
|
||||||
c.device = cmd.Flags().Lookup("device").Value.String()
|
c.device = cmd.Flags().Lookup("device").Value.String()
|
||||||
|
|
||||||
vendorID, err := parseHex(c.vendor, 16)
|
vendorID, err := parseHex(c.vendor, 16)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid --vendor %q: %w", c.vendor, err)
|
return fmt.Errorf("invalid --vendor %q: %w", c.vendor, err)
|
||||||
}
|
}
|
||||||
productID, err := parseHex(c.product, 16)
|
productID, err := parseHex(c.product, 16)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid --product %q: %w", c.product, err)
|
return fmt.Errorf("invalid --product %q: %w", c.product, err)
|
||||||
}
|
}
|
||||||
deviceNumber, err := parseHex(c.device, 32)
|
deviceNumber, err := parseHex(c.device, 32)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("invalid --device %q: %w", c.device, err)
|
return fmt.Errorf("invalid --device %q: %w", c.device, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
c.vendorID = vendorID
|
c.vendorID = vendorID
|
||||||
c.productID = productID
|
c.productID = productID
|
||||||
c.deviceNumber = uint32(deviceNumber)
|
c.deviceNumber = uint32(deviceNumber)
|
||||||
|
|
||||||
logMsgf("ANT Bridge %s built %s", Version, BuildTime)
|
logMsgf("ANT Bridge %s built %s", Version, BuildTime)
|
||||||
logMsgf("vendor: 0x%04x/%d", vendorID, vendorID)
|
logMsgf("vendor: 0x%04x/%d", vendorID, vendorID)
|
||||||
logMsgf("product: 0x%04x/%d", productID, productID)
|
logMsgf("product: 0x%04x/%d", productID, productID)
|
||||||
logMsgf("device: 0x%03x/%d", deviceNumber, deviceNumber)
|
logMsgf("device: 0x%03x/%d", deviceNumber, deviceNumber)
|
||||||
|
|
||||||
exec.Command("hciconfig", "hci0", "down").Run()
|
exec.Command("hciconfig", "hci0", "down").Run()
|
||||||
exec.Command("hciconfig", "hci0", "up").Run()
|
exec.Command("hciconfig", "hci0", "up").Run()
|
||||||
|
|
||||||
events := make(chan Event)
|
events := make(chan Event)
|
||||||
go ListenForTrainer(uint16(c.vendorID), uint16(c.productID), c.deviceNumber, events)
|
go ListenForTrainer(uint16(c.vendorID), uint16(c.productID), c.deviceNumber, events)
|
||||||
ExposeBluetooth(events)
|
ExposeBluetooth(events)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
|
||||||
rootCmd.Flags().String("vendor", "0x0fcf", "USB vendor ID (hex, e.g. 0x0fcf)")
|
rootCmd.Flags().String("vendor", "0x0fcf", "USB vendor ID (hex, e.g. 0x0fcf)")
|
||||||
rootCmd.Flags().String("product", "0x1008", "USB product ID (hex, e.g. 0x1008)")
|
rootCmd.Flags().String("product", "0x1008", "USB product ID (hex, e.g. 0x1008)")
|
||||||
rootCmd.Flags().String("device", "3001", "ANT+ device number (hex or decimal, e.g. 3001 or 0xbb9)")
|
rootCmd.Flags().String("device", "3001", "ANT+ device number (hex or decimal, e.g. 3001 or 0xbb9)")
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
if err := rootCmd.Execute(); err != nil {
|
if err := rootCmd.Execute(); err != nil {
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user