Configuration:
(1) 52832 PCA10040;(2) softdevice: s132_nrf52_4.0.2; (3) sdk 13.0.0(4) 52832 configure 4 conccurent peripheral connections:
ble_cfg_t ble_cfg;
memset(&ble_cfg, 0, sizeof(ble_cfg));
ble_cfg.gap_cfg.role_count_cfg.periph_role_count = 4;
ble_cfg.gap_cfg.role_count_cfg.central_role_count = 0;
ble_cfg.gap_cfg.role_count_cfg.central_sec_count = 0;
err_code = sd_ble_cfg_set(BLE_GAP_CFG_ROLE_COUNT, &ble_cfg, ram_start);
Attachments of Log: (1)52832 conn handle 2 fail .log: 52832 RTT View log; (2) conn handle 2 fail.pcap: wireshark log by sniffer
Problem description:
(1) APP triggers 1st connection and connection parameter update is completed:
Such connection is established on evt.common_evt.conn_handle =2 in 52832:
(2) wireshark log confirms APP sends exchange MTU request to 52832 , however no request is received in 52832 (RTT log does not contain "AAAA nrf_ble_gatt_on_ble_evt id:18 " where 18 =BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST ). It causes exchange MTU procedure fails and connection procedure is not completed.
(3) APP triggers 2nd connection of 52832, and it is OK now.
From 52832 RTT log, conn_handle =1 :
Conclusion: Connection fails on evt.common_evt.conn_handle=2 every time. However it is OK on conn_handle=1 for the same APP. If I set periph_role_count=2, it means it is impossible to conn_handle = 2 (range is [0,1] for 2 connections). Such problem does not exist. I suspect some bug for conn_handle=2 for multiple peripheral connections.
Please help check it. Thanks.