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

Understanding ble_app_att_mtu_throughput example

How do I calculate round trip delay (time taken for packet to travel from peripheral to central(PC) to peripheral again)? Is the existing time calculation in the example code from peripheral to host(central)?

If I enable Connection event extension, will there be any problem at host side? My peripheral is nrf52 device and host is computer (Windows or Mac).

How many packets can you send on each connection event? How many no. of packets/interval is supported by Windows & Mac & S132? If it is 6 packets per interval, does a byte mean 1 packet?

Can the connection interval be configured by the host(application on windows/mac machine)? I read that the connection intervals for Android and ios devices is different. Will defining min & max values suffice?

How much should be att mtu size & LL payload size if I am sending 25 bytes at a time?

Does HID work faster? Can I do a loopback test by combining throughput example & hid example? Will it show correct results?

As acknowledgement reduces throughput, how can I do a loopback test with & without ACK? Is there a setting to enable/disable ack? Is it ble_srv_is_notification_enabled()?

  • Hi,

    1. To calculate round trip delay you will need to have some kind of timestamp to track deviation over time. At least from peripheral to central, the output on the UART will have a timestamp. The timestamp should be enabled by default in the throughput example.

    2. I don't think it should be a problem with having connection event length extension enabled. There will be a negotiation between peripheral and central upon connection. If the central doesn't support this feature, then it will be disabled.

    3. How many packets you can send each connection event, depends on how big each packet is. And whether you have connection event length extension enabled or not. You can read more about this for s132 in the specifiaction, under chapter "11.3 Radio Notification on connection event as a peripheral". How many packets/interval is supported on Windows/Mac I can't say for sure as this is dependent on the bluetooth chipset.

    4. Not sure what you mean by this "If it is 6 packets per interval, does a byte mean 1 packet?", but a packet can be more than a byte.

    5. Like with Android and iOS, I think there is a minimum connection interval that Windows/Mac can accept, but it should be enough to define min & max values. They will negotiate the exact connection interval and in the end it will be determined by the central.

    6. The ATT_MTU size determines how big your payloads can be, which means that it has to be bigger than 25(Also include overhead). Your payload size should be equal to how many bytes you want to send.

    7. I don't think it is faster. The throughput example have set the different connection parameters so that you can get the highest throughput possible. It is also possible to change these parameters to see how it affects the throughput.

    8. You can't disable acknowledgement. When using notifaction it will ACK on the link layer.

    I hope this helps.

  • It is a function for retrieving the counter value. The counter is configured to tick once every 1 millisecond.

Related