BMP180 and BLE

Dependencies:   BLE_API mbed nRF51822

Fork of WeatherStation by Weather man

Revision:
2:654ee4b3950f
Parent:
1:f7fe82a00d4e
Child:
3:b6d2c5195055
--- a/main.cpp	Mon Nov 09 20:58:25 2015 +0000
+++ b/main.cpp	Mon Nov 09 23:09:16 2015 +0000
@@ -16,13 +16,19 @@
 
 #include "mbed.h"
 #include "BLE.h"
-#include "EnvironmentalService.h"
+#include "battery.h"
+#include "WeatherService.h"
+#include "BatteryService.h"
 
 BLE        ble;
 DigitalOut led1(LED1);
+AnalogIn   batteryPin(p1);
 
 const static char     DEVICE_NAME[]        = "Weather Station";
-static const uint16_t uuid16_list[]        = {GattService::UUID_ENVIRONMENTAL_SERVICE};
+static const uint16_t uuid16_list[] = {
+    GattService::UUID_ENVIRONMENTAL_SERVICE, 
+    GattService::UUID_BATTERY_SERVICE
+};
 static volatile bool  triggerSensorPolling = false;
 
 /* Restart Advertising on disconnection*/
@@ -33,7 +39,7 @@
 
 void blink(void)
 {
-    led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
+//    led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
     triggerSensorPolling = true;
 }
 
@@ -46,14 +52,16 @@
     ble.init();
     ble.gap().onDisconnection(disconnectionCallback);
 
-    /* Setup primary service. */
+    /* Setup weather service. */
     float currentTemperature = 42.22;
-    EnvironmentalService envService(ble);
+    WeatherService weatherService(ble);
+    BatteryService batteryService(ble, 0);
+    Battery battery(BATTERY_PIN);
 
     /* setup advertising */
     ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
     ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list));
-    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::THERMOMETER_EAR);
+    ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::UNKNOWN);
     ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
     ble.gap().setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
     ble.gap().setAdvertisingInterval(1000); /* 1000ms */
@@ -70,8 +78,11 @@
             // }
 
             /* In our case, we simply update the dummy temperature measurement. */
-//            currentTemperature += 0.1;
-            envService.updateTemperature(currentTemperature);
+            currentTemperature += 0.1;
+            weatherService.updateTemperature(currentTemperature);
+            weatherService.updatePressure(0);
+            weatherService.updateHumidity(0);
+            batteryService.updateBatteryLevel(battery.read());
         } else {
             ble.waitForEvent();
         }