Hi!
We are using the nRF52840 and nRF52832 for a product for which good data throughput over BLE is required. (We have picked the S140 and S132).
We send these data using notification only (max 20 byets). (It is a two way data transfer)
We try not to use the ATT_MTU negotiation/feature or the DLE, since we aim for a solution that will work equally well for all devices regardless of stack implementation and DLE support.
- we might be supporting old Androids and iOSs in the future that do not support these.
I have read that it is possible for a peer (both central and peripheral) to transmit several notifications during a single connection interval.
I have several questions regarding this behavior and for the correct configuration of the SoftDevice. (We will be using S140 and S132).
- I have read that I must change the amount of BLE packet buffers in the stack to allow greater buffering of packet in stack, and thereby use of this feature.
- Where can I find this config setting?
- Is it possible that it is not included in my sdk_config.h file?
- Can it be one of these?
- NRF_SDH_BLE_GAP_DATA_LENGTH
- NRF_SDH_BLE_GAP_EVENT_LENGTH
- NRF_SDH_BLE_GATT_MAX_MTU_SIZE
- We will be having several connections ongoing most of the time. How will the stack (softdevice) handle this situation?
- Can the packets be send to the stack randomly by the different underlying services that send notification packets?
- Or do we have to burst transmit like this:
- (peer_1, peer_1, peer_1, peer_1, peer_1, peer_2, peer_2, peer_2, peer_2, peer_2, peer_1, peer_1, peer_1, peer_1, peer_1, ...)
- Or do we have to burst transmit like this:
- Can the packets be send to the stack randomly by the different underlying services that send notification packets?
- What will happen if all the buffered packet in stack is for peer_2, but the next upcoming connection event is for peer_1? (and we have packets to tx for both peers, but happen to buffer the wrong packets in the stack)
- I expect that the stack wont' be able to send any packets!
- Could the solution be just to avoid filling the stack buffers with the packets of just one connection.
- I expect that the stack wont' be able to send any packets!
- How is this different for a peripheral relative to a central device?
Our final goal is to send several notifications (6 or higher) in both directions (or just one direction) during a single connection interval with each notification being max 20 bytes in length.
I understand that indications cannot be buffered like this and needs to be send one-by-one for every other connection interval.
I have read this, but can't tell how to set the buffer size for how many packets the softdevice should be able to accept.
https://devzone.nordicsemi.com/f/nordic-q-a/32581/questions-regarding-ble-throughput
Great thanks. Your time is highly appreciated.
Best regards