This is an automated email from the ASF dual-hosted git repository. sjanc pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-nimble.git
commit 2f44ac618c85bd451fc14ad4c17ca2bfffcb3110 Author: Piotr Narajowski <[email protected]> AuthorDate: Fri Mar 13 15:04:42 2026 +0100 apps/bttester: send disconnected event in case of l2cap conn req failure This change allows sending a BTP_L2CAP_EV_DISCONNECTED event containing an error code when L2CAP Connection request is rejected. Previously, no tester event was triggered in this scenario, which made it impossible to determine the reason for the connection failure. --- apps/bttester/src/btp_l2cap.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/apps/bttester/src/btp_l2cap.c b/apps/bttester/src/btp_l2cap.c index 8e1e855ec..06976188f 100644 --- a/apps/bttester/src/btp_l2cap.c +++ b/apps/bttester/src/btp_l2cap.c @@ -207,7 +207,7 @@ connected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, static void disconnected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, - struct ble_l2cap_chan_info *chan_info, void *arg) + struct ble_l2cap_chan_info *chan_info, int status, void *arg) { struct btp_l2cap_disconnected_ev ev; struct ble_gap_conn_desc desc; @@ -215,9 +215,15 @@ disconnected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan, memset(&ev, 0, sizeof(struct btp_l2cap_disconnected_ev)); - channel = find_channel(chan); - assert(channel != NULL); + if (status != 0 && status != BLE_L2CAP_EVENT_COC_DISCONNECTED) { + /* Conection request failed */ + channel = get_free_channel(); + } else { + channel = find_channel(chan); + assert(channel != NULL); + } + ev.result = status; ev.chan_id = channel->chan_id; ev.psm = chan_info->psm; @@ -266,6 +272,8 @@ tester_l2cap_event(struct ble_l2cap_event *event, void *arg) if (event->connect.status) { console_printf("LE COC error: %d\n", event->connect.status); + disconnected_cb(event->connect.conn_handle, event->connect.chan, + &chan_info, (uint8_t)event->connect.status, arg); return 0; } @@ -290,8 +298,8 @@ tester_l2cap_event(struct ble_l2cap_event *event, void *arg) console_printf("LE CoC disconnected, chan: 0x%08lx\n", (uint32_t) event->disconnect.chan); - disconnected_cb(event->disconnect.conn_handle, - event->disconnect.chan, &chan_info, arg); + disconnected_cb(event->disconnect.conn_handle, event->disconnect.chan, + &chan_info, (uint8_t)event->connect.status, arg); return 0; case BLE_L2CAP_EVENT_COC_ACCEPT: ble_l2cap_get_chan_info(event->accept.chan,
