@@ 152,17 152,8 @@ func (d *FastbootDevice) sendCommand(ctx *gousb.Context, cmd string) (resp fastb
}
defer done()
- // Open an IN endpoint
- epIn, err := intf.InEndpoint(d.inEdpAddr)
+ epIn, epOut, err := d.openIOEndpoints(intf)
if err != nil {
- err = fmt.Errorf("failure initializing IN endpoint: %w", err)
- return
- }
-
- // Open an OUT endpoint
- epOut, err := intf.OutEndpoint(d.outEdpAddr)
- if err != nil {
- err = fmt.Errorf("failure initializing OUT endpoint %w", err)
return
}
@@ 287,17 278,8 @@ func (d *FastbootDevice) sendData(ctx *gousb.Context, source io.Reader, size int
}
defer done()
- // Open an IN endpoint
- epIn, err := intf.InEndpoint(d.inEdpAddr)
+ epIn, epOut, err := d.openIOEndpoints(intf)
if err != nil {
- err = fmt.Errorf("failure initializing IN endpoint: %w", err)
- return
- }
-
- // Open an OUT endpoint
- epOut, err := intf.OutEndpoint(d.outEdpAddr)
- if err != nil {
- err = fmt.Errorf("failure initializing OUT endpoint %w", err)
return
}
@@ 313,6 295,25 @@ func (d *FastbootDevice) sendData(ctx *gousb.Context, source io.Reader, size int
return fmt.Errorf("jankboot.Flash(): client sent invalid response when sending data: %q", resp)
}
return
+
+}
+
+func (d *FastbootDevice) openIOEndpoints(intf *gousb.Interface) (epIn *gousb.InEndpoint, epOut *gousb.OutEndpoint, err error) {
+ // Open an IN endpoint
+ epIn, err = intf.InEndpoint(d.inEdpAddr)
+ if err != nil {
+ err = fmt.Errorf("jankboot.openIOEndpoints(): failure initializing IN endpoint: %w", err)
+ return
+ }
+
+ // Open an OUT endpoint
+ epOut, err = intf.OutEndpoint(d.outEdpAddr)
+ if err != nil {
+ err = fmt.Errorf("jankboot.openIOEndpoints(): failure initializing OUT endpoint %w", err)
+ return
+ }
+
+ return
}
// getResponse parses the response from the client into a fastbootResponse type