From cce1943e349b1e5bd53b71aef8ea6844c43ed1e9 Mon Sep 17 00:00:00 2001 From: Karan Misra Date: Thu, 9 Jan 2014 00:56:44 +0530 Subject: [PATCH] l3gd20: reset the timer after reading gyro reading --- sensor/l3gd20/l3gd20.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/sensor/l3gd20/l3gd20.go b/sensor/l3gd20/l3gd20.go index ed95084..d7f3c1e 100644 --- a/sensor/l3gd20/l3gd20.go +++ b/sensor/l3gd20/l3gd20.go @@ -338,7 +338,11 @@ func (d *L3GD20) Start() (err error) { var orientations chan Orientation oldTime := time.Now() - timer := time.Tick(time.Duration(d.Poll) * time.Millisecond) + var timer <-chan time.Time + resetTimer := func() { + timer = time.After(time.Duration(d.Poll) * time.Millisecond) + } + resetTimer() for { select { @@ -355,6 +359,7 @@ func (d *L3GD20) Start() (err error) { orientations = d.orientations } oldTime = currTime + resetTimer() case orientations <- Orientation{x, y, z}: orientations = nil case waitc := <-d.closing: @@ -374,6 +379,7 @@ func (d *L3GD20) Stop() (err error) { waitc := make(chan struct{}) d.closing <- waitc <-waitc + d.closing = nil } if err = d.Bus.WriteByteToReg(address, ctrlReg1, ctrlReg1Finished); err != nil { return