BLE ー> USBシリアル変換します。 通信速度は9600bps固定です。

Dependencies:   BLE_API mbed nRF51822

Fork of BLE_LoopbackUART by Bluetooth Low Energy

うまく接続できない時は、iPhone/iPadのBluetoothをOFF->ONしてキャッシュをクリアしてみてください。

"#define"を修正して”Nordic UART Service”用UUIDを選択すると、NORDICのデモアプリ"nRF UART 2.0 for Android"にも接続できました。(main.cpp 38行目)

https://play.google.com/store/apps/details?id=com.nordicsemi.nrfUARTv2&hl=en

/media/uploads/robo8080/---------_2014-09-22_15.29.32.png

Files at this revision

API Documentation at this revision

Comitter:
rgrover1
Date:
Tue Sep 02 16:32:58 2014 +0000
Parent:
4:98e3d2aa66de
Child:
6:a50b4fd97e1a
Commit message:
updating underlying libraries.

Changed in this revision

BLE_API.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-src.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show diff for this revision Revisions of this file
nRF51822.lib Show annotated file Show diff for this revision Revisions of this file
--- a/BLE_API.lib	Fri Jun 13 12:13:02 2014 +0000
+++ b/BLE_API.lib	Tue Sep 02 16:32:58 2014 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#5d2102351bf4
+http://mbed.org/teams/Bluetooth-Low-Energy/code/BLE_API/#ca826083980e
--- a/main.cpp	Fri Jun 13 12:13:02 2014 +0000
+++ b/main.cpp	Tue Sep 02 16:32:58 2014 +0000
@@ -21,7 +21,7 @@
 #define BLE_UUID_NUS_TX_CHARACTERISTIC  0x0002 /**< The UUID of the TX Characteristic. */
 #define BLE_UUID_NUS_RX_CHARACTERISTIC  0x0003 /**< The UUID of the RX Characteristic. */
 
-#define NEED_CONSOLE_OUTPUT 0 /* Set this if you need debug messages on the console;
+#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
@@ -39,30 +39,34 @@
 static const uint8_t uart_tx_uuid[]   = {0x6e, 0x40, 0x00, 0x02, 0xb5, 0xa3, 0xf3, 0x93, 0xe0, 0xa9, 0xe5,0x0e, 0x24, 0xdc, 0xca, 0x9e};
 static const uint8_t uart_rx_uuid[]   = {0x6e, 0x40, 0x00, 0x03, 0xb5, 0xa3, 0xf3, 0x93, 0xe0, 0xa9, 0xe5,0x0e, 0x24, 0xdc, 0xca, 0x9e};
 static const uint8_t uart_base_uuid_rev[] = {0x9e, 0xca, 0xdc, 0x24, 0x0e, 0xe5, 0xa9, 0xe0, 0x93, 0xf3, 0xa3, 0xb5, 0x01, 0x00, 0x40, 0x6e};
-uint8_t txPayload[8] = {0,};
-uint8_t rxPayload[8] = {0,};
-GattCharacteristic  txCharacteristic (uart_tx_uuid, txPayload, 1, 8,
+
+static const uint8_t SIZEOF_TX_RX_BUFFER = 128;
+uint8_t rxPayload[SIZEOF_TX_RX_BUFFER] = {0,};
+uint8_t txPayload[SIZEOF_TX_RX_BUFFER] = {0,};
+GattCharacteristic  rxCharacteristic (uart_tx_uuid, rxPayload, 1, SIZEOF_TX_RX_BUFFER,
                                       GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE);
-GattCharacteristic  rxCharacteristic (uart_rx_uuid, rxPayload, 1, 8,
-                                      GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY);
-GattCharacteristic *uartChars[] = {&txCharacteristic, &rxCharacteristic};
+GattCharacteristic  txCharacteristic (uart_rx_uuid, txPayload, 1, SIZEOF_TX_RX_BUFFER, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY);
+GattCharacteristic *uartChars[] = {&rxCharacteristic, &txCharacteristic};
 GattService         uartService(uart_base_uuid, uartChars, sizeof(uartChars) / sizeof(GattCharacteristic *));
 
-void disconnectionCallback(void)
+void disconnectionCallback(Gap::Handle_t handle, Gap::DisconnectionReason_t reason)
 {
     DEBUG("Disconnected!\n\r");
     DEBUG("Restarting the advertising process\n\r");
     ble.startAdvertising();
 }
 
-void onDataWritten(uint16_t charHandle)
+void onDataWritten(uint16_t charHandle, const GattCharacteristicWriteCBParams *params)
 {
-    if (charHandle == txCharacteristic.getHandle()) {
-        DEBUG("onDataWritten()\n\r");
-        uint16_t bytesRead;
-        ble.readCharacteristicValue(txCharacteristic.getHandle(), txPayload, &bytesRead);
-        DEBUG("ECHO: %s\n\r", (char *)txPayload);
-        ble.updateCharacteristicValue(rxCharacteristic.getHandle(), txPayload, bytesRead);
+    if (charHandle == rxCharacteristic.getValueAttribute().getHandle()) {
+        uint16_t bytesRead = params->len;
+        DEBUG("received %u bytes\n\r", bytesRead);
+        if (bytesRead < sizeof(rxPayload)) {
+            memcpy(rxPayload, params->data, bytesRead);
+            rxPayload[bytesRead] = 0;
+        }
+        DEBUG("ECHO: %s\n\r", (char *)rxPayload);
+        ble.updateCharacteristicValue(txCharacteristic.getValueAttribute().getHandle(), rxPayload, bytesRead);
     }
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-src.lib	Tue Sep 02 16:32:58 2014 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed-src/#1f0269907d8b
--- a/mbed.bld	Fri Jun 13 12:13:02 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/024bf7f99721
\ No newline at end of file
--- a/nRF51822.lib	Fri Jun 13 12:13:02 2014 +0000
+++ b/nRF51822.lib	Tue Sep 02 16:32:58 2014 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#c3ce6ee5d300
+http://mbed.org/teams/Nordic-Semiconductor/code/nRF51822/#e861f2041469