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

Is there some sort of assurance that ble packets get to the application undamaged and in the correct order?

Hey Guys,

im working on some sort of application transport layer for ble and have some questions to better plan what i need and what is kind of redundant. Is it correct that in the lower layers of the ble stack there is a crc check for every packet and the packets get retransmitted in case of error? Because write_request and indications are drastically limiting the troughput so only writes and notifications should be used to send messages consisting of multiple successive send operations. So is there a chance of packetloss without recognizing it ? Chip is nRF15422 with Softdevice S310.

Thank you for your help :)

Parents
  • If you send notifications from the nRF51422 it is not possible to overwrite packet buffers. So the packet will be send until acknoledged by the peer. Bluetooth low energy uses CRC and the packet contains a sequence number and next expected sequence number to ack/nack a packet. So if you are sending data from a nordic device to another nordic device the packet will be retransmittet until received by the peer or until you get a disconnect, in case the peer moved out of range.

    For other implementations it might be possible to overwrite the tx buffers. e.g. if you are sending data from iOS to a nordic device doing multiple writes it is possible to overwrite the tx buffers in iOS. So if you are transfering a lot of data from iOS to the nordic device you should consider adding a CRC check over a given number of packets to make sure you received all the packets. e.g. our DFU service.

  • Thank you :) So the BLE_EVT_TX_COMPLETE is generated everytime a packet is transmitted and a part of the buffer is freed or only when the complete buffer is freed?

Reply Children
No Data
Related