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)

  • Ell everything is possible, Soft Device is just piece of SW written by human so it can have bugs. However could you link your suspicion to some BLE logs which would show that some packets didn't get through and that it's not aligned with TX_COMPLETE events? If you say "on next connection stream continues loosing several packages" it can as well mean "my state machine is not able to recognize which packets were already sent reliably over the link and hence I restart the stream on wrong index (and to the app it looks like some packets were lost)".

Reply
  • Ell everything is possible, Soft Device is just piece of SW written by human so it can have bugs. However could you link your suspicion to some BLE logs which would show that some packets didn't get through and that it's not aligned with TX_COMPLETE events? If you say "on next connection stream continues loosing several packages" it can as well mean "my state machine is not able to recognize which packets were already sent reliably over the link and hence I restart the stream on wrong index (and to the app it looks like some packets were lost)".

Children
No Data
Related