L0_BlueNRG_Test_Client

Dependencies:   BLE_API BLE_BlueNRG mbed

Fork of L0_BlueNRG_Test by Mridupawan Das

Revision:
4:17e1861df93f
Parent:
2:cf54be3a9e6a
diff -r ab24e6c72ae3 -r 17e1861df93f main.cpp
--- a/main.cpp	Thu Aug 28 05:58:36 2014 +0000
+++ b/main.cpp	Thu Nov 20 09:12:32 2014 +0000
@@ -1,180 +1,57 @@
 #include "mbed.h"
 
-DigitalOut myled(LED1);
 
 #include "debug.h"
 #include "btle.h"
-//#include "BlueNRGDevice.h"//User does not use any platform specific header file
-#include "BLEDevice.h"
-#include "UUID.h"
-#include "Utils.h"
-
-BLEDevice dev;
- 
-const static char  DEVICE_NAME[] = "STBLUE_NRG";
-const uint8_t device_address[6] = { 0x12, 0x34, 0x00, 0xe1, 0x80, 0x02 }; //Peripheral address
-
-void Append128bitUUID(uint8_t *uuid128_list, const LongUUID_t HRM_SERVICE_UUID_128);
-void print_array(uint8_t *array);
-
-/*********128 bit UUIDs. Not defined in GattCharacteristic.h and GattService.h*************/
+#include "BlueNRG_Master.h"
 
 
-#define MAX_SERVICES_NOS 1                                                                                                                                       
-//typedef uint8_t UUID_128_BIT[16]; 
-const LongUUID_t HEART_RATE_CHAR_UUID_128 = {0x42,0x82,0x1a,0x40, 0xe4,0x77, 0x11,0xe2, 0x82,0xd0, 0x00,0x02,0xa5,0xd5,0xc5,0x1a};
-const LongUUID_t HRM_SERVICE_UUID_128 = {0x42,0x82,0x1a,0x40, 0xe4,0x77, 0x11,0xe2, 0x82,0xd0, 0x00,0x02,0xa5,0xd5,0xc5,0x1b};
-
-uint8_t UUID_Count=0;
-
-static uint8_t hrmCounter = 100;
-static uint8_t bpm[2] = {0x00, hrmCounter};
-static uint8_t hcpCounter = 99;
-static uint8_t hcp[2] = {0x00, hrmCounter};
-
-GattCharacteristic hrmRate(GattCharacteristic::UUID_HEART_RATE_MEASUREMENT_CHAR, bpm, sizeof(bpm), sizeof(bpm), 
-                            GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY|GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ
-                            /*GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE*/);
-
-GattCharacteristic hcpControlPoint(GattCharacteristic::UUID_HEART_RATE_CONTROL_POINT_CHAR, hcp, sizeof(hcp), sizeof(hcp), 
-                            GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE|
-                            GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE|GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);                            
+extern Serial  pc;
+DigitalOut myled(LED1);
+#define BDADDR_SIZE 6
 
-GattCharacteristic *hrmChars[] = {&hrmRate, &hcpControlPoint };
-UUID HRMSERVICE(GattService::UUID_HEART_RATE_SERVICE);
-GattService hrmService(HRMSERVICE/*GattService::UUID_HEART_RATE_SERVICE*/, hrmChars, sizeof(hrmChars) / sizeof(GattCharacteristic *));
+//BlueNRG_Master dev;
 
-uint8_t uuid128_list[16*MAX_SERVICES_NOS];// = {HRM_SERVICE_UUID_128[0], HRM_SERVICE_UUID_128[1]};
-static const uint16_t uuid16_list[] = {GattService::UUID_HEART_RATE_SERVICE};
-    
-void disconnectionCallback(uint16_t Handle_t)
-{
-    DEBUG("Disconnected!\n\r");
-    DEBUG("Restarting the advertising process\n\r");
-    dev.startAdvertising();
-}
-
-void onWriteCallback(uint16_t attributeHandle) {
-    DEBUG("Write Callback!!\n\r");
-    }
-    
-void onConnectionCallback(uint16_t Handle_t) {
-    //myled = 1; // LED is ON
-    DEBUG("Connected BlueNRG!!\n\r");
-    }
+uint8_t BlueNRG_Master::bdaddr[6]= { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+BlueNRG_Master dev;
 
 
-void onNotifyEnabled(uint16_t charHandle) {
-    //myled = 1; // LED is ON
-    DEBUG("onNotifyEnabled!!\n\r");
-    }
+int main()
+{
     
-void onNotifyDisabled(uint16_t charHandle) {
-    //myled = 1; // LED is ON
-    DEBUG("onNotifyDisabled!!\n\r");
-    }
-
-void onDataSentNotify() {
-    //myled = 1; // LED is ON
-    DEBUG("on Data Sent Notify!!\n\r");
-    }
-
-void Append128bitUUID(uint8_t *array, const LongUUID_t SERVICE_UUID_128) 
-{
-    for(int x=0;x<16; x++)
-    {
-        array[x+UUID_Count*16]=SERVICE_UUID_128[x];
-        }
-    UUID_Count++;
-    return; 
-}
 
-/**
- * Triggered periodically by the 'ticker' interrupt; updates hrmCounter.
- */
-void periodicCallback(void)
-{
-    //myled = !myled; /* Do blinky on LED1 while we're waiting for BLE events */
-     
-    if (dev.getGapState().connected) {
-        hrmCounter++;
-        if (hrmCounter == 175) {
-            //hrmCounter = 100;
-            dev.disconnect();
-        }
-        bpm[1] = hrmCounter;
-        uint16_t t = sizeof(bpm);
-        //DEBUG("Char Handle 0x%x OK.",hrmRate.getHandle());
-        //dev.readCharacteristicValue(hrmRate.getHandle(), bpm, (uint16_t *const)t);
-        dev.updateCharacteristicValue(hrmRate.getHandle(), bpm, sizeof(bpm));
-        //DEBUG("Ticker CB..\n\r");
-    } //else DEBUG("Not Connected..\n\r");
-    else //if not connected
-    {
-        hrmCounter++;
-        if (hrmCounter == 150) {
-            //hrmCounter = 100;
-            //dev.stopAdvertising();//can also test stop Advertising from here?
-        }
-        }
-}
-
-int main() {   
+    BlueNRG_Master::getInstance().btle_M_init(true);
+    
+    DEBUG(" Initialization completed\n ");
+    
+    ble_error_t error = BlueNRG_Master::getInstance().scan_ble_devices(0x4000, 0x4000,0x00,0x00);
     
-    Ticker ticker; //For Tick interrupt if used later on (periodic data updates?)
-    
-    
-    //LongUUID_t HEART_RATE_CHAR_UUID_128, HRM_SERVICE_UUID_128;
-    //COPY_HRM_SERVICE_UUID(HRM_SERVICE_UUID_128);
-    //COPY_HRM_CHAR_UUID(HEART_RATE_CHAR_UUID_128); 
-    UUID heart_rate_char_UUID = UUID(HEART_RATE_CHAR_UUID_128);
-    UUID hrm_service_UUID = UUID(HRM_SERVICE_UUID_128);
-    
-    myled = 0;//Switch OFF LED1
-     
-    DEBUG("Initializing BlueNRG...\n\r");
-    dev.init();
-    
-    dev.onConnection(onConnectionCallback);
-    dev.onDisconnection(disconnectionCallback);
-    dev.onDataWritten(onWriteCallback);
-    dev.onUpdatesEnabled(onNotifyEnabled);
-    dev.onDataSent(onDataSentNotify);
-    dev.onUpdatesDisabled(onNotifyDisabled);
-    
-    //TODO.
-    //dev.setAddress(Gap::ADDR_TYPE_PUBLIC, device_address);//Will reset the device and re-init()
-    //TODO.    
-    
-    //Append128bitUUID(uuid128_list, HRM_SERVICE_UUID_128);
-    
-    /* setup advertising */
-    dev.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
-    
-    //TODO:IMP STUFF: 128bit list is basically a uint8_t list. User should know how many services he supports and define the number in MAX_SERVICES_NOS
-    dev.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t*)uuid16_list, sizeof(uuid16_list));
-    
-    dev.accumulateAdvertisingPayload(GapAdvertisingData::HEART_RATE_SENSOR_HEART_RATE_BELT);
-    
-    dev.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME));
-    dev.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
-    dev.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
-    DEBUG("Starting Advertising...\n\r");
-    dev.startAdvertising();
-    
-    dev.addService(hrmService);
-    //ticker.attach(periodicCallback, 1); Multi threading and called from ISR context does not work!
-    
-    while(1) {
+   if(error == BLE_ERROR_NONE)
+    {
+        while(1)
+        {
+            DEBUG(" IN WHILE LOOP \n");
+            myled = 1; // LED is ON
+            wait(0.5); // 500 ms
+            myled = 0; // LED is OFF
+            wait(0.5); // 500 ms
+            //DEBUG("tic!\n\r");
+            BlueNRG_Master::getInstance().waitForEvent();
+        } 
+   }
+    else
+        DEBUG(" NO DEVICE DISCOVERED");
         
-        myled = 1; // LED is ON
-        wait(0.5); // 500 ms
-        myled = 0; // LED is OFF
-        wait(0.5); // 500 ms
-        //DEBUG("tic!\n\r");
-        periodicCallback();//Works from here!!
-    
-        dev.waitForEvent();
-    }
+        //ble_error_t conn_error = BlueNRG_Master::create_connection(0x4000,0x4000, 0x00, BlueNRG_Master::bdaddr, 
+                                                    //0x00, 0x0006,0x0028, 0x0000, 
+                                                    //0x03E8, 0x0000, 0x03E8);        
+        
+        
+        //ble_error_t disc_service_error = BlueNRG_Master::disc_all_prim_services(BlueNRG_Master::m_connectionHandle);
+        
+        //pc.printf("%u", disc_service_error);*/
+        return 0;
+        
 }
+