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

Are notifications always sent before disconnecting?

Hi,

In our code we would like to respond to a write with a notification and then disconnect. So we first we call sd_ble_gatts_rw_authorize_reply to reply to the write, then sd_ble_gatts_hvx for the notification and then sd_ble_gap_disconnect. Now I was wondering if the write response and the notification are always sent before the disconnection occurs, or do I have to wait for BLE_EVT_TX_COMPLETE (for 2 packets) to know for sure that they are sent?

Regards,

Thiemo van Engelen

Parents
  • FormerMember
    +1 FormerMember

    No, there is no guarantee that the sd_ble_gatts_rw_authorize_reply() and the notifications will be sent before the disconnect command.

    So yes, to be sure that sd_ble_gatts_rw_authorize_reply() and the notifications are transmitted before the disconnect command, you should wait for BLE_EVT_TX_COMPLETE/BLE_GATTS_EVT_HVN_TX_COMPLETE (S132 v. 4.x.x)

  • I have a similar problem. Between connection/disconnection cycles it seems i lost one packet. I schedule one transfer and wait for BLE_EVT_TX_COMPLETE, then increment TX_buffer index. It works seamless when i manually enable and disable notifications. But if i disconnect while was subscribed, on next connection stream continues loosing several packages. Can anybody tell me if it is possible that i got BLE_EVT_TX_COMPLETE when disconnection occurs suddenly? Maybe there is some delay that my nrf peripheral reveals that connection lost and in this case automatically all scheduled tranfers are closed with TX_COMPLETE?

Reply
  • I have a similar problem. Between connection/disconnection cycles it seems i lost one packet. I schedule one transfer and wait for BLE_EVT_TX_COMPLETE, then increment TX_buffer index. It works seamless when i manually enable and disable notifications. But if i disconnect while was subscribed, on next connection stream continues loosing several packages. Can anybody tell me if it is possible that i got BLE_EVT_TX_COMPLETE when disconnection occurs suddenly? Maybe there is some delay that my nrf peripheral reveals that connection lost and in this case automatically all scheduled tranfers are closed with TX_COMPLETE?

Children
No Data
Related