This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

disconnecting while operations are in progress never gives BLE_GAP_EVT_DISCONNECTED event

2020-01-24-092119EST-ProductStoppedGettingEventsFromNordicDK.txtImprivataTestNordicEventsNotReceived.zipCalls_to_pc_ble_driver.cpp0285.2020-02-24-TestProgramUploadedToNordicSupport.zipFeb25TestProgramUploadedToNordicSupport.zipImprivata_bgTestApp.zipbgSDKTestAppMay4.zip2020-05-05-035347-NordicDK_USB840M_200505_ClockInternal_2in1.hex.txt.txtbgSDKTestAppMay6.zipI’m developing an application based on pc-ble-driver to talk to an nRF52840-based dongle (from Fanstel).

I’m having trouble disconnecting cleanly when a connection has operations in progress.  For example, I call ‘sd_ble_gattc_write’, which returns NRF_SUCCESS, but I don’t receive event BLE_GATTC_EVT_WRITE_RSP (after waiting 60 seconds), so I decide to disconnect. When this happens, sd_ble_gap_disconnect returns NRF_SUCCESS, but I do not receive BLE_GAP_EVT_DISCONNECTED even after waiting 30 seconds. The connection supervision timeout is 4 seconds.  What could cause the disconnect to not generate any BLE_GAP_EVT_DISCONNECTED event?

What I’m trying to accomplish here: if a connection is not responsive, I want to end that connection, without disturbing other connections I have open.

Thanks,

Paul Bradford

Parents
  • This is very helpful information. I was indeed mixing up BLE_GATTC_EVT_TIMEOUT and BLE_GAP_EVT_TIMEOUT when responding to your prior messages.  My code does not handle event BLE_GATTS_EVT_TIMEOUT, because the pc-ble-driver header files don't say that sd_ble_gattc_write can generate that event.    Is there some other documentation source I should be reading that would tell me that?

    I will add a handler for BLE_GATTC_EVT_TIMEOUT.  If sd_ble_gattc_write does cause that event to be generated, that would solve half my problem.   The remaining problem is that sd_ble_gap_disconnect is not generating BLE_GAP_EVT_DISCONNECTED. There is no other event that might be generated instead, is there?

Reply
  • This is very helpful information. I was indeed mixing up BLE_GATTC_EVT_TIMEOUT and BLE_GAP_EVT_TIMEOUT when responding to your prior messages.  My code does not handle event BLE_GATTS_EVT_TIMEOUT, because the pc-ble-driver header files don't say that sd_ble_gattc_write can generate that event.    Is there some other documentation source I should be reading that would tell me that?

    I will add a handler for BLE_GATTC_EVT_TIMEOUT.  If sd_ble_gattc_write does cause that event to be generated, that would solve half my problem.   The remaining problem is that sd_ble_gap_disconnect is not generating BLE_GAP_EVT_DISCONNECTED. There is no other event that might be generated instead, is there?

Children
No Data
Related