newEndpoint no longer references *Device, but receives individual values

extracted from the device. Makes testing easier.
This commit is contained in:
Sebastian Zagrodzki
2017-02-26 21:47:47 +01:00
parent d0859b8c47
commit 2d51a51ec5
3 changed files with 7 additions and 9 deletions

View File

@@ -141,7 +141,7 @@ func (d *Device) OpenEndpoint(cfgNum, ifNum, setNum, epNum uint8) (Endpoint, err
return nil, fmt.Errorf("usb: unknown endpoint %02x", epNum)
}
end := newEndpoint(d, *ifs, *ep)
end := newEndpoint(d.handle, *ifs, *ep, d.ReadTimeout, d.WriteTimeout)
// Set the configuration
activeConf, err := libusb.getConfig(d.handle)

View File

@@ -78,12 +78,12 @@ func (e *endpoint) transfer(buf []byte, timeout time.Duration) (int, error) {
return n, nil
}
func newEndpoint(d *Device, s InterfaceSetup, e EndpointInfo) *endpoint {
func newEndpoint(h *libusbDevHandle, s InterfaceSetup, e EndpointInfo, rt, wt time.Duration) *endpoint {
return &endpoint{
InterfaceSetup: s,
EndpointInfo: e,
h: d.handle,
readTimeout: d.ReadTimeout,
writeTimeout: d.WriteTimeout,
h: h,
readTimeout: rt,
writeTimeout: wt,
}
}

View File

@@ -17,6 +17,7 @@ package usb
import (
"reflect"
"testing"
"time"
)
func TestEndpoint(t *testing.T) {
@@ -61,10 +62,7 @@ func TestEndpoint(t *testing.T) {
} {
lib := newFakeLibusb()
libusb = lib
ep := &endpoint{
InterfaceSetup: epCfg.InterfaceSetup,
EndpointInfo: epCfg.EndpointInfo,
}
ep := newEndpoint(nil, epCfg.InterfaceSetup, epCfg.EndpointInfo, time.Second, time.Second)
op, ok := reflect.TypeOf(ep).MethodByName(epCfg.method)
if !ok {
t.Fatalf("method %s not found in endpoint struct", epCfg.method)