From 7e79d05d9eee479664f7b5819a1f788ea12e039e Mon Sep 17 00:00:00 2001 From: Burcu Dogan Date: Wed, 2 Sep 2015 22:39:10 -0700 Subject: [PATCH] exp/sensor: set sensor interval on ios Change-Id: I5559f721b2e2c7506db89f804569c0b0f78abea8 Reviewed-on: https://go-review.googlesource.com/14251 Reviewed-by: Nigel Tao --- exp/sensor/darwin_armx.go | 6 +++--- exp/sensor/darwin_armx.m | 3 ++- exp/sensor/sensor.go | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/exp/sensor/darwin_armx.go b/exp/sensor/darwin_armx.go index ac15f05..c5299a5 100644 --- a/exp/sensor/darwin_armx.go +++ b/exp/sensor/darwin_armx.go @@ -15,12 +15,11 @@ package sensor void GoIOS_createManager(); -void GoIOS_startAccelerometer(); +void GoIOS_startAccelerometer(float interval); void GoIOS_stopAccelerometer(); void GoIOS_readAccelerometer(int64_t* timestamp, float* vector); void GoIOS_destroyManager(); - */ import "C" import ( @@ -55,7 +54,8 @@ func (m *manager) enable(s Sender, t Type, delay time.Duration) error { return fmt.Errorf("sensor: cannot enable; %v sensor is already enabled", t) } // TODO(jbd): Check if accelerometer is available. - C.GoIOS_startAccelerometer() + interval := float64(delay) / float64(time.Second) + C.GoIOS_startAccelerometer(C.float(interval)) channels.acceleroDone = make(chan struct{}) go m.runAccelerometer(s, delay, channels.acceleroDone) case Gyroscope: diff --git a/exp/sensor/darwin_armx.m b/exp/sensor/darwin_armx.m index 3c5be36..654e6ae 100644 --- a/exp/sensor/darwin_armx.m +++ b/exp/sensor/darwin_armx.m @@ -13,7 +13,8 @@ void GoIOS_createManager() { manager = [[CMMotionManager alloc] init]; } -void GoIOS_startAccelerometer() { +void GoIOS_startAccelerometer(float interval) { + manager.accelerometerUpdateInterval = interval; [manager startAccelerometerUpdates]; } diff --git a/exp/sensor/sensor.go b/exp/sensor/sensor.go index 1cd91ec..90ec7ed 100644 --- a/exp/sensor/sensor.go +++ b/exp/sensor/sensor.go @@ -76,6 +76,7 @@ var m = newManager() // Enable enables the specified sensor type with the given delay rate. // Sensor events will be sent to s, a typical example of Sender // implementations is app.App. +// Enable is not safe for concurrent use. func Enable(s Sender, t Type, delay time.Duration) error { if t < 0 || int(t) >= len(sensorNames) { return errors.New("sensor: unknown sensor type") @@ -84,6 +85,7 @@ func Enable(s Sender, t Type, delay time.Duration) error { } // Disable disables to feed the manager with the specified sensor. +// Disable is not safe for concurrent use. func Disable(t Type) error { if t < 0 || int(t) >= len(sensorNames) { return errors.New("sensor: unknown sensor type")