Hi!
After connected and get log info "Connected." I start bonding:
but there is no any success message.
Therefore nRF52 SDK15 can't to made secure bond.
Why?
Hi!
After connected and get log info "Connected." I start bonding:
// Initiate bonding. err_code = pm_conn_secure(p_ble_evt->evt.common_evt.conn_handle, false); if (err_code != NRF_ERROR_INVALID_STATE) { APP_ERROR_CHECK(err_code); }
but there is no any success message.
0> <info> app: Heart Rate collector example started. 0> <info> app: Starting scan. 0> <info> app: Connected. 0> <info> app: Disconnected, reason 0x8. 0> <info> app: Starting scan. 0> <info> app: Connected. 0> <info> app: Disconnected, reason 0x8. 0> <info> app: Starting scan. 0> <info> app: Connected. 0> <info> app: Disconnected, reason 0x8. 0> <info> app: Starting scan. 0> <info> app: Connected. 0> <info> app: Disconnected, reason 0x8. 0> <info> app: Starting scan.
Therefore nRF52 SDK15 can't to made secure bond.
Why?
The SDKs do only provide a higher level abstraction, so different SDK version should not matter. In the application, for both central and peripheral, could you set the logging level to "debug"? And also enable logging for the "peer manager" module?
With the above settings, could you do the following bonding tests:
And then upload the logs here.
Hi! I use RTT debugging. How to set logging for peer manager?
SDK15--SDK15- all OK
SDK13--SDK13- all OK
SDK15 perph --- SDK13 central- OK
SDK15 central ---- SDK 13 periph- doesn't works.
how to enable logging for peer manager?
Yes, you can disable MTU request in the SDK15 central by not calling sd_ble_gattc_exchange_mtu_request().
Instead of disabling MTU exchange request in SDK 15, it is better to add support for it in your SDK 13 peripheral. If max MTU size for the SDK 13 peripheral should remain 23, you can do something like this in on_ble_evt() in main.c:
case BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST: ret_code_t err_code; uint16_t mtu_size_supported_by_peripheral = 23; err_code = sd_ble_gatts_exchange_mtu_reply(conn_handle, mtu_size_supported_by_peripheral); if (err_code != NRF_SUCCESS) { NRF_LOG_ERROR("sd_ble_gatts_exchange_mtu_reply() returned unexpected value 0x%x.", err_code); }
Yes, I understand it that better was add MTU in the SDK13. But If we already have project on the SDK13 and don't want any change it? Is it possible to disable MTU request on central side SDK15?
Yes, the MTU exchange is initiated by the central/client when calling sd_ble_gattc_exchange_mtu_request(). Not calling/commenting out that function will disable MTU request exchange.
Yes, the MTU exchange is initiated by the central/client when calling sd_ble_gattc_exchange_mtu_request(). Not calling/commenting out that function will disable MTU request exchange.