Beware that this post is related to an SDK in maintenance mode
More Info: Consider nRF Connect SDK for new designs

Is NRF_ERROR_BUSY from sd_ble_gatts_hvx for a Notification actually possible?

I'm using s132 v5.1.0 in my Server Peripheral application. The documentation for sd_ble_gatts_hvx() says that when using it for Notifications, a return of NRF_ERROR_BUSY "can only mean GATT procedure timeout". What does this mean? Do some procedures leave a persistent state if they time-out? Does it just mean that another GATT procedure (e.g. a Characteristic Read) is in progress?

I notice for s132 v7.3.0, that statement is absent. Was this due to a change in the SoftDevice, or is it just a documentation clarification, and NRF_ERROR_BUSY can't actually happen when trying to enqueue a Notification for v5.1.0?

  • Hi Elias, 

    As far as I know we just changed the NRF_ERROR_BUSY return code for notification to NRF_ERROR_TIMEOUT instead. 

    You are correct in your question, The GATT timeout happens when a GATTs procedure has been timed out. It can be an indication didn't get confirmed or an ATT packet without any ACK on link layer. In any case, when you see a GATT timeout, the connection should be terminated. 

Related