heart rate monitor

Dependencies:   BLE_API GroveEarbudSensor mbed nRF51822

Fork of BLE_HeartRate by Bluetooth Low Energy

Revision:
72:cc9b1d195d9f
Parent:
71:c86b4658af70
Child:
73:32250c7c8e68
--- a/main.cpp	Sat Aug 29 17:49:14 2015 +0000
+++ b/main.cpp	Sat Aug 29 18:44:12 2015 +0000
@@ -30,10 +30,19 @@
 static const uint16_t uuid16_list[]        = {GattService::UUID_HEART_RATE_SERVICE,
                                               GattService::UUID_DEVICE_INFORMATION_SERVICE};
 static volatile bool  triggerSensorPolling = false;
+   /* Setup primary service. */
+    uint8_t hrmCounter = 100; // init HRM to 100bps
+
 
 // callback for receiving heartrate values
 void heartrateCallback(float heartrate,void *data) {
     printf("Callback: heartrate = %.1f\r\n",heartrate);
+                // we can also call directly 
+            hrmCounter=heartrate;
+    
+
+            // update bps
+            //hrService.updateHeartRate(hrmCounter);  
 }
 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
 {
@@ -58,9 +67,7 @@
     ble.init();
     ble.gap().onDisconnection(disconnectionCallback);
 
-    /* Setup primary service. */
-    uint8_t hrmCounter = 100; // init HRM to 100bps
-   
+    
     HeartRateService hrService(ble, hrmCounter, HeartRateService::LOCATION_FINGER);
 
     /* Setup auxiliary service. */
@@ -74,7 +81,17 @@
     ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
     ble.gap().setAdvertisingInterval(1000); /* 1000ms */
     ble.gap().startAdvertising();
+                // announce
+            printf("Grove Earbud Sensor - Montoring Heart Rate\r\n");
 
+            // allocate the earbud sensor
+             printf("Allocating earbud sensor instance...\r\n");
+             GroveEarbudSensor earbud(&sensor); 
+    
+            // register our callback function
+             printf("registering callback...\r\n");
+            earbud.registerCallback(heartrateCallback);
+ 
     // infinite loop
     while (1) {
         // check for trigger from periodicCallback()
@@ -89,31 +106,10 @@
             /*if (hrmCounter == 175) {
                 hrmCounter = 100;
             }*/
-            // announce
-            printf("Grove Earbud Sensor - Montoring Heart Rate\r\n");
-    
-             // allocate the earbud sensor
-             printf("Allocating earbud sensor instance...\r\n");
-             GroveEarbudSensor earbud(&sensor); 
-    
-            // register our callback function
-             printf("registering callback...\r\n");
-            earbud.registerCallback(heartrateCallback);
-    
-            /* begin main loop
-            printf("Beginning main loop...\r\n");
-             while (true) {
+
             // blink... 
             led1 = !led1; 
-             wait(0.5);*/
-        
-             // we can also call directly 
-             printf("Direct: heartrate = %.1f\r\n", earbud.getHeartRate());
-            hrmCounter=earbud.getHeartRate();
-    
-
-            // update bps
-            //hrService.updateHeartRate(hrmCounter);  
+             wait(0.5);
             hrService.updateHeartRate(hrmCounter);
         } else {
             ble.waitForEvent(); // low power wait for event