Dreamforce 2015 BLE-based mDS HeartRate Monitor Endpoint
Dependencies: GroveEarbudSensor mbed mbedConnectorInterface mbedEndpointNetwork_BLE
Diff: mbedEndpointResources/LocationResource.h
- Revision:
- 53:d22af3b91e4c
- Parent:
- 47:5e57fdac6765
diff -r bd3177c6d7fd -r d22af3b91e4c mbedEndpointResources/LocationResource.h --- a/mbedEndpointResources/LocationResource.h Sat Sep 05 20:51:19 2015 +0000 +++ b/mbedEndpointResources/LocationResource.h Mon Sep 07 04:52:10 2015 +0000 @@ -26,13 +26,23 @@ // Base class #include "DynamicResource.h" -// our Location source -#include "BLELocation.h" -extern RawSerial pc; // main.cpp -BLELocation _ble_location(&pc); // BLE Location from the UART Proxy application +// main.cpp can enable/disable the experimental location source +#if ENABLE_BLE_LOCATION + // our BLE Location source + #include "BLELocation.h" + extern RawSerial pc; // main.cpp + BLELocation _ble_location(&pc); // BLE Location from the UART Proxy application +#endif + +// We have a static location by default - Moscone West - 37.783879,-122.4012538, altitude 30m msl +#define DEF_LATITUDE 37.783879 +#define DEF_LONGITUDE -122.4012538 +#define DEF_ALTITUDE 30.0 +#define DEF_SPEED 0.0 // Maximum Location JSON Length : {"latitude":XXX.YYYYYY, "longitude":XXX.YYYYYY, "msl":XXXXXX, "speed":XXXXXX} #define LOCATION_JSON_LENGTH 256 +char __location_json[LOCATION_JSON_LENGTH+1]; /** LocationResource class */ @@ -46,6 +56,10 @@ @param observable input the resource is Observable (default: FALSE) */ LocationResource(const Logger *logger,const char *name,const bool observable = false) : DynamicResource(logger,name,"Location",SN_GRS_GET_ALLOWED,observable) { + memset(__location_json,0,LOCATION_JSON_LENGTH+1); +#if ENABLE_BLE_LOCATION + _ble_location.setDefault(DEF_LATITUDE,DEF_LONGITUDE,DEF_ALTITUDE,DEF_SPEED); +#endif } /** @@ -53,15 +67,22 @@ @returns string containing the location value */ virtual string get() { - _ble_location.updateLocation(); - char json[LOCATION_JSON_LENGTH+1]; - memset(json,0,LOCATION_JSON_LENGTH+1); - sprintf(json,"{\"latitude\":%s,\"longitude\":%s,\"msl\":%s,\"speed\":%s}", + //_ble_location.updateLocation(); + memset(__location_json,0,LOCATION_JSON_LENGTH); +#if ENABLE_BLE_LOCATION + sprintf(__location_json,"{\"latitude\":%s,\"longitude\":%s,\"msl\":%s,\"speed\":%s,\"src\":\"proxy\"}", _ble_location.getLatitude(), _ble_location.getLongitude(), _ble_location.getMSLAltitude(), // in meters _ble_location.getSpeed()); // in meters/second - return string(json); +#else + sprintf(__location_json,"{\"latitude\":%.6f,\"longitude\":%.6f,\"msl\":%.1f,\"speed\":%.1f,\"src\":\"static\"}", + DEF_LATITUDE, + DEF_LONGITUDE, + DEF_ALTITUDE, // in meters + DEF_SPEED); // in meters/second +#endif + return string(__location_json); } };