Better error messages.

Update rawread to use the new endpoint interface.
This commit is contained in:
Sebastian Zagrodzki
2017-04-29 00:41:26 +02:00
parent 1fd4e7f4c4
commit 80f3c60b2b
4 changed files with 21 additions and 6 deletions

View File

@@ -140,8 +140,19 @@ func main() {
}
dev := devs[0]
log.Printf("Connecting to endpoint %d...", *endpoint)
ep, err := dev.InEndpoint(*config, *iface, *alternate, *endpoint)
log.Printf("Setting configuration %d...", *config)
cfg, err := dev.Config(*config)
if err != nil {
log.Fatalf("dev.Config(%d): %v", *config, err)
}
log.Printf("Claiming interface %d (alt setting %d)...", *iface, *alternate)
intf, err := cfg.Interface(*iface, *alternate)
if err != nil {
log.Fatalf("cfg.Interface(%d, %d): %v", *iface, *alternate, err)
}
log.Printf("Using endpoint %d...", *endpoint)
ep, err := intf.InEndpoint(*endpoint)
if err != nil {
log.Fatalf("dev.InEndpoint(): %s", err)
}

View File

@@ -94,11 +94,11 @@ func (c *Config) Interface(intf, alt int) (*Interface, error) {
return nil, fmt.Errorf("Interface(%d, %d) called on %s after Close", intf, alt, c)
}
if intf < 0 || intf >= len(c.Info.Interfaces) {
return nil, fmt.Errorf("interface %d not found in %s. Interface number needs to be a 0-based index into the interface table, which has %d elements.", intf, c, len(c.Info.Interfaces))
return nil, fmt.Errorf("interface %d not found in %s, available interfaces 0..%d", intf, c, len(c.Info.Interfaces)-1)
}
ifInfo := c.Info.Interfaces[intf]
if alt < 0 || alt >= len(ifInfo.AltSettings) {
return nil, fmt.Errorf("Inteface %d does not have alternate setting %d. Alt setting needs to be a 0-based index into the settings table, which has %d elements.", ifInfo, alt, len(ifInfo.AltSettings))
return nil, fmt.Errorf("alternate setting %d not found for %s in %s, available alt settings 0..%d", alt, ifInfo, c, len(ifInfo.AltSettings)-1)
}
c.mu.Lock()

View File

@@ -77,7 +77,11 @@ func (d *Device) Config(cfgNum int) (*Config, error) {
}
}
if !found {
return nil, fmt.Errorf("configuration id %d not found in the descriptor of the device %s", cfg, d)
var cfgs []int
for _, c := range d.Descriptor.Configs {
cfgs = append(cfgs, c.Config)
}
return nil, fmt.Errorf("configuration id %d not found in the descriptor of the device %s. Available config ids: %v", cfgNum, d, cfgs)
}
if err := libusb.setConfig(d.handle, uint8(cfgNum)); err != nil {
return nil, fmt.Errorf("failed to set active config %d for the device %s: %v", cfgNum, d, err)

View File

@@ -93,7 +93,7 @@ func (i *Interface) openEndpoint(epNum int) (*endpoint, error) {
}
}
if !found {
return nil, fmt.Errorf("%s does not have endpoint number %d. Available endpoints: %v", epNum, i.Setting.Endpoints)
return nil, fmt.Errorf("%s does not have endpoint number %d. Available endpoints: %v", i, epNum, i.Setting.Endpoints)
}
return &endpoint{
InterfaceSetting: i.Setting,