No response after indication sent
SDK version: 3.4.1
I am occasionally encountering an issue where an indication is sent (TCU_LE_GATT_SER_CHAR_VAL_INDICATION_REQ), but the response is never received (either TCU_LE_ACCEPT or TCU_LE_GATT_SER_CHAR_VAL_INDICATION_EVENT). I would think the Bluetooth module would provide a timeout after some period, but nothing comes back. I see a LE_GATT_STATUS_TIMEOUT_OCCURED referenced in tcu_le_gatt_ser_accept_response_handler(), which supports my assumption. However, a TCU_LE_ACCEPT is never received.
Is it safe to retry the indication at the application layer?
For my understanding. Your application is running normally and sending in a loop. For every TCU_LE_GATT_SER_CHAR_VAL_INDICATION_REQ you receive a TCU_LE_ACCEPT and later a TCU_LE_GATT_SER_CHAR_VAL_INDICATION_EVENT.
Then at some point for a TCU_LE_GATT_SER_CHAR_VAL_INDICATION_REQ no TCU_LE_ACCEPT is received.
I assume that you have checked that no TCU_LE_ACCEPT is stuck in the UART buffer. Can you confirm this?
Do you have the chance to monitor the UART line with a bus analyzer and confirm that the TCU_LE_ACCEPT is really not sent by PAN1026A?
Yes, my application sends indications until there is no more data to send (this is an adapted SPPoverBLE). I do normally get the TCU_LE_ACCEPT and then the TCU_LE_GATT_SER_CHAR_VAL_INDICATION_EVENT. Then when this issue occurs, neither packet is received.
I'll verify that the UART buffer is empty. I did check that the UART overrun flag was not set. I'll also take a look at the UART line - only have an oscilloscope to check though.