BLE UART example for Nucloe board and Bluetooth LE Nucleo shield.

Dependencies:   Nucleo_BLE_API Nucleo_BLE_BlueNRG mbed

Warning: Deprecated!

Supported drivers and applications can be found at this link.

Files at this revision

API Documentation at this revision

Comitter:
sjallouli
Date:
Fri Dec 19 19:53:05 2014 +0000
Child:
1:69e44344edaa
Commit message:
change the USARTService->write method access permission to public

Changed in this revision

Nucleo_BLE_API.lib Show annotated file Show diff for this revision Revisions of this file
Nucleo_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
mbed.bld Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Nucleo_BLE_API.lib	Fri Dec 19 19:53:05 2014 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/ST-Americas-mbed-Team/code/Nucleo_BLE_API/#79e5c08cbcc7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Nucleo_BLE_BlueNRG.lib	Fri Dec 19 19:53:05 2014 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/teams/ST-Americas-mbed-Team/code/Nucleo_BLE_BlueNRG/#be1cb4be316f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Dec 19 19:53:05 2014 +0000
@@ -0,0 +1,102 @@
+/* mbed Microcontroller Library
+ * Copyright (c) 2006-2013 ARM Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+#include "mbed.h"
+#include "BLEDevice.h"
+#include "UARTService.h"
+#include "Utils.h"
+
+
+#define BLE_UART_SEND(STR) { if (uartServicePtr) uartServicePtr->write(STR, strlen(STR)); }
+
+
+BLEDevice  ble;
+DigitalOut led1(LED1);
+DigitalIn mybutton(USER_BUTTON);
+
+bool connected = false;
+
+UARTService *uartServicePtr;
+ 
+void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
+{
+    DEBUG("Disconnected!\n\r");
+    DEBUG("Restarting the advertising process\n\r");
+    ble.startAdvertising();
+    connected = false;
+}
+
+void connectionCallback(Gap::Handle_t handle, const Gap::ConnectionParams_t *reason)
+{
+  DEBUG("Connected\r\n");
+  connected = true;
+}
+
+void onDataWritten(const GattCharacteristicWriteCBParams *params)
+{
+    if ((uartServicePtr != NULL) && (params->charHandle == uartServicePtr->getTXCharacteristicHandle())) {
+        uint16_t bytesRead = params->len;
+        DEBUG("received %u bytes\n\r", bytesRead);
+        ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), params->data, bytesRead);
+    }
+}
+ 
+void periodicCallback(void)
+{
+    led1 = !led1;
+}
+ 
+int main(void)
+{
+    led1 = 1;
+    Ticker ticker;
+    ticker.attach(periodicCallback, 1);
+ 
+    DEBUG("Initialising \n\r");
+    ble.init();
+    ble.onDisconnection(disconnectionCallback);
+    ble.onConnection(connectionCallback);
+    ble.onDataWritten(onDataWritten);
+ 
+    /* setup advertising */
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
+    ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME, (const uint8_t *)"BLE UART", sizeof("BLE UART") - 1);
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS, (const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed));
+ 
+    ble.setAdvertisingInterval(160);
+    ble.startAdvertising();
+ 
+    UARTService uartService(ble);
+    uartServicePtr = &uartService;
+ 
+ 
+    while (true) 
+    {
+        ble.waitForEvent();
+        
+        if(connected == true)
+        {
+            if (mybutton == 0)
+            {
+                DEBUG("ABCDEFGHIJKLMNOPQRST");
+                BLE_UART_SEND("ABCDEFGHIJKLMNOPQRST");
+
+                while(mybutton == 0);
+            }
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Dec 19 19:53:05 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/4fc01daae5a5
\ No newline at end of file