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.
Fork of nRF51822 by
Revision 424:28ea27dcba79, committed 2015-08-13
- Comitter:
- rgrover1
- Date:
- Thu Aug 13 13:23:18 2015 +0100
- Parent:
- 423:9bf22621d592
- Child:
- 425:fa9841d9e22c
- Commit message:
- Synchronized with git rev c9a77b82
Author: Rohit Grover
Release 0.4.6
=============
Enhancements
~~~~~~~~~~~~
* Add connection handle to GATT callback parameters. This paves the way for
applications requiring multiple concurrent connections: read/write/HVX
callbacks will be able to distinguish between peripherals by comparing per-
device connection handles.
* nRFGattClient: move the allocation of the singleton to within the
getInstance() method. This saves memory when nRFGattClient isn't
instantiated.
* Disable GattClient features when using S110 SoftDevice. This is controlled
by the pre-processor macros: MCU_NORDIC_16K_S110 or MCU_NORDIC_16K_S110.
Changed in this revision
--- a/module.json Thu Aug 13 13:23:18 2015 +0100
+++ b/module.json Thu Aug 13 13:23:18 2015 +0100
@@ -1,6 +1,6 @@
{
"name": "ble-nrf51822",
- "version": "0.4.5",
+ "version": "0.4.6",
"description": "Nordic stack and drivers for the mbed BLE API.",
"keywords": [
"Bluetooth",
@@ -19,7 +19,7 @@
}
],
"dependencies": {
- "ble": "~0.4.5"
+ "ble": "~0.4.6"
},
"extraIncludes": [
"source/btle",
--- a/source/btle/btle.cpp Thu Aug 13 13:23:18 2015 +0100
+++ b/source/btle/btle.cpp Thu Aug 13 13:23:18 2015 +0100
@@ -52,11 +52,13 @@
error_t btle_init(void)
{
+ nrf_clock_lfclksrc_t clockSource;
if (NRF_CLOCK->LFCLKSRC & (CLOCK_LFCLKSRC_SRC_Xtal << CLOCK_LFCLKSRC_SRC_Pos)) {
- SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, NULL);
+ clockSource = NRF_CLOCK_LFCLKSRC_XTAL_20_PPM;
} else {
- SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION, NULL);
+ clockSource = NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION;
}
+ SOFTDEVICE_HANDLER_INIT(clockSource, NULL);
// Enable BLE stack
/**
@@ -107,7 +109,9 @@
dm_ble_evt_handler(p_ble_evt);
+#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110)
bleGattcEventHandler(p_ble_evt);
+#endif
/* Custom event handler */
switch (p_ble_evt->header.evt_id) {
--- a/source/btle/btle_discovery.cpp Thu Aug 13 13:23:18 2015 +0100
+++ b/source/btle/btle_discovery.cpp Thu Aug 13 13:23:18 2015 +0100
@@ -17,6 +17,7 @@
#include "nRF5xServiceDiscovery.h"
#include "nRF5xGattClient.h"
+#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110)
void bleGattcEventHandler(const ble_evt_t *p_ble_evt)
{
nRF5xServiceDiscovery &sdSingleton = nRF5xGattClient::getInstance().discovery;
@@ -56,10 +57,11 @@
case BLE_GATTC_EVT_READ_RSP: {
GattReadCallbackParams response = {
- .handle = p_ble_evt->evt.gattc_evt.params.read_rsp.handle,
- .offset = p_ble_evt->evt.gattc_evt.params.read_rsp.offset,
- .len = p_ble_evt->evt.gattc_evt.params.read_rsp.len,
- .data = p_ble_evt->evt.gattc_evt.params.read_rsp.data,
+ .connHandle = p_ble_evt->evt.gattc_evt.conn_handle,
+ .handle = p_ble_evt->evt.gattc_evt.params.read_rsp.handle,
+ .offset = p_ble_evt->evt.gattc_evt.params.read_rsp.offset,
+ .len = p_ble_evt->evt.gattc_evt.params.read_rsp.len,
+ .data = p_ble_evt->evt.gattc_evt.params.read_rsp.data,
};
nRF5xGattClient::getInstance().processReadResponse(&response);
}
@@ -67,11 +69,12 @@
case BLE_GATTC_EVT_WRITE_RSP: {
GattWriteCallbackParams response = {
- .handle = p_ble_evt->evt.gattc_evt.params.write_rsp.handle,
- .writeOp = (GattWriteCallbackParams::WriteOp_t)(p_ble_evt->evt.gattc_evt.params.write_rsp.write_op),
- .offset = p_ble_evt->evt.gattc_evt.params.write_rsp.offset,
- .len = p_ble_evt->evt.gattc_evt.params.write_rsp.len,
- .data = p_ble_evt->evt.gattc_evt.params.write_rsp.data,
+ .connHandle = p_ble_evt->evt.gattc_evt.conn_handle,
+ .handle = p_ble_evt->evt.gattc_evt.params.write_rsp.handle,
+ .writeOp = (GattWriteCallbackParams::WriteOp_t)(p_ble_evt->evt.gattc_evt.params.write_rsp.write_op),
+ .offset = p_ble_evt->evt.gattc_evt.params.write_rsp.offset,
+ .len = p_ble_evt->evt.gattc_evt.params.write_rsp.len,
+ .data = p_ble_evt->evt.gattc_evt.params.write_rsp.data,
};
nRF5xGattClient::getInstance().processWriteResponse(&response);
}
@@ -79,10 +82,11 @@
case BLE_GATTC_EVT_HVX: {
GattHVXCallbackParams params;
- params.handle = p_ble_evt->evt.gattc_evt.params.hvx.handle;
- params.type = static_cast<HVXType_t>(p_ble_evt->evt.gattc_evt.params.hvx.type);
- params.len = p_ble_evt->evt.gattc_evt.params.hvx.len;
- params.data = p_ble_evt->evt.gattc_evt.params.hvx.data;
+ params.connHandle = p_ble_evt->evt.gattc_evt.conn_handle;
+ params.handle = p_ble_evt->evt.gattc_evt.params.hvx.handle;
+ params.type = static_cast<HVXType_t>(p_ble_evt->evt.gattc_evt.params.hvx.type);
+ params.len = p_ble_evt->evt.gattc_evt.params.hvx.len;
+ params.data = p_ble_evt->evt.gattc_evt.params.hvx.data;
nRF5xGattClient::getInstance().processHVXEvent(¶ms);
}
@@ -92,3 +96,4 @@
sdSingleton.progressCharacteristicDiscovery();
sdSingleton.progressServiceDiscovery();
}
+#endif
--- a/source/nRF5xGap.h Thu Aug 13 13:23:18 2015 +0100
+++ b/source/nRF5xGap.h Thu Aug 13 13:23:18 2015 +0100
@@ -80,6 +80,8 @@
return BLE_ERROR_UNSPECIFIED;
}
+/* Observer role is not supported by S110, return BLE_ERROR_NOT_IMPLEMENTED */
+#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110)
virtual ble_error_t startRadioScan(const GapScanningParams &scanningParams) {
ble_gap_scan_params_t scanParams = {
.active = scanningParams.getActiveScanning(), /**< If 1, perform active scanning (scan requests). */
@@ -104,6 +106,7 @@
return BLE_STACK_BUSY;
}
+#endif
private:
/**
--- a/source/nRF5xGattClient.cpp Thu Aug 13 13:23:18 2015 +0100
+++ b/source/nRF5xGattClient.cpp Thu Aug 13 13:23:18 2015 +0100
@@ -16,13 +16,13 @@
#include "nRF5xGattClient.h"
-nRF5xGattClient nRFGattClientSingleton;
-
nRF5xGattClient &
nRF5xGattClient::getInstance(void) {
+ static nRF5xGattClient nRFGattClientSingleton;
return nRFGattClientSingleton;
}
+#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110)
ble_error_t
nRF5xGattClient::launchServiceDiscovery(Gap::Handle_t connectionHandle,
ServiceDiscovery::ServiceCallback_t sc,
@@ -31,4 +31,5 @@
const UUID &matchingCharacteristicUUIDIn)
{
return discovery.launch(connectionHandle, sc, cc, matchingServiceUUIDIn, matchingCharacteristicUUIDIn);
-}
\ No newline at end of file
+}
+#endif
\ No newline at end of file
--- a/source/nRF5xGattClient.h Thu Aug 13 13:23:18 2015 +0100
+++ b/source/nRF5xGattClient.h Thu Aug 13 13:23:18 2015 +0100
@@ -26,6 +26,12 @@
static nRF5xGattClient &getInstance();
/**
+ * When using S110, all Gatt client features will return
+ * BLE_ERROR_NOT_IMPLEMENTED
+ */
+#if !defined(MCU_NORDIC_16K_S110) && !defined(MCU_NORDIC_32K_S110)
+
+ /**
* Launch service discovery. Once launched, service discovery will remain
* active with callbacks being issued back into the application for matching
* services/characteristics. isActive() can be used to determine status; and
@@ -152,6 +158,8 @@
private:
nRF5xServiceDiscovery discovery;
+
+#endif // if !S110
};
#endif // ifndef __NRF51822_GATT_CLIENT_H__
\ No newline at end of file
--- a/source/nRF5xGattServer.cpp Thu Aug 13 13:23:18 2015 +0100
+++ b/source/nRF5xGattServer.cpp Thu Aug 13 13:23:18 2015 +0100
@@ -375,21 +375,23 @@
switch (eventType) {
case GattServerEvents::GATT_EVENT_DATA_WRITTEN: {
GattWriteCallbackParams cbParams = {
- .handle = handle_value,
- .writeOp = static_cast<GattWriteCallbackParams::WriteOp_t>(gattsEventP->params.write.op),
- .offset = gattsEventP->params.write.offset,
- .len = gattsEventP->params.write.len,
- .data = gattsEventP->params.write.data
+ .connHandle = gattsEventP->conn_handle,
+ .handle = handle_value,
+ .writeOp = static_cast<GattWriteCallbackParams::WriteOp_t>(gattsEventP->params.write.op),
+ .offset = gattsEventP->params.write.offset,
+ .len = gattsEventP->params.write.len,
+ .data = gattsEventP->params.write.data
};
handleDataWrittenEvent(&cbParams);
break;
}
case GattServerEvents::GATT_EVENT_WRITE_AUTHORIZATION_REQ: {
GattWriteAuthCallbackParams cbParams = {
- .handle = handle_value,
- .offset = gattsEventP->params.authorize_request.request.write.offset,
- .len = gattsEventP->params.authorize_request.request.write.len,
- .data = gattsEventP->params.authorize_request.request.write.data,
+ .connHandle = gattsEventP->conn_handle,
+ .handle = handle_value,
+ .offset = gattsEventP->params.authorize_request.request.write.offset,
+ .len = gattsEventP->params.authorize_request.request.write.len,
+ .data = gattsEventP->params.authorize_request.request.write.data,
};
ble_gatts_rw_authorize_reply_params_t reply = {
.type = BLE_GATTS_AUTHORIZE_TYPE_WRITE,
@@ -410,11 +412,12 @@
*/
if (reply.params.write.gatt_status == BLE_GATT_STATUS_SUCCESS) {
GattWriteCallbackParams cbParams = {
- .handle = handle_value,
- .writeOp = static_cast<GattWriteCallbackParams::WriteOp_t>(gattsEventP->params.authorize_request.request.write.op),
- .offset = gattsEventP->params.authorize_request.request.write.offset,
- .len = gattsEventP->params.authorize_request.request.write.len,
- .data = gattsEventP->params.authorize_request.request.write.data,
+ .connHandle = gattsEventP->conn_handle,
+ .handle = handle_value,
+ .writeOp = static_cast<GattWriteCallbackParams::WriteOp_t>(gattsEventP->params.authorize_request.request.write.op),
+ .offset = gattsEventP->params.authorize_request.request.write.offset,
+ .len = gattsEventP->params.authorize_request.request.write.len,
+ .data = gattsEventP->params.authorize_request.request.write.data,
};
handleDataWrittenEvent(&cbParams);
}
@@ -422,10 +425,11 @@
}
case GattServerEvents::GATT_EVENT_READ_AUTHORIZATION_REQ: {
GattReadAuthCallbackParams cbParams = {
- .handle = handle_value,
- .offset = gattsEventP->params.authorize_request.request.read.offset,
- .len = 0,
- .data = NULL
+ .connHandle = gattsEventP->conn_handle,
+ .handle = handle_value,
+ .offset = gattsEventP->params.authorize_request.request.read.offset,
+ .len = 0,
+ .data = NULL
};
ble_gatts_rw_authorize_reply_params_t reply = {
--- a/source/nordic-sdk/components/libraries/util/app_error.c Thu Aug 13 13:23:18 2015 +0100 +++ b/source/nordic-sdk/components/libraries/util/app_error.c Thu Aug 13 13:23:18 2015 +0100 @@ -44,7 +44,6 @@ #include "compiler_abstraction.h" #include "nordic_common.h" #ifdef DEBUG -#include "bsp.h" /* global error variables - in order to prevent removal by optimizers */ uint32_t m_error_code;
