Dreamforce 2015 BLE-based mDS HeartRate Monitor Endpoint

Dependencies:   GroveEarbudSensor mbed mbedConnectorInterface mbedEndpointNetwork_BLE

Committer:
ansond
Date:
Wed Mar 11 20:27:40 2015 +0000
Revision:
1:3ad5d55e1cc7
Parent:
0:6b414fe5f8db
Child:
2:9d7c4bad311e
updates

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ansond 0:6b414fe5f8db 1 /**
ansond 0:6b414fe5f8db 2 * @file HeartrateResource.h
ansond 0:6b414fe5f8db 3 * @brief mbed CoAP Endpoint Heartrate resource (Grove Earbud) supporting CoAP GET and PUT
ansond 0:6b414fe5f8db 4 * @author Doug Anson
ansond 0:6b414fe5f8db 5 * @version 1.0
ansond 0:6b414fe5f8db 6 * @see
ansond 0:6b414fe5f8db 7 *
ansond 0:6b414fe5f8db 8 * Copyright (c) 2014
ansond 0:6b414fe5f8db 9 *
ansond 0:6b414fe5f8db 10 * Licensed under the Apache License, Version 2.0 (the "License");
ansond 0:6b414fe5f8db 11 * you may not use this file except in compliance with the License.
ansond 0:6b414fe5f8db 12 * You may obtain a copy of the License at
ansond 0:6b414fe5f8db 13 *
ansond 0:6b414fe5f8db 14 * http://www.apache.org/licenses/LICENSE-2.0
ansond 0:6b414fe5f8db 15 *
ansond 0:6b414fe5f8db 16 * Unless required by applicable law or agreed to in writing, software
ansond 0:6b414fe5f8db 17 * distributed under the License is distributed on an "AS IS" BASIS,
ansond 0:6b414fe5f8db 18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ansond 0:6b414fe5f8db 19 * See the License for the specific language governing permissions and
ansond 0:6b414fe5f8db 20 * limitations under the License.
ansond 0:6b414fe5f8db 21 */
ansond 0:6b414fe5f8db 22
ansond 0:6b414fe5f8db 23 #ifndef __HEARTRATE_RESOURCE_H__
ansond 0:6b414fe5f8db 24 #define __HEARTRATE_RESOURCE_H__
ansond 0:6b414fe5f8db 25
ansond 0:6b414fe5f8db 26 // Base class
ansond 0:6b414fe5f8db 27 #include "DynamicResource.h"
ansond 0:6b414fe5f8db 28
ansond 0:6b414fe5f8db 29 // Grove Earbud Sensor
ansond 0:6b414fe5f8db 30 #include "GroveEarbudSensor.h"
ansond 1:3ad5d55e1cc7 31 extern RawSerial pc; // declared in main.cpp for logger... just reference here...
ansond 1:3ad5d55e1cc7 32 GroveEarbudSensor __earbud(P0_15,&pc); // Nordic Board PINS: DK - D2, Dongle - P0_15, mkit - P0
ansond 0:6b414fe5f8db 33
ansond 0:6b414fe5f8db 34 // HRM sensor value
ansond 0:6b414fe5f8db 35 string __hrm = string("<off>");
ansond 0:6b414fe5f8db 36
ansond 0:6b414fe5f8db 37 // Heartrate callback (Earbud)
ansond 0:6b414fe5f8db 38 void __hrm_callback(float heartrate,void *data) {
ansond 0:6b414fe5f8db 39 char buf[10];
ansond 0:6b414fe5f8db 40 memset(buf,0,10);
ansond 0:6b414fe5f8db 41 sprintf(buf,"%.1f",heartrate);
ansond 0:6b414fe5f8db 42 __hrm = string(buf);
ansond 0:6b414fe5f8db 43
ansond 0:6b414fe5f8db 44 // DEBUG
ansond 0:6b414fe5f8db 45 pc.printf("HRM: %s\r\n",__hrm.c_str());
ansond 0:6b414fe5f8db 46 }
ansond 0:6b414fe5f8db 47
ansond 0:6b414fe5f8db 48 /** HeartrateResource class
ansond 0:6b414fe5f8db 49 */
ansond 0:6b414fe5f8db 50 class HeartrateResource : public DynamicResource
ansond 0:6b414fe5f8db 51 {
ansond 0:6b414fe5f8db 52
ansond 0:6b414fe5f8db 53 public:
ansond 0:6b414fe5f8db 54 /**
ansond 0:6b414fe5f8db 55 Default constructor
ansond 0:6b414fe5f8db 56 @param logger input logger instance for this resource
ansond 0:6b414fe5f8db 57 @param name input the Light resource name
ansond 0:6b414fe5f8db 58 @param observable input the resource is Observable (default: FALSE)
ansond 0:6b414fe5f8db 59 */
ansond 0:6b414fe5f8db 60 HeartrateResource(const Logger *logger,const char *name,const bool observable = false) : DynamicResource(logger,name,"Heartrate",SN_GRS_GET_ALLOWED,observable) {
ansond 0:6b414fe5f8db 61 // finish setup of the earbud sensor
ansond 0:6b414fe5f8db 62 __earbud.registerCallback(__hrm_callback);
ansond 0:6b414fe5f8db 63 }
ansond 0:6b414fe5f8db 64
ansond 0:6b414fe5f8db 65 /**
ansond 0:6b414fe5f8db 66 Get the value of the Heartrate sensor
ansond 0:6b414fe5f8db 67 @returns string containing the heartrate in bpm
ansond 0:6b414fe5f8db 68 */
ansond 0:6b414fe5f8db 69 virtual string get() {
ansond 0:6b414fe5f8db 70 return __hrm;
ansond 0:6b414fe5f8db 71 }
ansond 0:6b414fe5f8db 72 };
ansond 0:6b414fe5f8db 73
ansond 0:6b414fe5f8db 74 #endif // __HEARTRATE_RESOURCE_H__