Skip to content

Commit 091ed5b

Browse files
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.
1 parent 412642c commit 091ed5b

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

apps/bttester/src/btp_l2cap.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,17 +207,23 @@ connected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan,
207207

208208
static void
209209
disconnected_cb(uint16_t conn_handle, struct ble_l2cap_chan *chan,
210-
struct ble_l2cap_chan_info *chan_info, void *arg)
210+
struct ble_l2cap_chan_info *chan_info, int status, void *arg)
211211
{
212212
struct btp_l2cap_disconnected_ev ev;
213213
struct ble_gap_conn_desc desc;
214214
struct channel *channel;
215215

216216
memset(&ev, 0, sizeof(struct btp_l2cap_disconnected_ev));
217217

218-
channel = find_channel(chan);
219-
assert(channel != NULL);
218+
if (status != 0) {
219+
/* Conection request failed */
220+
channel = get_free_channel();
221+
} else {
222+
channel = find_channel(chan);
223+
assert(channel != NULL);
224+
}
220225

226+
ev.result = status;
221227
ev.chan_id = channel->chan_id;
222228
ev.psm = chan_info->psm;
223229

@@ -266,6 +272,8 @@ tester_l2cap_event(struct ble_l2cap_event *event, void *arg)
266272

267273
if (event->connect.status) {
268274
console_printf("LE COC error: %d\n", event->connect.status);
275+
disconnected_cb(event->connect.conn_handle, event->connect.chan,
276+
&chan_info, (uint8_t)event->connect.status, arg);
269277
return 0;
270278
}
271279

@@ -290,8 +298,8 @@ tester_l2cap_event(struct ble_l2cap_event *event, void *arg)
290298
console_printf("LE CoC disconnected, chan: 0x%08lx\n",
291299
(uint32_t) event->disconnect.chan);
292300

293-
disconnected_cb(event->disconnect.conn_handle,
294-
event->disconnect.chan, &chan_info, arg);
301+
disconnected_cb(event->disconnect.conn_handle, event->disconnect.chan,
302+
&chan_info, (uint8_t)event->connect.status, arg);
295303
return 0;
296304
case BLE_L2CAP_EVENT_COC_ACCEPT:
297305
ble_l2cap_get_chan_info(event->accept.chan,

0 commit comments

Comments
 (0)