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

Data loss while sending large data by notifications

log1.pcapHi, I am developing a peripheral application that can send around 68k of data in the notifications to the central Notifications are send at the frequency of 284 notifications per sec, but number of notifications are loss after sometime, At the central, only around 61k bytes are received. I have set min connection interval as 36ms and max connection interval as 75ms, slave latency is set 3 and connection supervision timeout is 4 sec.

I have increased number of bytes that are send only after NRF_SUCCESS is received in sd_ble_gatts_hvx, if BLE_ERROR_NO_TX_PACKETS is received as return code then notification will be send again on receiving BLE_EVT_TX_COMPLETE

Large chunk is loss almost after some time, I am attaching the sniffer log with it

I am using s132 v2.0 soft device

Parents
  • FormerMember
    0 FormerMember

    What do you mean by notifications are missing? Is some data lost, or is the transfer slower than expected? This blog post contains the number of packets per connection interval that various phones can handle.

    How do you handle the other error codes that can be returned from sd_ble_gatts_hvx(..)? The error codes NRF_ERROR_INVALID_STATE and NRF_ERROR_BUSY do also indicate that the system is busy or the system is currently in an invalid state.

    Update 06.12.2016: Could you use ble_app_uart_test_throughput.zip (SDK 12) to check if any data is lost with that example?

  • There is data loss, On peripheral, I have taken care of handling error codes like BLE_ERROR_NO_TX_PACKETS and NRF_SUCCESS to continue sending notification in a while loop And for any other error code other than NRF_SUCCESS or BLE_ERROR_NO_TX_PACKETS, Application stops sending notification. next notification is send only when NRF_SUCCESS is received. And I have checked on peripheral side, that it is successfully sending all the notifications but all are not received on central side. I have also attached log1.pcap in the question

Reply
  • There is data loss, On peripheral, I have taken care of handling error codes like BLE_ERROR_NO_TX_PACKETS and NRF_SUCCESS to continue sending notification in a while loop And for any other error code other than NRF_SUCCESS or BLE_ERROR_NO_TX_PACKETS, Application stops sending notification. next notification is send only when NRF_SUCCESS is received. And I have checked on peripheral side, that it is successfully sending all the notifications but all are not received on central side. I have also attached log1.pcap in the question

Children
No Data
Related