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

indication timeout reliability

Hello, I am using two NRF52's to test out indications. I have modified the Heart Rate Collector Application (Central) and Heart Rate Application (Peripheral) examples to register and send Indications instead of Notifications.

The problem is that the Peripheral NRF52 will occasionally miss the indication confirmation from the Central NRF52. The indication never times out, either. Note that this behavior worsens when I increase the connection interval or slave latency.

I have a couple of questions, that if anyone can help me out with, I'd greatly appreciate it!

  1. Will an Indication Confirmation eventually timeout?
  2. If so, when? (I assume 30 seconds like a write/read timeout?)
  3. If an Indication times out, the 'BLE_GATTS_EVT_TIMEOUT' event will fire, correct?
  4. When an Indication Confirmation is received, the 'BLE_GATTS_EVT_HVC' event will fire, correct?
Parents
  • Sounds very strange that it misses the confirmation. It should either get a BLE_GATTS_EVT_HVC event or a BLE_GATTS_EVT_TIMEOUT event, see this MSC. Are you sure that the indication is actually sent? Are you checking the return value of sd_ble_gatts_hvx()?

    1. Yes.
    2. 30 seconds.
    3. Correct.
    4. Correct.
  • Petter, Thanks for the reply! I am sure the indication is actually sent since I get the Indication on the RF52 running as the Central. I have print messages to say when the Central receives an indication, and when it sends the confirmation. The Peripheral never receives a 'BLE_GATTS_EVT_HVC' event. Is there a possibility that the softdevice receives the indication but never sends the 'BLE_GATTS_EVT_HVC' event? That seems to make sense, since I would not get a timeout in that case. Maybe if the indication confirmation is corrupted somehow?

Reply
  • Petter, Thanks for the reply! I am sure the indication is actually sent since I get the Indication on the RF52 running as the Central. I have print messages to say when the Central receives an indication, and when it sends the confirmation. The Peripheral never receives a 'BLE_GATTS_EVT_HVC' event. Is there a possibility that the softdevice receives the indication but never sends the 'BLE_GATTS_EVT_HVC' event? That seems to make sense, since I would not get a timeout in that case. Maybe if the indication confirmation is corrupted somehow?

Children
No Data
Related