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

sd_ble_gatts_hvx() returns BLE_ERROR_NO_TX_BUFFERS, but lightblue in IOS still can receive the package

Hi experts,

I want to send 20 packages from nrf51822 to phone, so I tried to call sd_ble_gatts_hvx() repeatedly until BLE_ERROR_NO_TX_BUFFERS returns, then sent left packages in BLE_EVT_TX_COMPLETE event.

However, it's very odd that lightblue in IOS can see 21 packages: one package is duplicated. I traced the code, and found that sd_ble_gatts_hvx() was called twice for the duplicated package: the first one returned BLE_ERROR_NO_TX_BUFFERS, the second one returned NRF_SUCCESS. I think it runs all right, but why lightblue can see the duplication? MasterControlPanel in Android can receive 20 package correctly.

Related