Hi,
Device: NRF53
I'm trying to send 3 notify packets in a 15ms connection internal but I can send 2.
I'm using Nrf connect and Zephyr. is there a limit or a define to set this.
Thank you for any guidance and help
Regards
I did some testing and was able to send 3 packets in a connection interval.
I modifed the peripheral_uart sample from NCS v1.6.0 such that a 15 ms connection interval would be used:
diff --git a/samples/bluetooth/peripheral_uart/prj.conf b/samples/bluetooth/peripheral_uart/prj.conf index cd6df0664..2decfd725 100644 --- a/samples/bluetooth/peripheral_uart/prj.conf +++ b/samples/bluetooth/peripheral_uart/prj.conf @@ -48,3 +48,12 @@ CONFIG_LOG_BACKEND_RTT=y CONFIG_LOG_BACKEND_UART=n CONFIG_ASSERT=y + +CONFIG_DEBUG_OPTIMIZATIONS=y + + + +CONFIG_BT_GAP_AUTO_UPDATE_CONN_PARAMS=y +CONFIG_BT_PERIPHERAL_PREF_MIN_INT=12 +CONFIG_BT_PERIPHERAL_PREF_MAX_INT=12 +CONFIG_BT_PERIPHERAL_PREF_SLAVE_LATENCY=0 diff --git a/samples/bluetooth/peripheral_uart/src/main.c b/samples/bluetooth/peripheral_uart/src/main.c index cf51a899f..0e9bbc03d 100644 --- a/samples/bluetooth/peripheral_uart/src/main.c +++ b/samples/bluetooth/peripheral_uart/src/main.c @@ -288,9 +288,34 @@ static void security_changed(struct bt_conn *conn, bt_security_t level, } #endif +//struct bt_conn *conn, uint16_t interval, uint16_t latency, uint16_t timeout +static void le_param_updated(struct bt_conn *conn, uint16_t interval, uint16_t latency, uint16_t timeout) +{ + struct bt_conn_info info; + char addr[BT_ADDR_LE_STR_LEN]; + + if(bt_conn_get_info(conn, &info)) + { + printk("Could not parse connection info\n"); + } + else + { + bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr)); + + printk("Connection parameters updated! \n\ + Connected to: %s \n\ + New Connection Interval: %u \n\ + New Slave Latency: %u \n\ + New Connection Supervisory Timeout: %u \n" + , addr, info.le.interval, info.le.latency, info.le.timeout); + } +} + + static struct bt_conn_cb conn_callbacks = { .connected = connected, .disconnected = disconnected, + .le_param_updated = le_param_updated, #ifdef CONFIG_BT_NUS_SECURITY_ENABLED .security_changed = security_changed, #endif @@ -479,6 +504,8 @@ static void configure_gpio(void) } } + + void main(void) { int blink_status = 0;
Then I programmed the peripheral_uart on an nRF52 DK and the central_uart on an nRF53 DK and sniffed the data using a third nordic device and the nRF Sniffer software.
I sent a long string from the peripheral_uart sample to the central_uart
Which resulted in the following output in the nRF Sniffer:
As you can see, three packets are sent within a single connection event
Best regards,
Simon