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

how to hold and transmitt(when BLE_ERROR_NO_TX_BUFFERS occurs) the packets while using more no of characreristics to transmitt ?

Hi,

I am using nrf51822 evaluation kit, and the sample program i am working on is ble_app_hrs.

I have created 4 characteristics with notify property and also created 4 buffers each of 20 byte packets when an write event with particular data occurs, i need to transmit all the 4 packets continuously using the 4 characteristics (each one will notify one packet) i have created.

Without putting any delay i can send only 7 packets, i think that is because of the transmission buffer size (7), when i put delay (0xffff) after transmitting 4 packets i can receive the packet continuously until i disable the service. but the packets sent in one connection interval is less than 2, which should be greater than 4 as i studied in ble document. Because of that delay i am not achieving 4 packets in a connection interval. I know how to use the BLE_EVT_TX_COMPLETE when transmitting large no of packets using single characteristics but when using more no of characteristics i dont have any idea on how check the BLE_EVT_TX_COMPLETE and hold the transmission until the buffer is free. please suggest me an idea to overcome this.

Regards, Balaji

Parents
  • Thank you for the reply, as i posted above i have 4 characteristics each of 20 byte size which will continuously send the data until the packet count reaches 200. Please tell me the exact condition i need to check and where to check before transmitting the each packet, to achieve no packet loss and also the efficient packet transmission in a single connection interval ( >4). Does the condition tx_complete.count = 1 enough to send the next packet to avoid loss? Simple example will help me a lot.

Reply
  • Thank you for the reply, as i posted above i have 4 characteristics each of 20 byte size which will continuously send the data until the packet count reaches 200. Please tell me the exact condition i need to check and where to check before transmitting the each packet, to achieve no packet loss and also the efficient packet transmission in a single connection interval ( >4). Does the condition tx_complete.count = 1 enough to send the next packet to avoid loss? Simple example will help me a lot.

Children
Related