Hi,
I'm working on NRF52840 DK , S140 and I'm trying to send large data (around ~64KBytes) from a peripheral device. I'm using the following functions:
- sd_ble_gatts_hvx: to send the data (after setting the type to BLE_GATT_HVX_INDICATION)
- Waiting for BLE_GATTS_EVT_HVC event before sending the next packet
My connection interval is set to 7.5 msec in order to maximize the throughput. I have modified the code for the Nordic UART Service (TX characteristic) to send the data. So far I managed to send all the data. However, I noticed that "sd_ble_gatts_hvx" returns NRF_ERROR_BUSY very frequently when I try to send the packets back to back. I keep retrying calling the function sd_ble_gatts_hvx until the returned error is 0. It takes around 9 ms before the error returns 0 which is relatively long. This reduces the throughput significantly. So my questions are:
- Is there an event or status I can check for NRF_ERROR_BUSY instead of calling sd_ble_gatts_hvx ?
- Do I need to add a delay after receiving the BLE_GATTS_EVT_HVC event?
- Is there anything I need to configure to avoid this error all together?
Thanks in advance