Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: BLE_API BLE_BlueNRG mbed
Fork of L0_BlueNRG_Test by
Revision 4:17e1861df93f, committed 2014-11-20
- Comitter:
- Deepti
- Date:
- Thu Nov 20 09:12:32 2014 +0000
- Parent:
- 3:ab24e6c72ae3
- Commit message:
- BLueNRG_Master functionality
Changed in this revision
| BLE_BlueNRG.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 |
--- a/BLE_BlueNRG.lib Thu Aug 28 05:58:36 2014 +0000 +++ b/BLE_BlueNRG.lib Thu Nov 20 09:12:32 2014 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mridup/code/BLE_BlueNRG/#1a0220f508ca +http://mbed.org/users/mridup/code/BLE_BlueNRG/#7631cf7f282b
--- 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;
+
}
+
