gyro
diff --git a/src/sensors/ninedof.rs b/src/sensors/ninedof.rs index b5e7191..f5c0197 100644 --- a/src/sensors/ninedof.rs +++ b/src/sensors/ninedof.rs
@@ -47,6 +47,14 @@ Ok(res.res.get()) } + pub fn read_gyroscope(&mut self) -> TockResult<NinedofReading> { + let res: CbData = Default::default(); + subscribe(Self::cb, unsafe { mem::transmute(&res) })?; + start_gyroscope_reading()?; + unsafe { executor::block_on(futures::wait_until(|| res.ready.get())) }; + Ok(res.res.get()) + } + extern "C" fn cb(x: usize, y: usize, z: usize, ptr: usize) { let res: &CbData = unsafe { mem::transmute(ptr) }; res.res.set(NinedofReading { @@ -72,3 +80,8 @@ syscalls::command(DRIVER_NUM, 100, 0, 0)?; Ok(()) } + +pub fn start_gyroscope_reading() -> TockResult<()> { + syscalls::command(DRIVER_NUM, 200, 0, 0)?; + Ok(()) +}