Andy Huntington / Mbed 2 deprecated BLE_HIH6130_tinkering

Dependencies:   BLE_API mbed nRF51822 HIH6130

Fork of BLE_HeartRate by Skarphedinn Sigurdsson

Files at this revision

API Documentation at this revision

Comitter:
andyhunti
Date:
Mon Oct 13 17:35:26 2014 +0000
Parent:
1:db1d0a0c334e
Commit message:
Updates to use custom long UUIDs.; Incrementing number proof of life.

Changed in this revision

HIH6130.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r db1d0a0c334e -r 58715fb81c43 HIH6130.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/HIH6130.lib	Mon Oct 13 17:35:26 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/spiridion/code/HIH6130/#ed5a906c8e44
diff -r db1d0a0c334e -r 58715fb81c43 main.cpp
--- a/main.cpp	Mon Oct 13 15:09:00 2014 +0000
+++ b/main.cpp	Mon Oct 13 17:35:26 2014 +0000
@@ -15,14 +15,18 @@
  */
 //test
 #include "mbed.h"
+#include "HIH6130.h"
 #include "BLEDevice.h"
 
 BLEDevice  ble;
 DigitalOut led1(LED1);
 
+#define PIN_SDA P0_22
+#define PIN_SCL P0_20
+
+
 #define NEED_CONSOLE_OUTPUT 1 /* 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__); }
@@ -34,16 +38,62 @@
 /* Service:  https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.heart_rate.xml */
 /* HRM Char: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml */
 /* Location: https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.body_sensor_location.xml */
-static uint8_t hrmCounter = 100;
-static uint8_t bpm[2] = {0x00, hrmCounter};
-GattCharacteristic hrmRate(GattCharacteristic::UUID_HEART_RATE_MEASUREMENT_CHAR, bpm, sizeof(bpm), sizeof(bpm),
-                           GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY);
-static const uint8_t location = 0x03; /* Finger */
-GattCharacteristic hrmLocation(GattCharacteristic::UUID_BODY_SENSOR_LOCATION_CHAR,
-                               (uint8_t *)&location, sizeof(location), sizeof(location),
-                               GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
-GattCharacteristic *hrmChars[] = {&hrmRate, &hrmLocation, };
-GattService        hrmService(GattService::UUID_HEART_RATE_SERVICE, hrmChars, sizeof(hrmChars) / sizeof(GattCharacteristic *));
+
+uint8_t theCurrTemp = 0xFF;
+uint8_t theMaxTemp = 0xCC;
+uint8_t theMinTemp = 0x00;
+uint8_t theAlarmTemp = 0x11;
+
+static uint8_t theCurrTempArr[20] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, theCurrTemp};
+static uint8_t theMaxTempArr[2] = {0x00, theMaxTemp};
+static uint8_t theMinTempArr[2] = {0x00, theMinTemp};
+static uint8_t theAlarmTempArr[2] = {0x00, theAlarmTemp};
+
+//GattCharacteristic hrmRate(GattCharacteristic::UUID_HEART_RATE_MEASUREMENT_CHAR, bpm, sizeof(bpm), sizeof(bpm),
+//                           GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY);
+//static const uint8_t location = 0x03; /* Finger */
+//GattCharacteristic hrmLocation(GattCharacteristic::UUID_BODY_SENSOR_LOCATION_CHAR,
+//                               (uint8_t *)&location, sizeof(location), sizeof(location),
+//                               GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
+//GattCharacteristic *hrmChars[] = {&hrmRate, &hrmLocation, };
+//GattService        hrmService(GattService::UUID_HEART_RATE_SERVICE, hrmChars, sizeof(hrmChars) / sizeof(GattCharacteristic *));
+const LongUUID_t service =
+{
+    // DEADF154-0000-0000-0000-0000DEADF154
+    0x54, 0xF1, 0xAD, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xf1, 0xAD, 0xDE
+};
+
+const LongUUID_t currTemp =
+{
+    // CCCCFFFF-DEAD-F154-1319-740381000000
+    0x00, 0x00, 0x00, 0x81, 0x03, 0x74, 0x19, 0x13, 0x54, 0xf1, 0xAD, 0xDE, 0xff, 0xff, 0xCC, 0xCC
+};
+const LongUUID_t minTemp =
+{
+    // C0C0C0C0-DEAD-F154-1319-740381000000
+    0x00, 0x00, 0x00, 0x81, 0x03, 0x74, 0x19, 0x13, 0x54, 0xf1, 0xAD, 0xDE, 0xC0, 0xC0, 0xC0, 0xC0
+};
+const LongUUID_t maxTemp =
+{
+    // EDEDEDED-DEAD-F154-1319-740381000000
+    0x00, 0x00, 0x00, 0x81, 0x03, 0x74, 0x19, 0x13, 0x54, 0xf1, 0xAD, 0xDE, 0xED, 0xED, 0xED, 0xED
+};
+const LongUUID_t alarmTemp =
+{
+    // AAAAAAAA-DEAD-F154-1319-740381000000
+    0x00, 0x00, 0x00, 0x81, 0x03, 0x74, 0x19, 0x13, 0x54, 0xf1, 0xAD, 0xDE, 0xAA, 0xAA, 0xAA, 0xAA
+};
+
+
+GattCharacteristic gattCurrTemp(currTemp, theCurrTempArr, sizeof(theCurrTempArr), sizeof(theCurrTempArr), GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY);
+GattCharacteristic gattMaxTemp(maxTemp, theMaxTempArr, sizeof(theMaxTempArr), sizeof(theMaxTempArr), GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY);
+GattCharacteristic gattMinTemp(minTemp, theMinTempArr, sizeof(theMinTempArr), sizeof(theMinTempArr), GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY);
+GattCharacteristic gattAlarm(alarmTemp, theAlarmTempArr, sizeof(theAlarmTempArr), sizeof(theAlarmTempArr), GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY);
+GattCharacteristic *tempChars[] = {&gattCurrTemp, &gattMaxTemp, &gattMinTemp, &gattAlarm };
+GattService deadFishService(service, tempChars, sizeof(tempChars)/sizeof(GattCharacteristic *));
+//hrmService(GattService::UUID_HEART_RATE_SERVICE, hrmChars, sizeof(hrmChars) / sizeof(GattCharacteristic *));
+
+HIH6130 hih6130(PIN_SDA, PIN_SCL);
 
 void disconnectionCallback(void)
 {
@@ -59,16 +109,24 @@
 {
     led1 = !led1; /* Do blinky on LED1 while we're waiting for BLE events */
 
+    float humidity, temperature;
+    hih6130.ReadData(&humidity, &temperature);
+    
     if (ble.getGapState().connected) {
         /* Update the HRM measurement */
         /* First byte = 8-bit values, no extra info, Second byte = uint8_t HRM value */
         /* See --> https://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.heart_rate_measurement.xml */
-        hrmCounter++;
-        if (hrmCounter == 175) {
-            hrmCounter = 100;
-        }
-        bpm[1] = hrmCounter;
-        ble.updateCharacteristicValue(hrmRate.getHandle(), bpm, sizeof(bpm));
+        //hrmCounter++;
+//        if (hrmCounter == 175) {
+//            hrmCounter = 100;
+//        }
+//        bpm[1] = hrmCounter;
+//        bpm[1] = 0xCC;
+//        bpm[1] = (uint8_t)temperature;
+//        DEBUG("cast temp to %d", bpm[1]);
+//        ble.updateCharacteristicValue(hrmRate.getHandle(), bpm, sizeof(bpm));
+        theCurrTempArr[1]++;
+        ble.updateCharacteristicValue(gattCurrTemp.getHandle(), theCurrTempArr, sizeof(theCurrTempArr));
     }
 }
 
@@ -76,7 +134,7 @@
 {
     led1 = 1;
     Ticker ticker;
-    ticker.attach(periodicCallback, 1);
+    ticker.attach(periodicCallback, 0.2);
 
     DEBUG("Initialising the nRF51822\n\r");
     ble.init();
@@ -88,8 +146,10 @@
     ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
     ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
     ble.startAdvertising();
+    DEBUG("Started Advertising\n\r");
 
-    ble.addService(hrmService);
+    ble.addService(deadFishService);
+    DEBUG("Added service");
 
     while (true) {
         ble.waitForEvent();