l2cap: introduce L2CAP_CHANNEL_TYPE_FIXED_CLASSIC

This commit is contained in:
Matthias Ringwald 2022-09-07 14:46:39 +02:00
parent 34be587822
commit 8d9f906bb8
2 changed files with 9 additions and 7 deletions

View File

@ -2597,25 +2597,26 @@ static bool l2cap_channel_ready_to_send(l2cap_channel_t * channel){
// send if we have more data and remote windows isn't full yet
if (channel->mode == L2CAP_CHANNEL_MODE_ENHANCED_RETRANSMISSION) {
if (channel->unacked_frames >= btstack_min(channel->num_stored_tx_frames, channel->remote_tx_window_size)) return false;
return hci_can_send_acl_packet_now(channel->con_handle) != 0;
return hci_can_send_acl_packet_now(channel->con_handle);
}
#endif
if (!channel->waiting_for_can_send_now) return false;
return hci_can_send_acl_packet_now(channel->con_handle) != 0;
return hci_can_send_acl_packet_now(channel->con_handle);
case L2CAP_CHANNEL_TYPE_FIXED_CLASSIC:
case L2CAP_CHANNEL_TYPE_CONNECTIONLESS:
if (!channel->waiting_for_can_send_now) return false;
return hci_can_send_acl_classic_packet_now() != 0;
return hci_can_send_acl_classic_packet_now();
#endif
#ifdef ENABLE_BLE
case L2CAP_CHANNEL_TYPE_FIXED_LE:
if (!channel->waiting_for_can_send_now) return false;
return hci_can_send_acl_le_packet_now() != 0;
return hci_can_send_acl_le_packet_now();
#ifdef ENABLE_L2CAP_LE_CREDIT_BASED_FLOW_CONTROL_MODE
case L2CAP_CHANNEL_TYPE_CHANNEL_CBM:
if (channel->state != L2CAP_STATE_OPEN) return false;
if (channel->send_sdu_buffer == NULL) return false;
if (channel->credits_outgoing == 0u) return false;
return hci_can_send_acl_packet_now(channel->con_handle) != 0;
return hci_can_send_acl_packet_now(channel->con_handle);
#endif
#endif
#ifdef ENABLE_L2CAP_ENHANCED_CREDIT_BASED_FLOW_CONTROL_MODE
@ -2623,7 +2624,7 @@ static bool l2cap_channel_ready_to_send(l2cap_channel_t * channel){
if (channel->state != L2CAP_STATE_OPEN) return false;
if (channel->send_sdu_buffer == NULL) return false;
if (channel->credits_outgoing == 0u) return false;
return hci_can_send_acl_packet_now(channel->con_handle) != 0;
return hci_can_send_acl_packet_now(channel->con_handle);
#endif
default:
return false;

View File

@ -124,7 +124,8 @@ typedef enum {
L2CAP_CHANNEL_TYPE_CLASSIC, // Classic Basic or ERTM
L2CAP_CHANNEL_TYPE_CONNECTIONLESS, // Classic Connectionless
L2CAP_CHANNEL_TYPE_CHANNEL_CBM, // LE
L2CAP_CHANNEL_TYPE_FIXED_LE, // LE ATT + SM, Classic SM
L2CAP_CHANNEL_TYPE_FIXED_LE, // LE ATT + SM
L2CAP_CHANNEL_TYPE_FIXED_CLASSIC, // Classic SM
L2CAP_CHANNEL_TYPE_CHANNEL_ECBM // Classic + LE
} l2cap_channel_type_t;