Hi everybody,
I have some trouble fixing the ERROR 19 [NRF_ERROR_RESOURCES]. I think it's something about the buffer queue size that is too busy. But I don't know how to fix it because most of the resolution on that matter was on the peripheral side with BLE_GATTS_EVT_HVN_TX_COMPLETE but it's a server whereas on the central side it's a client.
So I think I can't solve my problem with BLE_GATTS_EVT_HVN_TX_COMPLETE or I misunderstood something.
If you could enlighten me on that matter or give me some solutions. It would be great.
Some informations that might be useful :
NRF_SDH_BLE_GAP_EVENT_LENGTH is 320
NRF_SDH_BLE_GAP_DATA_LENGTH is 251
NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408
// Where I send my 244 Bytes data
void uart_event_handle(app_uart_evt_t * p_event)
{
static uint8_t data_array[BLE_NUS_MAX_DATA_LEN];
static uint16_t index = 0;
static uint32_t ret_val;
static uint16_t length = 244;
static uint8_t j;
static uint8_t send_data[BLE_NUS_MAX_DATA_LEN];
for (uint8_t i=0; i<length; i++)
{
send_data[i]=i;
}
switch (p_event->evt_type)
{
/**@snippet [Handling data from UART] */
case APP_UART_DATA_READY:
UNUSED_VARIABLE(app_uart_get(&data_array[index]));
index++;
if (//(data_array[index - 1] == '\n') ||
(data_array[index - 1] == '\r') ||
(index >= (m_ble_nus_max_data_len)))
{
NRF_LOG_INFO("Ready to send data over BLE NUS");
NRF_LOG_HEXDUMP_INFO(data_array, index);
do
{
if (index % 4 != 0 || index > 4)
{
for (int i=0;i<10;i++)
{
ret_val = ble_nus_c_string_send(&m_ble_nus_c, send_data, length);
}
}
if ( (ret_val != NRF_ERROR_INVALID_STATE) && (ret_val != NRF_ERROR_RESOURCES) &&
(ret_val != NRF_ERROR_NOT_FOUND))
{
APP_ERROR_CHECK(ret_val);
}
} while (ret_val == NRF_ERROR_RESOURCES);
index = 0;
}
break;
/**@snippet [Handling data from UART] */
case APP_UART_COMMUNICATION_ERROR:
NRF_LOG_ERROR("Communication error occurred while handling UART.");
APP_ERROR_HANDLER(p_event->data.error_communication);
break;
case APP_UART_FIFO_ERROR:
NRF_LOG_ERROR("Error occurred in FIFO module used by UART.");
APP_ERROR_HANDLER(p_event->data.error_code);
break;
default:
break;
}
}
Best Regards,