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
Diff: nRF51Gap.cpp
- Revision:
- 56:a1071b629aa3
- Parent:
- 44:47da5c62e067
- Child:
- 69:61da91a52bd6
--- a/nRF51Gap.cpp Fri Jul 25 10:33:52 2014 +0100 +++ b/nRF51Gap.cpp Tue Sep 02 15:50:05 2014 +0100 @@ -168,8 +168,7 @@ adv_para.interval = params.getInterval(); // advertising interval (in units of 0.625 ms) adv_para.timeout = params.getTimeout(); - ASSERT(ERROR_NONE == sd_ble_gap_adv_start(&adv_para), - BLE_ERROR_PARAM_OUT_OF_RANGE); + ASSERT(ERROR_NONE == sd_ble_gap_adv_start(&adv_para), BLE_ERROR_PARAM_OUT_OF_RANGE); state.advertising = 1; @@ -218,14 +217,23 @@ @endcode */ /**************************************************************************/ -ble_error_t nRF51Gap::disconnect(void) +ble_error_t nRF51Gap::disconnect(DisconnectionReason_t reason) { state.advertising = 0; state.connected = 0; + uint8_t code = BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION; + switch (reason) { + case REMOTE_USER_TERMINATED_CONNECTION: + code = BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION; + break; + case CONN_INTERVAL_UNACCEPTABLE: + code = BLE_HCI_CONN_INTERVAL_UNACCEPTABLE; + break; + } + /* Disconnect if we are connected to a central device */ - ASSERT_INT(ERROR_NONE, - sd_ble_gap_disconnect(m_connectionHandle, BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION), BLE_ERROR_PARAM_OUT_OF_RANGE); + ASSERT_INT(ERROR_NONE, sd_ble_gap_disconnect(m_connectionHandle, code), BLE_ERROR_PARAM_OUT_OF_RANGE); return BLE_ERROR_NONE; } @@ -252,8 +260,7 @@ { uint32_t rc; - rc = sd_ble_gap_conn_param_update(handle, - reinterpret_cast<ble_gap_conn_params_t *>(const_cast<ConnectionParams_t*>(newParams))); + rc = sd_ble_gap_conn_param_update(handle, reinterpret_cast<ble_gap_conn_params_t *>(const_cast<ConnectionParams_t*>(newParams))); if (rc == NRF_SUCCESS) { return BLE_ERROR_NONE; } else { @@ -314,3 +321,42 @@ return BLE_ERROR_NONE; } + +ble_error_t nRF51Gap::setDeviceName(const uint8_t *deviceName) +{ + ble_gap_conn_sec_mode_t sec_mode; + BLE_GAP_CONN_SEC_MODE_SET_OPEN(&sec_mode); // no security is needed + + if (sd_ble_gap_device_name_set(&sec_mode, deviceName, strlen((const char *)deviceName)) == NRF_SUCCESS) { + return BLE_ERROR_NONE; + } else { + return BLE_ERROR_PARAM_OUT_OF_RANGE; + } +} + +ble_error_t nRF51Gap::getDeviceName(uint8_t *deviceName, unsigned *lengthP) +{ + if (sd_ble_gap_device_name_get(deviceName, (uint16_t *)lengthP) == NRF_SUCCESS) { + return BLE_ERROR_NONE; + } else { + return BLE_ERROR_PARAM_OUT_OF_RANGE; + } +} + +ble_error_t nRF51Gap::setAppearance(uint16_t appearance) +{ + if (sd_ble_gap_appearance_set(appearance) == NRF_SUCCESS) { + return BLE_ERROR_NONE; + } else { + return BLE_ERROR_PARAM_OUT_OF_RANGE; + } +} + +ble_error_t nRF51Gap::getAppearance(uint16_t *appearanceP) +{ + if (sd_ble_gap_appearance_get(appearanceP)) { + return BLE_ERROR_NONE; + } else { + return BLE_ERROR_PARAM_OUT_OF_RANGE; + } +}