Dreamforce 2015 BLE-based mDS HeartRate Monitor Endpoint

Dependencies:   GroveEarbudSensor mbed mbedConnectorInterface mbedEndpointNetwork_BLE

Revision:
53:d22af3b91e4c
Parent:
47:5e57fdac6765
--- 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);
     }
 };