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

Bluetooth 5 retransmission on NRF52832

hi all,

Our application is a peripheral device with sensor data that is sending up to 540kb/s (68kB/s) to the central device (data rate could probably be reduced if necessary). A 5k and a 10k buffer are ready to transmit every 250ms and each of those buffers have to be transmitted within the 250ms. Occasional data loss is acceptable as long as the application layer is aware of it or it is padded in some way. In terms of preference: "Known loss of part of a buffer" > "Known loss of a whole buffer" > "Unknown loss of a whole buffer" > "Unknown loss of part of a buffer"

I think the data rate should be achievable if we use "Writes without responses". I'm trying to understand the tradeoffs for throughput, data reliability and flow control, but i'm a bit confused about the way the layers of the stack interact and about what the Central application layer will see under different modes.

From what i've read the Link Layer is supposed to be a reliable data bearer, i.e. packet loss/corruption is detected and indefinite retransmissions of the packet are attempted.  But also the L2CAP layer offers a number of retransmission options (sections 5.4 & 8 of the standard): basic, retransmission, streaming or enhanced retransmission, each with its own behaviour and timeouts. I can understand the timeouts, but i'm not clear how the two layers interact (especially within a single connection interval). Do both layers handle retransmission and is there any more information / diagrams available on how that works? 

Also in streaming mode, what happens if a packet is lost, i.e. how does the L2CAP layer recombine the fragments if one is missing & what does it pass to the application layer? 

If anyone has any other advice it would be appreciated!

Thanks

Ian

Related