From fd48b8f79da8bade1a6c51d74a15996074487220 Mon Sep 17 00:00:00 2001 From: "matthias.ringwald@gmail.com" Date: Thu, 16 Jan 2014 19:55:00 +0000 Subject: [PATCH] send l2cap connection response pending if accept/deny isn't instant --- src/l2cap.c | 7 ++++++- src/l2cap.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/l2cap.c b/src/l2cap.c index 8d92cc2df..5b829848b 100644 --- a/src/l2cap.c +++ b/src/l2cap.c @@ -507,6 +507,11 @@ void l2cap_run(void){ btstack_memory_l2cap_channel_free(channel); break; + case L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_PENDING: + channel->state = L2CAP_STATE_WAIT_CLIENT_ACCEPT_OR_REJECT; + l2cap_send_signaling_packet(channel->handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, 1 , 0); + break; + case L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_ACCEPT: channel->state = L2CAP_STATE_CONFIG; channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ); @@ -831,7 +836,7 @@ static void l2cap_handle_connection_request(hci_con_handle_t handle, uint8_t sig } // set initial state - channel->state = L2CAP_STATE_WAIT_CLIENT_ACCEPT_OR_REJECT; + channel->state = L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_PENDING; channel->state_var = L2CAP_CHANNEL_STATE_VAR_NONE; // add to connections list diff --git a/src/l2cap.h b/src/l2cap.h index 559d8d85c..56c946dbf 100644 --- a/src/l2cap.h +++ b/src/l2cap.h @@ -99,6 +99,7 @@ typedef enum { L2CAP_STATE_OPEN, L2CAP_STATE_WAIT_DISCONNECT, // from application L2CAP_STATE_WILL_SEND_CONNECTION_REQUEST, + L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_PENDING, L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_DECLINE, L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_ACCEPT, L2CAP_STATE_WILL_SEND_DISCONNECT_REQUEST,