Implemented first Hangar-Service

Dependencies:   CalibrateMagneto QuaternionMath

Fork of SML2 by TobyRich GmbH

Revision:
5:b9f2f62a8f90
Parent:
4:e759b8c756da
Child:
6:c12cea26842d
--- a/Accelerometer.cpp	Fri Jan 23 13:00:46 2015 +0000
+++ b/Accelerometer.cpp	Thu Feb 12 17:17:35 2015 +0000
@@ -3,14 +3,25 @@
 #include "Logger.h"
 
 Accelerometer::Accelerometer(I2C &i2c) : I2CPeripheral(i2c, 0x18 << 1 /* address */) {
-    write_reg(0x14, 0xB6); // reset
-    wait_ms(2); // page 11 says only 1.3ms, nothing for startup time, so assuming 2ms
-    
+    powerOn();
     const uint8_t chip_id = read_reg(0x00);
     if (chip_id == 0xfa) {
-        INFO("Bosch Sensortec BMX055-Accel ready");
+        INFO("Bosch Sensortec BMX055-Accel found");
+        deepSuspend();
     } else {
         WARN("Bosch Sensortec BMX055-Accel not found (chip ID=0x%02x, expected=0x58)", chip_id);
     }
 }
 
+void Accelerometer::powerOn() {
+    write_reg(0x14, 0xB6); // reset
+    wait_ms(2); // page 11 says only 1.3ms, nothing for startup time, so assuming 2ms
+    write_reg(0x11, 0); // set power normal mode
+    write_reg(0x10, 8); // set bandwidth = 7.81 Hz
+    LOG("started");
+}
+
+void Accelerometer::deepSuspend() {
+    write_reg(0x11, 1); // deep suspend mode
+    LOG("stopped");
+}