Change LSM6DS3 power mode using nRF51-DK BLE.

Dependencies:   BLE_API LSM6DS3 mbed nRF51822 nrf51_rtc

Revision:
3:a43f11f5378f
Parent:
2:874137e546ea
Child:
4:46dd8065e05b
--- a/main.cpp	Tue Jun 21 20:52:04 2016 +0000
+++ b/main.cpp	Wed Jun 22 22:32:58 2016 +0000
@@ -33,8 +33,13 @@
 #endif /* #if NEED_CONSOLE_OUTPUT */
 
 BLEDevice  ble;
-DigitalOut led1(LED1);
-DigitalOut led4(LED4);
+// Status lights
+DigitalOut ledAlive(LED1);
+DigitalOut ledIntrG(LED3);
+DigitalOut ledIntrO(LED4);
+// Interrupt pin connection
+InterruptIn intrGX(p14);    //INT1 (Gyro & Accel Interrupt)
+InterruptIn intrGXO(p13);   //INT2 (Gyro & Accel Data Ready)
 
 UARTService *uartServicePtr;
 
@@ -71,7 +76,8 @@
                                    imu.G_ODR_1660, imu.A_ODR_6660);
                 break;
             default:
-                DEBUG("Nothing happened\n\r");
+                DEBUG("Default power\n\r");
+                status = imu.begin();
                 break;
         }
                 
@@ -84,17 +90,31 @@
 
 void periodicCallback(void)
 {
-    led1 = !led1;
+    ledAlive = !ledAlive;
 }
 
 // Interrupt signal
-void flip() {
-    led4 = !led4;
+void flip(DigitalOut led) {
+    led = !led;
+}
+
+void flip3() {
+//    pc.printf(" ++++ Data Change Triggered!! ++++ \n\r");
+    flip(ledIntrO);
+}
+
+void flip4() {
+//    pc.printf(" ++++ G/X Triggered!! ++++ \n\r");
+    flip(ledIntrG);
 }
 
 int main(void)
 {
-    led1 = 1;
+    // turn all LED off
+    ledAlive = 1;
+    ledIntrG = 1;
+    ledIntrO = 1;
+    
     Ticker ticker;
     ticker.attach(periodicCallback, 1);
 
@@ -118,9 +138,16 @@
     UARTService uartService(ble);
     uartServicePtr = &uartService;
     
-    // setup baud rate and reset sensor
+    // setup baud rate
     pc.baud(115200);
-    led4 = 1; 
+    
+    // setup Interrupt mode
+    intrGXO.mode(PullUp);
+    intrGX.mode(PullUp);
+
+    // status light will be lit based on sensor/data change
+    intrGX.rise(&flip4);
+    intrGXO.rise(&flip3);
 
     while (true) {
         ble.waitForEvent();
@@ -131,12 +158,12 @@
         pc.printf("%2f,%2f,%2f\r\n", imu.gx,imu.gy,imu.gz);
         // no magnetometer available for this sensor
         pc.printf("0.000000,0.000000,0.000000\r\n");
-        imu.readIntr();
+        //imu.readIntr();
 //        pc.printf("intr: %f\r\n", imu.intr);
-        if(imu.intr > 0) {
+//        if(imu.intr > 0) {
 //            pc.printf(" == interrupted == \r\n");
-            flip();
-        }
+//            flip(LED2);
+//        }
         
         wait(1.0);
     }