Chanel's edits

Dependencies:   max32630fthr USBDevice

Committer:
saleiferis
Date:
Mon Feb 24 14:53:49 2020 +0000
Revision:
7:4debec043316
Parent:
6:2f1d4a9e201f
Child:
10:28b8729cf5dc
publish

Who changed what in which revision?

UserRevisionLine numberNew contents of line
saleiferis 7:4debec043316 1 //#include "HeartRateService.h"
saleiferis 7:4debec043316 2 #include "ECGService.h"
saleiferis 7:4debec043316 3
saleiferis 1:6e6f7e3cc1e1 4 extern MAX86150 max86150Sensor;
saleiferis 1:6e6f7e3cc1e1 5 extern Serial pc;
saleiferis 1:6e6f7e3cc1e1 6 const static char DEVICE_NAME[] = "Nordic_HRM";
saleiferis 1:6e6f7e3cc1e1 7 static const uint16_t uuid16_list[] = {GattService::UUID_HEART_RATE_SERVICE};
saleiferis 1:6e6f7e3cc1e1 8
saleiferis 7:4debec043316 9
saleiferis 7:4debec043316 10 static int32_t hrmCounter = 100; // init HRM to 100bps
saleiferis 7:4debec043316 11 //static HeartRateService *hrServicePtr;
saleiferis 7:4debec043316 12 static ECGService *hrServicePtr;
saleiferis 1:6e6f7e3cc1e1 13
saleiferis 1:6e6f7e3cc1e1 14 static EventQueue eventQueue(/* event count */ 16 * EVENTS_EVENT_SIZE);
saleiferis 1:6e6f7e3cc1e1 15
saleiferis 1:6e6f7e3cc1e1 16
saleiferis 4:4233f5538abf 17 void connectionCallback(const Gap::ConnectionCallbackParams_t *params)
saleiferis 4:4233f5538abf 18 {
saleiferis 4:4233f5538abf 19 pc.printf("Connected to BLE Client...\n");
saleiferis 4:4233f5538abf 20 }
saleiferis 4:4233f5538abf 21
saleiferis 1:6e6f7e3cc1e1 22 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
saleiferis 1:6e6f7e3cc1e1 23 {
saleiferis 1:6e6f7e3cc1e1 24 BLE::Instance().gap().startAdvertising(); // restart advertising
saleiferis 1:6e6f7e3cc1e1 25 }
saleiferis 1:6e6f7e3cc1e1 26
saleiferis 1:6e6f7e3cc1e1 27 void updateSensorValue() {
saleiferis 1:6e6f7e3cc1e1 28 // Do blocking calls or whatever is necessary for sensor polling.
saleiferis 1:6e6f7e3cc1e1 29 // In our case, we simply update the HRM measurement.
saleiferis 1:6e6f7e3cc1e1 30 /* hrmCounter++;
saleiferis 1:6e6f7e3cc1e1 31
saleiferis 1:6e6f7e3cc1e1 32 // 100 <= HRM bps <=175
saleiferis 1:6e6f7e3cc1e1 33 if (hrmCounter == 175) {
saleiferis 1:6e6f7e3cc1e1 34 hrmCounter = 100;
saleiferis 1:6e6f7e3cc1e1 35 }*/
saleiferis 2:a96a53e6c6a3 36 //pc.printf("Inside update sensor value \n");
saleiferis 1:6e6f7e3cc1e1 37 if(max86150Sensor.check()>0)
saleiferis 1:6e6f7e3cc1e1 38 {
saleiferis 4:4233f5538abf 39 hrServicePtr->updateHeartRate((uint16_t)max86150Sensor.getFIFOECG());
saleiferis 1:6e6f7e3cc1e1 40 return;
saleiferis 1:6e6f7e3cc1e1 41 }
saleiferis 2:a96a53e6c6a3 42 //hrmCounter = 133;
saleiferis 2:a96a53e6c6a3 43 //hrServicePtr->updateHeartRate(hrmCounter);
saleiferis 1:6e6f7e3cc1e1 44 }
saleiferis 1:6e6f7e3cc1e1 45
saleiferis 1:6e6f7e3cc1e1 46 void periodicCallback(void)
saleiferis 1:6e6f7e3cc1e1 47 {
saleiferis 1:6e6f7e3cc1e1 48
saleiferis 1:6e6f7e3cc1e1 49 if (BLE::Instance().getGapState().connected) {
saleiferis 1:6e6f7e3cc1e1 50 eventQueue.call(updateSensorValue);
saleiferis 1:6e6f7e3cc1e1 51 }
saleiferis 1:6e6f7e3cc1e1 52 }
saleiferis 1:6e6f7e3cc1e1 53
saleiferis 1:6e6f7e3cc1e1 54 void onBleInitError(BLE &ble, ble_error_t error)
saleiferis 1:6e6f7e3cc1e1 55 {
saleiferis 1:6e6f7e3cc1e1 56 (void)ble;
saleiferis 1:6e6f7e3cc1e1 57 (void)error;
saleiferis 1:6e6f7e3cc1e1 58 /* Initialization error handling should go here */
saleiferis 1:6e6f7e3cc1e1 59 }
saleiferis 1:6e6f7e3cc1e1 60
saleiferis 1:6e6f7e3cc1e1 61 void bleInitComplete(BLE::InitializationCompleteCallbackContext *params)
saleiferis 1:6e6f7e3cc1e1 62 {
saleiferis 1:6e6f7e3cc1e1 63 pc.printf("In bleInitComplete() ...\n");
saleiferis 1:6e6f7e3cc1e1 64 BLE& ble = params->ble;
saleiferis 1:6e6f7e3cc1e1 65 ble_error_t error = params->error;
saleiferis 1:6e6f7e3cc1e1 66
saleiferis 1:6e6f7e3cc1e1 67 if (error != BLE_ERROR_NONE) {
saleiferis 4:4233f5538abf 68 pc.printf("In ERROR if ...\n");
saleiferis 1:6e6f7e3cc1e1 69 onBleInitError(ble, error);
saleiferis 1:6e6f7e3cc1e1 70 return;
saleiferis 1:6e6f7e3cc1e1 71 }
saleiferis 1:6e6f7e3cc1e1 72
saleiferis 1:6e6f7e3cc1e1 73 if (ble.getInstanceID() != BLE::DEFAULT_INSTANCE) {
saleiferis 4:4233f5538abf 74 pc.printf("In InstanceID ERROR if ...\n");
saleiferis 1:6e6f7e3cc1e1 75 return;
saleiferis 1:6e6f7e3cc1e1 76 }
saleiferis 1:6e6f7e3cc1e1 77
saleiferis 1:6e6f7e3cc1e1 78 ble.gap().onDisconnection(disconnectionCallback);
saleiferis 4:4233f5538abf 79 ble.gap().onConnection(connectionCallback);
saleiferis 4:4233f5538abf 80 pc.printf("Set connection/disconnection callbacks ...\n");
saleiferis 1:6e6f7e3cc1e1 81
saleiferis 1:6e6f7e3cc1e1 82 /* Setup primary service. */
saleiferis 7:4debec043316 83 //hrServicePtr = new HeartRateService(ble, hrmCounter, HeartRateService::LOCATION_FINGER);
saleiferis 7:4debec043316 84 hrServicePtr = new ECGService(ble, hrmCounter);
saleiferis 5:30495ab95b86 85
saleiferis 4:4233f5538abf 86 pc.printf("Setup primary service ...\n");
saleiferis 1:6e6f7e3cc1e1 87
saleiferis 1:6e6f7e3cc1e1 88 /* Setup advertising. */
saleiferis 1:6e6f7e3cc1e1 89 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
saleiferis 1:6e6f7e3cc1e1 90 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list));
saleiferis 1:6e6f7e3cc1e1 91 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::GENERIC_HEART_RATE_SENSOR);
saleiferis 1:6e6f7e3cc1e1 92 ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
saleiferis 4:4233f5538abf 93 pc.printf("Accumulate asvertising payload done ...\n");
saleiferis 1:6e6f7e3cc1e1 94 ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
saleiferis 1:6e6f7e3cc1e1 95 ble.gap().setAdvertisingInterval(1000); /* 1000ms */
saleiferis 4:4233f5538abf 96 pc.printf("Before startAdvertising() ...\n");
saleiferis 1:6e6f7e3cc1e1 97 ble.gap().startAdvertising();
saleiferis 4:4233f5538abf 98 pc.printf("After startAdvertising() ...\n");
saleiferis 4:4233f5538abf 99 pc.printf("Exiting bleInitComplete() ... \n");
saleiferis 4:4233f5538abf 100 return;
saleiferis 4:4233f5538abf 101 }
saleiferis 4:4233f5538abf 102
saleiferis 1:6e6f7e3cc1e1 103
saleiferis 1:6e6f7e3cc1e1 104 void scheduleBleEventsProcessing(BLE::OnEventsToProcessCallbackContext* context) {
saleiferis 1:6e6f7e3cc1e1 105 BLE &ble = BLE::Instance();
saleiferis 1:6e6f7e3cc1e1 106 eventQueue.call(Callback<void()>(&ble, &BLE::processEvents));
saleiferis 1:6e6f7e3cc1e1 107 }