test

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_SecureHeartRate by Bluetooth Low Energy

Revision:
8:92120d9e3dbd
Parent:
7:e8dfe1c97c71
--- a/main.cpp	Tue Sep 29 12:05:32 2015 +0000
+++ b/main.cpp	Wed Oct 04 13:27:45 2017 +0000
@@ -16,17 +16,22 @@
 
 #include "mbed.h"
 #include "BLE.h"
-#include "HeartRateSecService.h"
+#include "ble/services/BatteryService.h"
 #include "DeviceInformationService.h"
+#include <string> 
 
 BLE        ble;
+AnalogIn ain(p2); 
 DigitalOut led1(LED1);
 
-const static char     DEVICE_NAME[]        = "HRM_SEC";
-static const uint16_t uuid16_list[]        = {GattService::UUID_HEART_RATE_SERVICE,
-                                              GattService::UUID_DEVICE_INFORMATION_SERVICE};
+const static char     DEVICE_NAME[]        = "Battery";
+static const uint16_t uuid16_list[]        = {GattService::UUID_BATTERY_SERVICE};
+uint8_t pass[6] = {'1', '1', '1', '1', '1', '1'};
+uint8_t  currentBattery  = 40;
 static volatile bool  triggerSensorPolling = false;
 
+static BatteryService *batteryServicePtr;
+
 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
 {
     printf("Disconnected!\r\n");
@@ -67,6 +72,36 @@
 
 int main(void)
 {
+    unsigned long dev1 = (unsigned long)NRF_FICR->DEVICEID[0];
+    printf("DeviceID_1: ");
+    printf("%lu", dev1);
+    unsigned long dev2 = (unsigned long)NRF_FICR->DEVICEID[1];
+    printf(" DeviceID_2: ");
+    printf("%lu\n", dev2);
+    unsigned long dev3 = (unsigned long)NRF_FICR->DEVICEADDR[0];
+    printf("DeviceAddress_1: ");
+    printf("%lu", dev3);
+    unsigned long dev4 = (unsigned long)NRF_FICR->DEVICEADDR[1];
+    printf(" DeviceAddress_2: ");
+    printf("%lu\n", dev4);
+    
+    unsigned long devaddr = dev1 + dev2 + dev3 + dev4;
+    printf("DeviceID: ");
+    printf("%lu\n", devaddr);
+       
+    for (int i = 0; i < 6; i++){
+        int k = devaddr % 10;
+        devaddr = devaddr / 10;
+        pass[5-i] = k + '0';
+    }
+    
+    printf("passKey: ");
+    for (unsigned i = 0; i < Gap::ADDR_LEN; i++) {
+        printf("%c ", pass[i]);
+    }
+    printf("\r\n");
+
+    
     led1 = 1;
     Ticker ticker;
     ticker.attach(periodicCallback, 1); // blink LED every second
@@ -77,7 +112,7 @@
     /* Initialize BLE security */
     bool enableBonding = true;
     bool requireMITM   = true;
-    ble.securityManager().init(enableBonding, requireMITM, SecurityManager::IO_CAPS_DISPLAY_ONLY);
+    ble.securityManager().init(enableBonding, requireMITM, SecurityManager::IO_CAPS_DISPLAY_ONLY, pass);
     
     /* Set callback functions */
     ble.gap().onConnection(connectionCallback);
@@ -85,9 +120,8 @@
     ble.securityManager().onPasskeyDisplay(passkeyDisplayCallback);
     ble.securityManager().onSecuritySetupCompleted(securitySetupCompletedCallback);
     
-    /* Setup primary service. */
-    uint8_t hrmCounter = 100; // init HRM to 100bps
-    HeartRateSecService hrService(ble, hrmCounter, HeartRateSecService::LOCATION_FINGER);
+    batteryServicePtr = new BatteryService(ble, currentBattery);
+
 
     /* Setup auxiliary service. */
     DeviceInformationService deviceInfo(ble, "ARM", "Model1", "SN1", "hw-rev1", "fw-rev1", "soft-rev1");
@@ -95,7 +129,7 @@
     /* 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::GENERIC_HEART_RATE_SENSOR);
+    //ble.gap().accumulateAdvertisingPayload(GapAdvertisingData::GENERIC_HEART_RATE_SENSOR);
     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);
@@ -108,17 +142,9 @@
         if (triggerSensorPolling && ble.getGapState().connected) {
             triggerSensorPolling = false;
 
-            // Do blocking calls or whatever is necessary for sensor polling.
-            // In our case, we simply update the HRM measurement. 
-            hrmCounter++;
+           currentBattery = ain.read()*100;
+            batteryServicePtr->updateBatteryLevel(currentBattery);
             
-            //  100 <= HRM bps <=175
-            if (hrmCounter == 175) {
-                hrmCounter = 100;
-            }
-            
-            // update bps
-            hrService.updateHeartRate(hrmCounter);
         } else {
             ble.waitForEvent(); // low power wait for event
         }