Sample BLE thermometer profile for nRF51-DK with sensing from LM35

Dependencies:   BLE_API mbed nRF51822 X_NUCLEO_IDB0XA1

Fork of BLE_Thermometer by Bluetooth Low Energy

Revision:
8:63addc0221e7
Parent:
4:83c07b0e93d6
Child:
10:9a7e23066427
--- a/main.cpp	Tue Dec 09 09:07:37 2014 +0000
+++ b/main.cpp	Tue Dec 09 22:23:42 2014 +0000
@@ -17,49 +17,25 @@
 #include "mbed.h"
 #include "BLEDevice.h"
 #include "HealthThermometerService.h"
-#include "DHT.h"
 
 BLEDevice  ble;
 DigitalOut led1(LED1);
-DHT        sensor(D10, DHT11);
-
-#define NEED_CONSOLE_OUTPUT 0 /* Set this if you need debug messages on the console;
-                               * it will have an impact on code-size and power consumption. */
-
-#if NEED_CONSOLE_OUTPUT
-Serial  pc(USBTX, USBRX);
-#define DEBUG(...) { pc.printf(__VA_ARGS__); }
-#else
-#define DEBUG(...) /* nothing */
-#endif /* #if NEED_CONSOLE_OUTPUT */
 
 const static char     DEVICE_NAME[]        = "Therm";
 static const uint16_t uuid16_list[]        = {GattService::UUID_HEALTH_THERMOMETER_SERVICE};
 static volatile bool  triggerSensorPolling = false;
 
+/* Restart Advertising on disconnection*/
 void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
 {
-    DEBUG("Disconnected handle %u!\n\r", handle);
-    DEBUG("Restarting the advertising process\n\r");
     ble.startAdvertising();
 }
 
-void periodicCallback(void)
-{
-    led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
-
-    /* Note that the periodicCallback() executes in interrupt context, so it is safer to do
-     * heavy-weight sensor polling from the main thread. */
-    triggerSensorPolling = true;
-}
-
 int main(void)
 {
     led1 = 1;
-    Ticker ticker;
-    ticker.attach(periodicCallback, 1);
-
-    DEBUG("Initialising the nRF51822\n\r");
+    
+    /* Initialize BLE baselayer*/
     ble.init();
     ble.onDisconnection(disconnectionCallback);
 
@@ -70,27 +46,18 @@
     ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
     ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
     ble.setAdvertisingInterval(1600); /* 1000ms; in multiples of 0.625ms. */
-    ble.startAdvertising();
 
+    /* setup Thermometer*/
     float initialTemperature = 39.6;
     HealthThermometerService thermometerService(ble, initialTemperature, HealthThermometerService::LOCATION_EAR);
 
-    int error = 0;
-    float c = 0.0f;
-
-    while (true) {
-        if (triggerSensorPolling) {
-            triggerSensorPolling = false;
+    /* Start Advertising*/
+    ble.startAdvertising();
 
-            /* Do blocking calls or whatever is necessary for sensor polling. */
-            /* In our case, we simply update the dummy HRM measurement. */
-            error = sensor.readData();
-            if (!error) {
-                c = sensor.ReadTemperature(CELCIUS);
-                thermometerService.updateTemperature(c);
-            }
-        } else {
-            ble.waitForEvent();
-        }
+    /* incriment temperature by 1 degree every second*/
+    while (true) {
+        thermometerService.updateTemperature((initialTemperature++));
+        wait(2);
+        led1 = !led1; /* Flash LED*/
     }
 }