multilink central

I have developed a data logger using nrf52832 s112 sdk 17.0.2(nus service).It logs data upto 1mega Bytes,we have a custom buit android app with which we download the data,

i have achieved a very high throughput,the whole data gets downloaded within 60 secs minimum and 80 sec maximum.

we have built a data collector using nrf52840  s140 sdk 17.0.2(nus central) with multilink central which allows 5 central connections at a time,when the link count is set to 3 and the ram is adjusted accordingly ,it works great,the data from 3 loggers is downloaded at the exact same time with hardly a difference of 1-2 secs and it is even stored in sd card simultaniously.

now when the link count is set to 4 and above (ram adjusted) and 4 or more loggers are connected BUT only 3 loggers are sending the data it drastically reduces the data Xfer rate.

that is when 5 stay in connection and only 3 send the data the data rate is reduced. and when 5 send data simultaniously the data rate is reduced further more. 

i have stopped the scanning once the desired no. of loggers are connected just to avoid unwanted notifications to the stack.

It also has a peripheral link which is used only after a button press,so the advertisement is off when data is being downloaded.

data length extention is enabled on central as well as perpheral side,after connecting  the central updates  PHY io 2 mbps.

while downloading the same data in android app it allows 10 devices to download without hampering the data rate,but anything above that has a direct effect on data rate,obviously other factors play a role such a distance.

i want atleast 5 devices to connect to the data collector and download the data with ease.

the total ram available after developing the whole application is 100ish kb in the data logger.

these are the configurations on the central side

#define MIN_CONNECTION_INTERVAL (uint16_t) MSEC_TO_UNITS(7.5, UNIT_1_25_MS) 
#define MAX_CONNECTION_INTERVAL (uint16_t) MSEC_TO_UNITS(500, UNIT_1_25_MS) 
#define SLAVE_LATENCY 0
#define SUPERVISION_TIMEOUT (uint16_t) MSEC_TO_UNITS(4000, UNIT_10_MS)


#define NRF_SDH_BLE_GAP_DATA_LENGTH 251


#define NRF_SDH_BLE_PERIPHERAL_LINK_COUNT 1


#define NRF_SDH_BLE_CENTRAL_LINK_COUNT 5


#define NRF_SDH_BLE_TOTAL_LINK_COUNT 6


#define NRF_SDH_BLE_GAP_EVENT_LENGTH 400


#define NRF_SDH_BLE_GATT_MAX_MTU_SIZE 247


#define NRF_SDH_BLE_GATTS_ATTR_TAB_SIZE 1408


#define NRF_SDH_BLE_VS_UUID_COUNT 1


#define NRF_SDH_BLE_SERVICE_CHANGED 0

Parents Reply Children
Related