updated submit interface and added data() method.
This commit is contained in:
@@ -20,7 +20,6 @@ import (
|
|||||||
"runtime"
|
"runtime"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
"unsafe"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type usbTransfer struct {
|
type usbTransfer struct {
|
||||||
@@ -48,8 +47,7 @@ func (t *usbTransfer) submit() error {
|
|||||||
return errors.New("transfer was already submitted and is not finished yet.")
|
return errors.New("transfer was already submitted and is not finished yet.")
|
||||||
}
|
}
|
||||||
t.done = make(chan struct{})
|
t.done = make(chan struct{})
|
||||||
t.xfer.user_data = (unsafe.Pointer)(&t.done)
|
if err := libusb.submit(t.xfer, t.done); err != nil {
|
||||||
if err := libusb.submit(t.xfer); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
t.submitted = true
|
t.submitted = true
|
||||||
@@ -73,13 +71,7 @@ func (t *usbTransfer) wait() (n int, err error) {
|
|||||||
case <-t.done:
|
case <-t.done:
|
||||||
}
|
}
|
||||||
t.submitted = false
|
t.submitted = false
|
||||||
var status TransferStatus
|
n, status := libusb.data(t.xfer)
|
||||||
switch TransferType(t.xfer._type) {
|
|
||||||
case TRANSFER_TYPE_ISOCHRONOUS:
|
|
||||||
n, status = libusb.compactIsoData(t.xfer)
|
|
||||||
default:
|
|
||||||
n, status = int(t.xfer.actual_length), TransferStatus(t.xfer.status)
|
|
||||||
}
|
|
||||||
if status != LIBUSB_TRANSFER_COMPLETED {
|
if status != LIBUSB_TRANSFER_COMPLETED {
|
||||||
return n, status
|
return n, status
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user