For with fix for disconnection notifications
Fork of nRF51822 by
Diff: nRF51GattServer.cpp
- Revision:
- 1:f84abedbf4fb
- Parent:
- 0:eff01767de02
- Child:
- 2:49e7ee9e88ab
diff -r eff01767de02 -r f84abedbf4fb nRF51GattServer.cpp --- a/nRF51GattServer.cpp Wed Mar 26 14:38:17 2014 +0000 +++ b/nRF51GattServer.cpp Thu Apr 03 01:45:38 2014 +0100 @@ -20,6 +20,8 @@ #include "common/common.h" #include "btle/custom/custom_helper.h" +#include "hw/nRF51822n/nRF51Gap.h" + /**************************************************************************/ /*! @brief Adds a new service to the GATT table on the peripheral @@ -138,13 +140,16 @@ /**************************************************************************/ ble_error_t nRF51GattServer::updateValue(uint16_t charHandle, uint8_t buffer[], uint16_t len, bool localOnly) { + uint16_t gapConnectionHandle = nRF51Gap::getInstance().getConnectionHandle(); + if (localOnly) { /* Only update locally regardless of notify/indicate */ ASSERT_INT( ERROR_NONE, sd_ble_gatts_value_set(nrfCharacteristicHandles[charHandle].value_handle, 0, &len, buffer), BLE_ERROR_PARAM_OUT_OF_RANGE ); } + if ((p_characteristics[charHandle]->properties & (GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY)) && - (m_connectionHandle != BLE_CONN_HANDLE_INVALID) ) + (gapConnectionHandle != BLE_CONN_HANDLE_INVALID) ) { /* HVX update for the characteristic value */ ble_gatts_hvx_params_t hvx_params; @@ -155,7 +160,7 @@ hvx_params.p_data = buffer; hvx_params.p_len = &len; - error_t error = (error_t) sd_ble_gatts_hvx(m_connectionHandle, &hvx_params); + error_t error = (error_t) sd_ble_gatts_hvx(gapConnectionHandle, &hvx_params); /* ERROR_INVALID_STATE, ERROR_BUSY, ERROR_GATTS_SYS_ATTR_MISSING and ERROR_NO_TX_BUFFERS the ATT table has been updated. */ if ( (error != ERROR_NONE ) && (error != ERROR_INVALID_STATE) &&