heart rate monitor
Dependencies: BLE_API GroveEarbudSensor mbed nRF51822
Fork of BLE_HeartRate by
Diff: main.cpp
- 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