mirror of
https://github.com/bluekitchen/btstack.git
synced 2025-04-17 20:42:47 +00:00
l2cap: revert 5fe48d6 due to regression
This commit is contained in:
parent
ccf862b42f
commit
59607b77e5
@ -1447,12 +1447,11 @@ static bool l2cap_run_for_classic_channel(l2cap_channel_t * channel){
|
|||||||
uint8_t config_options[10];
|
uint8_t config_options[10];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!hci_can_send_acl_packet_now(channel->con_handle)) return false;
|
|
||||||
|
|
||||||
switch (channel->state){
|
switch (channel->state){
|
||||||
|
|
||||||
case L2CAP_STATE_WAIT_INCOMING_SECURITY_LEVEL_UPDATE:
|
case L2CAP_STATE_WAIT_INCOMING_SECURITY_LEVEL_UPDATE:
|
||||||
case L2CAP_STATE_WAIT_CLIENT_ACCEPT_OR_REJECT:
|
case L2CAP_STATE_WAIT_CLIENT_ACCEPT_OR_REJECT:
|
||||||
|
if (!hci_can_send_acl_packet_now(channel->con_handle)) return false;
|
||||||
if (channel->state_var & L2CAP_CHANNEL_STATE_VAR_SEND_CONN_RESP_PEND) {
|
if (channel->state_var & L2CAP_CHANNEL_STATE_VAR_SEND_CONN_RESP_PEND) {
|
||||||
channelStateVarClearFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONN_RESP_PEND);
|
channelStateVarClearFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONN_RESP_PEND);
|
||||||
l2cap_send_signaling_packet(channel->con_handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, 1, 0);
|
l2cap_send_signaling_packet(channel->con_handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, 1, 0);
|
||||||
@ -1460,6 +1459,7 @@ static bool l2cap_run_for_classic_channel(l2cap_channel_t * channel){
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_STATE_WILL_SEND_CREATE_CONNECTION:
|
case L2CAP_STATE_WILL_SEND_CREATE_CONNECTION:
|
||||||
|
if (!hci_can_send_command_packet_now()) break;
|
||||||
// send connection request - set state first
|
// send connection request - set state first
|
||||||
channel->state = L2CAP_STATE_WAIT_CONNECTION_COMPLETE;
|
channel->state = L2CAP_STATE_WAIT_CONNECTION_COMPLETE;
|
||||||
// BD_ADDR, Packet_Type, Page_Scan_Repetition_Mode, Reserved, Clock_Offset, Allow_Role_Switch
|
// BD_ADDR, Packet_Type, Page_Scan_Repetition_Mode, Reserved, Clock_Offset, Allow_Role_Switch
|
||||||
@ -1468,6 +1468,7 @@ static bool l2cap_run_for_classic_channel(l2cap_channel_t * channel){
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_DECLINE:
|
case L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_DECLINE:
|
||||||
|
if (!hci_can_send_acl_packet_now(channel->con_handle)) return false;
|
||||||
channel->state = L2CAP_STATE_INVALID;
|
channel->state = L2CAP_STATE_INVALID;
|
||||||
l2cap_send_signaling_packet(channel->con_handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, channel->reason, 0);
|
l2cap_send_signaling_packet(channel->con_handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, channel->reason, 0);
|
||||||
// discard channel - l2cap_finialize_channel_close without sending l2cap close event
|
// discard channel - l2cap_finialize_channel_close without sending l2cap close event
|
||||||
@ -1477,12 +1478,14 @@ static bool l2cap_run_for_classic_channel(l2cap_channel_t * channel){
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_ACCEPT:
|
case L2CAP_STATE_WILL_SEND_CONNECTION_RESPONSE_ACCEPT:
|
||||||
|
if (!hci_can_send_acl_packet_now(channel->con_handle)) return false;
|
||||||
channel->state = L2CAP_STATE_CONFIG;
|
channel->state = L2CAP_STATE_CONFIG;
|
||||||
channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ);
|
channelStateVarSetFlag(channel, L2CAP_CHANNEL_STATE_VAR_SEND_CONF_REQ);
|
||||||
l2cap_send_signaling_packet(channel->con_handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, 0, 0);
|
l2cap_send_signaling_packet(channel->con_handle, CONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_STATE_WILL_SEND_CONNECTION_REQUEST:
|
case L2CAP_STATE_WILL_SEND_CONNECTION_REQUEST:
|
||||||
|
if (!hci_can_send_acl_packet_now(channel->con_handle)) return false;
|
||||||
// success, start l2cap handshake
|
// success, start l2cap handshake
|
||||||
channel->local_sig_id = l2cap_next_sig_id();
|
channel->local_sig_id = l2cap_next_sig_id();
|
||||||
channel->state = L2CAP_STATE_WAIT_CONNECT_RSP;
|
channel->state = L2CAP_STATE_WAIT_CONNECT_RSP;
|
||||||
@ -1491,6 +1494,7 @@ static bool l2cap_run_for_classic_channel(l2cap_channel_t * channel){
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_STATE_CONFIG:
|
case L2CAP_STATE_CONFIG:
|
||||||
|
if (!hci_can_send_acl_packet_now(channel->con_handle)) return false;
|
||||||
#ifdef ENABLE_L2CAP_ENHANCED_RETRANSMISSION_MODE
|
#ifdef ENABLE_L2CAP_ENHANCED_RETRANSMISSION_MODE
|
||||||
// fallback to basic mode if ERTM requested but not not supported by remote
|
// fallback to basic mode if ERTM requested but not not supported by remote
|
||||||
if (channel->mode == L2CAP_CHANNEL_MODE_ENHANCED_RETRANSMISSION){
|
if (channel->mode == L2CAP_CHANNEL_MODE_ENHANCED_RETRANSMISSION){
|
||||||
@ -1547,6 +1551,7 @@ static bool l2cap_run_for_classic_channel(l2cap_channel_t * channel){
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case L2CAP_STATE_WILL_SEND_DISCONNECT_RESPONSE:
|
case L2CAP_STATE_WILL_SEND_DISCONNECT_RESPONSE:
|
||||||
|
if (!hci_can_send_acl_packet_now(channel->con_handle)) return false;
|
||||||
channel->state = L2CAP_STATE_INVALID;
|
channel->state = L2CAP_STATE_INVALID;
|
||||||
l2cap_send_signaling_packet( channel->con_handle, DISCONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid);
|
l2cap_send_signaling_packet( channel->con_handle, DISCONNECTION_RESPONSE, channel->remote_sig_id, channel->local_cid, channel->remote_cid);
|
||||||
// we don't start an RTX timer for a disconnect - there's no point in closing the channel if the other side doesn't respond :)
|
// we don't start an RTX timer for a disconnect - there's no point in closing the channel if the other side doesn't respond :)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user