2017-11-30 09:26 PM
I am using aci_gatt_update_char_value() on a BlueNRG-MS to send notifications to a master device. The first number of times this function is called it returns BLE_STATUS_SUCCESS but then it returns BLE_STATUS_INSUFFICIENT_RESOURCES. After this I wait for the EVT_BLUE_GATT_TX_POOL_AVAILABLE before attempting to call aci_gatt_update_char_value() and I am able to send more notifications. The problem is that it takes 4 to 5 seconds to get the Tx pool available event but I am using a connection interval of 100ms so this delay seems way to big. I am using the latest BlueNRG firmware (v7.2c) and using Stack Mode 4.
#bluenrg-ms2017-12-06 02:36 AM
Hi Nick,
how many characteristics do you have in your application?
If you have many and update all of them during a connection interval, maybe you could try aggregating multiple characteristics into a minor number to mitigate this issue.
I don't know if your application requirements allow this, but if you could do it, as a side benefit, you would also improve the power consumption by reducing the protocol overhead.
Best regards,
Antonio
2017-12-14 05:31 PM
I only have 2 characteristics and am just updating one of these. I have a large amount of data to send so am just calling aci_gatt_update_char_value() continuously in a loop with new data while it returns BLE_STATUS_SUCCESS but when it returns BLE_STATUS_INSUFFICIENT_RESOURCES I wait for the EVT_BLUE_GATT_TX_POOL_AVAILABLE event before trying again. Is there any reason why it should take so long (4 to 5 seconds) to receive this event when the connection interval is around 100ms?