For a bachelor project I'm currently testing the throughput of the nRF52840 Dongle with pc-ble-driver-py and it appears that the pc-ble-driver-py has a maximum notification data rate of roughly 700 Bytes/sec.
In my setup I have a peripheral which sends a notification every 20ms to the nRF Dongle.
I used both blatann and a modified version of the heart_rate_collector.py / nus_collector (on Windows 10) to enable notifications from the peripheral and I can only handle notifications every 30ms in both cases. (rarely, the time between two consecutive notification event is also roughly 15ms).
Setting the minimum connection time interval to 7.5ms did not improve the performance either.
Additionally, by using nRF Connect, I did receive all notifications without problem.
Does this issue happen due to the Python binding? Is there anything i could do to increase the throughput?
Another question regarding the maximum number of peripherals: Using blatann I cannot set the amount of peripherals to more than 4. I would receive the error:
pc_ble_driver_py.exceptions.NordicSemiException: Failed to ble_enable. Error code: NrfError.no_mem
Does this also happen to the Python binding?
Note: About the data throughtput: On blatann I noticed that the ble_event_handler handles every x * 15ms the next ble_event (where x being a number). However increasing the frequency of the notification from the peripheral side (to 100Hz) did not change the behaviour on the driver-py side.