consider max acl buffer in Bluetooth module as upper bound for l2cap mtu

This commit is contained in:
matthias.ringwald 2010-09-03 20:17:26 +00:00
parent 5250fb9ea0
commit 9775e25bf2

View File

@ -240,6 +240,11 @@ void l2cap_create_channel_internal(void * connection, btstack_packet_handler_t p
// TODO: emit error event // TODO: emit error event
if (!chan) return; if (!chan) return;
// validate mtu
if (hci_max_acl_data_packet_length() < mtu) {
mtu = hci_max_acl_data_packet_length();
}
// fill in // fill in
BD_ADDR_COPY(chan->address, address); BD_ADDR_COPY(chan->address, address);
chan->psm = psm; chan->psm = psm;
@ -456,6 +461,11 @@ static void l2cap_handle_connection_request(hci_con_handle_t handle, uint8_t sig
channel->local_mtu = service->mtu; channel->local_mtu = service->mtu;
channel->remote_mtu = L2CAP_MINIMAL_MTU; channel->remote_mtu = L2CAP_MINIMAL_MTU;
// validate mtu
if (hci_max_acl_data_packet_length() < channel->local_mtu) {
channel->local_mtu = hci_max_acl_data_packet_length();
}
// set initial state // set initial state
channel->state = L2CAP_STATE_WAIT_CLIENT_ACCEPT_OR_REJECT; channel->state = L2CAP_STATE_WAIT_CLIENT_ACCEPT_OR_REJECT;