Hello,
I've created own characteristic and send it from proprietary board acting as peripheral to the Client in form of notifications. I use sd_ble_gatts_hvx() function for this purpose. I have connectionInterval set to 20ms and a sensor which generates data for characteristic with 50Hz data rate. It means that in general I have 1 new data packet to send per each BLE connection event. And all is working ok when RF signal is strong.
When the RF signal is low (happens when distance is big or objects are between) but the connection is still stable, sd_ble_gatts_hvx() function starts giving me BLE_ERROR_NO_TX_BUFFERS error. When signal restores, all becomes good ok.
It seems like when the signal is low the packet buffer is not released from old packets or some procedure starts sending own packets filling the buffer completely. As the result I can not send any new data packets until signal is good again.
Can someone explain me what is the reason of such strange behavior? Because I thought notifications are to be sent in any case and weak signal would just lead to increased packet loss.
P.S. I am using S110, SDK 10, nRF51822.