Update zedmon lib for new gousb.
Gousb now uses contexts for cancellation and timeouts.
Change-Id: I2c560abf76127d158fdb5eea1adcbb0193ed6321
diff --git a/lib/zedmon.go b/lib/zedmon.go
index 25e14e0..755aaf0 100644
--- a/lib/zedmon.go
+++ b/lib/zedmon.go
@@ -30,6 +30,7 @@
import (
"bytes"
+ "context"
"encoding/binary"
"fmt"
"log"
@@ -89,8 +90,10 @@
}
func (z *Zedmon) read() []byte {
+ ctx, done := context.WithTimeout(context.Background(), time.Second)
+ defer done()
buf := make([]byte, z.inEp.Desc.MaxPacketSize)
- len, err := z.readStream.Read(buf)
+ len, err := z.readStream.ReadContext(ctx, buf)
if err != nil {
log.Printf("Read stream error: %v", err)
return nil
@@ -104,8 +107,10 @@
// successive invocations. Repeating a get format report command until we
// get a response synchronizes them.
func (z *Zedmon) sync() {
- z.inEp.Timeout = time.Millisecond * 100
for {
+ ctx, done := context.WithTimeout(context.Background(), time.Millisecond*100)
+ defer done()
+
data := make([]byte, 2)
data[0] = 0x00
data[1] = 0x00
@@ -115,7 +120,7 @@
continue
}
buf := make([]byte, z.inEp.Desc.MaxPacketSize)
- _, err = z.inEp.Read(buf)
+ _, err = z.inEp.ReadContext(ctx, buf)
if err == nil {
break
}
@@ -390,7 +395,6 @@
zedmon.sync()
- zedmon.inEp.Timeout = time.Second * 1
zedmon.readStream, err = zedmon.inEp.NewStream(zedmon.inEp.Desc.MaxPacketSize, 100)
if err != nil {
zedmon.Close()