btsnd_hcic_ble_read_remote_feat(p->hci_handle);
} else if (HCI_LE_SLAVE_INIT_FEAT_EXC_SUPPORTED(controller_get_interface()->get_features_ble()->as_array)
&& link_role == HCI_ROLE_SLAVE) {
- btsnd_hcic_ble_read_remote_feat(p->hci_handle);
+ btsnd_hcic_rmt_ver_req (p->hci_handle);
} else {
btm_establish_continue(p);
}
}
#if BLE_INCLUDED == TRUE
if (p_acl_cb->transport == BT_TRANSPORT_LE) {
- if (HCI_LE_DATA_LEN_EXT_SUPPORTED(p_acl_cb->peer_le_features)) {
- uint16_t data_length = controller_get_interface()->get_ble_default_data_packet_length();
- uint16_t data_txtime = controller_get_interface()->get_ble_default_data_packet_txtime();
- btsnd_hcic_ble_set_data_length(p_acl_cb->hci_handle, data_length, data_txtime);
+ if(p_acl_cb->link_role == HCI_ROLE_MASTER) {
+ if (HCI_LE_DATA_LEN_EXT_SUPPORTED(p_acl_cb->peer_le_features)) {
+ uint16_t data_length = controller_get_interface()->get_ble_default_data_packet_length();
+ uint16_t data_txtime = controller_get_interface()->get_ble_default_data_packet_txtime();
+ btsnd_hcic_ble_set_data_length(p_acl_cb->hci_handle, data_length, data_txtime);
+ }
+ l2cble_notify_le_connection (p_acl_cb->remote_addr);
+ } else {
+ //slave role, read remote feature
+ btsnd_hcic_ble_read_remote_feat(p_acl_cb->hci_handle);
}
- l2cble_notify_le_connection (p_acl_cb->remote_addr);
}
#endif
break;
SMP_TRACE_WARNING("%s cannot retrieve LMP version...", __func__);
return false;
}
- SMP_TRACE_WARNING("%s LMP version %d < %d", __func__, acl->lmp_version, version);
+ SMP_TRACE_DEBUG("%s LMP version %d < %d", __func__, acl->lmp_version, version);
return acl->lmp_version < version;
}