updated submit interface and added data() method.

This commit is contained in:
Sebastian Zagrodzki
2017-02-26 21:13:31 +01:00
parent 9eebb871cb
commit 8addfb562f

View File

@@ -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
} }