tests: Bluetooth: bsim: Increase to 250 simultaneous connections.
Increase to 250 simultaneous connections in the BabbleSim test. Update connection interval to accommodate 250 non-overlapping connections and a scan window. And make the use of is_disconnecting flag consistent between central and peripheral sample. Signed-off-by: Vinayak Kariappa Chettimada <vich@nordicsemi.no>
This commit is contained in:
parent
992d133b42
commit
7b9ef30b53
5 changed files with 28 additions and 18 deletions
|
@ -20,11 +20,11 @@
|
||||||
#include <bluetooth/gatt.h>
|
#include <bluetooth/gatt.h>
|
||||||
#include <sys/byteorder.h>
|
#include <sys/byteorder.h>
|
||||||
|
|
||||||
#define SCAN_INTERVAL 0x0140 /* 200 ms */
|
#define SCAN_INTERVAL 0x0640 /* 1000 ms */
|
||||||
#define SCAN_WINDOW 0x0030 /* 30 ms */
|
#define SCAN_WINDOW 0x0030 /* 30 ms */
|
||||||
#define INIT_INTERVAL 0x0010 /* 10 ms */
|
#define INIT_INTERVAL 0x0010 /* 10 ms */
|
||||||
#define INIT_WINDOW 0x0010 /* 10 ms */
|
#define INIT_WINDOW 0x0010 /* 10 ms */
|
||||||
#define CONN_INTERVAL 0x00A0 /* 200 ms */
|
#define CONN_INTERVAL 0x0320 /* 1000 ms */
|
||||||
#define CONN_LATENCY 0
|
#define CONN_LATENCY 0
|
||||||
#define CONN_TIMEOUT MIN(MAX((CONN_INTERVAL * 125 * \
|
#define CONN_TIMEOUT MIN(MAX((CONN_INTERVAL * 125 * \
|
||||||
MAX(CONFIG_BT_MAX_CONN, 6) / 1000), 10), 3200)
|
MAX(CONFIG_BT_MAX_CONN, 6) / 1000), 10), 3200)
|
||||||
|
@ -74,6 +74,7 @@ static void device_found(const bt_addr_le_t *addr, int8_t rssi, uint8_t type,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bt_le_scan_stop()) {
|
if (bt_le_scan_stop()) {
|
||||||
|
printk("Scanning successfully stopped\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,10 +312,10 @@ int init_central(uint8_t iterations)
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
while (conn_count < CONFIG_BT_MAX_CONN) {
|
while (conn_count < CONFIG_BT_MAX_CONN) {
|
||||||
k_sleep(K_SECONDS(1));
|
k_sleep(K_MSEC(10));
|
||||||
}
|
}
|
||||||
|
|
||||||
k_sleep(K_SECONDS(10));
|
k_sleep(K_SECONDS(60));
|
||||||
|
|
||||||
if (!iterations) {
|
if (!iterations) {
|
||||||
break;
|
break;
|
||||||
|
@ -327,8 +328,9 @@ int init_central(uint8_t iterations)
|
||||||
bt_conn_foreach(BT_CONN_TYPE_LE, disconnect, NULL);
|
bt_conn_foreach(BT_CONN_TYPE_LE, disconnect, NULL);
|
||||||
|
|
||||||
while (is_disconnecting) {
|
while (is_disconnecting) {
|
||||||
k_sleep(K_SECONDS(1));
|
k_sleep(K_MSEC(10));
|
||||||
}
|
}
|
||||||
|
printk("All disconnected.\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -99,6 +99,7 @@ static void disconnected(struct bt_conn *conn, uint8_t reason)
|
||||||
printk("Disconnected %s (reason 0x%02x)\n", addr, reason);
|
printk("Disconnected %s (reason 0x%02x)\n", addr, reason);
|
||||||
|
|
||||||
if ((conn_count == 1U) && is_disconnecting) {
|
if ((conn_count == 1U) && is_disconnecting) {
|
||||||
|
is_disconnecting = false;
|
||||||
k_work_submit(&work_adv_start);
|
k_work_submit(&work_adv_start);
|
||||||
}
|
}
|
||||||
conn_count--;
|
conn_count--;
|
||||||
|
@ -256,7 +257,7 @@ int init_peripheral(uint8_t iterations)
|
||||||
|
|
||||||
/* wait for connection attempts on all identities */
|
/* wait for connection attempts on all identities */
|
||||||
do {
|
do {
|
||||||
k_sleep(K_MSEC(100));
|
k_sleep(K_MSEC(10));
|
||||||
|
|
||||||
id_count = 0xFF;
|
id_count = 0xFF;
|
||||||
bt_id_get(NULL, &id_count);
|
bt_id_get(NULL, &id_count);
|
||||||
|
@ -279,10 +280,9 @@ int init_peripheral(uint8_t iterations)
|
||||||
|
|
||||||
printk("Wait for disconnections...\n");
|
printk("Wait for disconnections...\n");
|
||||||
is_disconnecting = true;
|
is_disconnecting = true;
|
||||||
while (conn_count != 0) {
|
while (is_disconnecting) {
|
||||||
k_sleep(K_MSEC(10));
|
k_sleep(K_MSEC(10));
|
||||||
}
|
}
|
||||||
is_disconnecting = false;
|
|
||||||
printk("All disconnected.\n");
|
printk("All disconnected.\n");
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
@ -296,11 +296,11 @@ int init_peripheral(uint8_t iterations)
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
uint16_t wait = 1200U;
|
uint16_t wait = 6200U;
|
||||||
|
|
||||||
/* Maximum duration without connection count change, central
|
/* Maximum duration without connection count change,
|
||||||
* waiting before disconnecting all its connections plus few
|
* central waiting before disconnecting all its
|
||||||
* seconds of margin.
|
* connections plus few seconds of margin.
|
||||||
*/
|
*/
|
||||||
while ((prev_count == conn_count) && wait) {
|
while ((prev_count == conn_count) && wait) {
|
||||||
wait--;
|
wait--;
|
||||||
|
|
|
@ -10,8 +10,8 @@ CONFIG_BT_AUTO_PHY_UPDATE=y
|
||||||
CONFIG_BT_USER_DATA_LEN_UPDATE=y
|
CONFIG_BT_USER_DATA_LEN_UPDATE=y
|
||||||
CONFIG_BT_AUTO_DATA_LEN_UPDATE=y
|
CONFIG_BT_AUTO_DATA_LEN_UPDATE=y
|
||||||
|
|
||||||
CONFIG_BT_MAX_CONN=62
|
CONFIG_BT_MAX_CONN=250
|
||||||
CONFIG_BT_ID_MAX=62
|
CONFIG_BT_ID_MAX=250
|
||||||
|
|
||||||
# L2CAP, ATT and SMP usage cause data transmission deadlock due to shortage
|
# L2CAP, ATT and SMP usage cause data transmission deadlock due to shortage
|
||||||
# of buffers when transactions crossover amongst the connections in the same
|
# of buffers when transactions crossover amongst the connections in the same
|
||||||
|
@ -22,7 +22,7 @@ CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=n
|
||||||
# CONFIG_BT_GATT_CLIENT=y
|
# CONFIG_BT_GATT_CLIENT=y
|
||||||
|
|
||||||
# CONFIG_BT_SMP=y
|
# CONFIG_BT_SMP=y
|
||||||
# CONFIG_BT_MAX_PAIRED=62
|
# CONFIG_BT_MAX_PAIRED=250
|
||||||
|
|
||||||
CONFIG_BT_BUF_CMD_TX_SIZE=255
|
CONFIG_BT_BUF_CMD_TX_SIZE=255
|
||||||
CONFIG_BT_BUF_EVT_RX_SIZE=255
|
CONFIG_BT_BUF_EVT_RX_SIZE=255
|
||||||
|
@ -35,3 +35,11 @@ CONFIG_BT_CTLR_DATA_LENGTH_MAX=251
|
||||||
# Each PHY update can pause connections for 6 interval hence to let other
|
# Each PHY update can pause connections for 6 interval hence to let other
|
||||||
# parallel connection establishment to succeed increase Rx buffer count.
|
# parallel connection establishment to succeed increase Rx buffer count.
|
||||||
CONFIG_BT_CTLR_RX_BUFFERS=6
|
CONFIG_BT_CTLR_RX_BUFFERS=6
|
||||||
|
|
||||||
|
# Provide enough spacing between connections so that multiple peripheral roles
|
||||||
|
# when connected to a single peer device (peripheral_identity sample) have
|
||||||
|
# room for window widening and do not overlap with each other in that single
|
||||||
|
# peer device. This can be tuned based on connection interval and clock
|
||||||
|
# accuracy, current value here is sufficient for 500ppm at 1 second interval.
|
||||||
|
CONFIG_BT_CTLR_ADVANCED_FEATURES=y
|
||||||
|
CONFIG_BT_CTLR_SCHED_ADVANCED_CENTRAL_CONN_SPACING=1000
|
||||||
|
|
|
@ -81,7 +81,7 @@ exit:
|
||||||
|
|
||||||
static void test_multiple_init(void)
|
static void test_multiple_init(void)
|
||||||
{
|
{
|
||||||
bst_ticker_set_next_tick_absolute(600e6);
|
bst_ticker_set_next_tick_absolute(4500e6);
|
||||||
bst_result = In_progress;
|
bst_result = In_progress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ function Execute(){
|
||||||
compile it?)\e[39m"
|
compile it?)\e[39m"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
timeout 300 $@ & process_ids="$process_ids $!"
|
timeout 900 $@ & process_ids="$process_ids $!"
|
||||||
}
|
}
|
||||||
|
|
||||||
: "${BSIM_OUT_PATH:?BSIM_OUT_PATH must be defined}"
|
: "${BSIM_OUT_PATH:?BSIM_OUT_PATH must be defined}"
|
||||||
|
@ -30,7 +30,7 @@ Execute ./bs_${BOARD}_tests_bluetooth_bsim_bt_bsim_test_multiple_prj_conf\
|
||||||
-v=${verbosity_level} -s=${simulation_id} -d=1 -testid=peripheral
|
-v=${verbosity_level} -s=${simulation_id} -d=1 -testid=peripheral
|
||||||
|
|
||||||
Execute ./bs_2G4_phy_v1 -v=${verbosity_level} -s=${simulation_id} \
|
Execute ./bs_2G4_phy_v1 -v=${verbosity_level} -s=${simulation_id} \
|
||||||
-D=2 -sim_length=600e6 $@
|
-D=2 -sim_length=4500e6 $@
|
||||||
|
|
||||||
for process_id in $process_ids; do
|
for process_id in $process_ids; do
|
||||||
wait $process_id || let "exit_code=$?"
|
wait $process_id || let "exit_code=$?"
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue