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
  • I will work on gathering more information.

    I have a logging mechanism that shows all the operations I'm doing and all the events I receive. Before this incident occurs, the connection is operating and is not disconnected.

    Two operations on this connection succeeded, but never generated the proper event afterward
    1. sd_ble_gattc_write(with BLE_GATT_OP_WRITE_REQ) never generated event BLE_GATTC_EVT_WRITE_RSP
    2. sd_ble_gap_disconnect never generated event BLE_GAP_EVT_DISCONNECTED

    My assumptions for those two operations is that if they return NRF_SUCCESS, they will always be followed by the corresponding event.

    1. Is there any situation at all where those operations return NRF_SUCESS but don't generate the corresponding event? 

    2. What is the upper limit on the time these operations can take to generate those events? I assume it's related to the supervision timeout (which is 4 seconds).

    Thanks,

    Paul

Reply
  • I will work on gathering more information.

    I have a logging mechanism that shows all the operations I'm doing and all the events I receive. Before this incident occurs, the connection is operating and is not disconnected.

    Two operations on this connection succeeded, but never generated the proper event afterward
    1. sd_ble_gattc_write(with BLE_GATT_OP_WRITE_REQ) never generated event BLE_GATTC_EVT_WRITE_RSP
    2. sd_ble_gap_disconnect never generated event BLE_GAP_EVT_DISCONNECTED

    My assumptions for those two operations is that if they return NRF_SUCCESS, they will always be followed by the corresponding event.

    1. Is there any situation at all where those operations return NRF_SUCESS but don't generate the corresponding event? 

    2. What is the upper limit on the time these operations can take to generate those events? I assume it's related to the supervision timeout (which is 4 seconds).

    Thanks,

    Paul

Children
No Data
Related