Loading system/bta/ag/bta_ag_act.cc +1 −1 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ void bta_ag_start_open(tBTA_AG_SCB* p_scb, const tBTA_AG_DATA& data) { /* Let the incoming connection goes through. */ /* Issue collision for this scb for now. */ /* We will decide what to do when we find incoming connetion later. */ bta_ag_collision_cback(0, BTA_ID_AG, 0, p_scb->peer_addr); bta_ag_collision_cback(BTA_SYS_CONN_OPEN, BTA_ID_AG, 0, p_scb->peer_addr); return; } Loading system/bta/av/bta_av_main.cc +1 −1 Original line number Diff line number Diff line Loading @@ -1018,7 +1018,7 @@ bool bta_av_link_role_ok(tBTA_AV_SCB* p_scb, uint8_t bits) { "%s: peer %s BTM_SwitchRoleToCentral(HCI_ROLE_CENTRAL) error: %d", __func__, p_scb->PeerAddress().ToString().c_str(), status); } if (status != BTM_MODE_UNSUPPORTED && status != BTM_DEV_BLACKLISTED) { if (status != BTM_MODE_UNSUPPORTED && status != BTM_DEV_RESTRICT_LISTED) { is_ok = false; p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_START; } Loading system/bta/dm/bta_dm_act.cc +30 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "device/include/controller.h" #include "device/include/interop.h" #include "main/shim/btm_api.h" #include "main/shim/dumpsys.h" #include "main/shim/shim.h" #include "osi/include/log.h" #include "osi/include/osi.h" Loading Loading @@ -2174,6 +2175,29 @@ void BTA_dm_report_role_change(const RawAddress bd_addr, uint8_t new_role, FROM_HERE, base::Bind(handle_role_change, bd_addr, new_role, hci_status)); } void handle_remote_features_complete(const RawAddress& bd_addr) { tBTA_DM_PEER_DEVICE* p_dev = bta_dm_find_peer_device(bd_addr); if (!p_dev) { LOG_WARN("Unable to find device peer:%s", PRIVATE_ADDRESS(bd_addr)); return; } if (controller_get_interface()->supports_sniff_subrating() && acl_peer_supports_sniff_subrating(bd_addr)) { LOG_DEBUG("Device supports sniff subrating peer:%s", PRIVATE_ADDRESS(bd_addr)); p_dev->info = BTA_DM_DI_USE_SSR; } else { LOG_DEBUG("Device does NOT support sniff subrating peer:%s", PRIVATE_ADDRESS(bd_addr)); } } void BTA_dm_notify_remote_features_complete(const RawAddress bd_addr) { do_in_main_thread(FROM_HERE, base::Bind(handle_remote_features_complete, bd_addr)); } static tBTA_DM_PEER_DEVICE* allocate_device_for(const RawAddress& bd_addr, tBT_TRANSPORT transport) { for (uint8_t i = 0; i < bta_dm_cb.device_list.count; i++) { Loading Loading @@ -2209,6 +2233,12 @@ static void bta_dm_acl_up(const RawAddress& bd_addr, tBT_TRANSPORT transport) { if (controller_get_interface()->supports_sniff_subrating() && acl_peer_supports_sniff_subrating(bd_addr)) { // NOTE: This callback assumes upon ACL connection that // the read remote features has completed and is valid. // The only guaranteed contract for valid read remote features // data is when the BTA_dm_notify_remote_features_complete() // callback has completed. The below assignment is kept for // transitional informational purposes only. device->info = BTA_DM_DI_USE_SSR; } Loading system/bta/dm/bta_dm_pm.cc +6 −3 Original line number Diff line number Diff line Loading @@ -695,7 +695,7 @@ static bool bta_dm_pm_park(const RawAddress& peer_addr) { * ******************************************************************************/ static void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) { tBTM_PM_MODE mode = BTM_PM_STS_ACTIVE; tBTM_PM_MODE mode = BTM_PM_MD_ACTIVE; tBTM_PM_PWR_MD pwr_md; tBTM_STATUS status; Loading @@ -703,10 +703,13 @@ static void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) { LOG_WARN("Unable to read power mode for peer:%s", PRIVATE_ADDRESS(p_peer_dev->peer_bdaddr)); } tBTM_PM_STATUS mode_status = static_cast<tBTM_PM_STATUS>(mode); LOG_DEBUG("Current power mode:%s[0x%x] peer_mode:x%02x", power_mode_status_text(mode_status).c_str(), mode_status, p_peer_dev->info); uint8_t* p_rem_feat = BTM_ReadRemoteFeatures(p_peer_dev->peer_bdaddr); APPL_TRACE_DEBUG("bta_dm_pm_sniff cur:%d, idx:%d, info:x%x", mode, index, p_peer_dev->info); const controller_t* controller = controller_get_interface(); if (mode != BTM_PM_MD_SNIFF || (controller->supports_sniff_subrating() && p_rem_feat && Loading system/bta/hf_client/bta_hf_client_act.cc +2 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,8 @@ void bta_hf_client_start_open(tBTA_HF_CLIENT_DATA* p_data) { /* Let the incoming connection goes through. */ /* Issue collision for now. */ /* We will decide what to do when we find incoming connection later.*/ bta_hf_client_collision_cback(0, BTA_ID_HS, 0, client_cb->peer_addr); bta_hf_client_collision_cback(BTA_SYS_CONN_OPEN, BTA_ID_HS, 0, client_cb->peer_addr); return; } Loading Loading
system/bta/ag/bta_ag_act.cc +1 −1 Original line number Diff line number Diff line Loading @@ -182,7 +182,7 @@ void bta_ag_start_open(tBTA_AG_SCB* p_scb, const tBTA_AG_DATA& data) { /* Let the incoming connection goes through. */ /* Issue collision for this scb for now. */ /* We will decide what to do when we find incoming connetion later. */ bta_ag_collision_cback(0, BTA_ID_AG, 0, p_scb->peer_addr); bta_ag_collision_cback(BTA_SYS_CONN_OPEN, BTA_ID_AG, 0, p_scb->peer_addr); return; } Loading
system/bta/av/bta_av_main.cc +1 −1 Original line number Diff line number Diff line Loading @@ -1018,7 +1018,7 @@ bool bta_av_link_role_ok(tBTA_AV_SCB* p_scb, uint8_t bits) { "%s: peer %s BTM_SwitchRoleToCentral(HCI_ROLE_CENTRAL) error: %d", __func__, p_scb->PeerAddress().ToString().c_str(), status); } if (status != BTM_MODE_UNSUPPORTED && status != BTM_DEV_BLACKLISTED) { if (status != BTM_MODE_UNSUPPORTED && status != BTM_DEV_RESTRICT_LISTED) { is_ok = false; p_scb->wait |= BTA_AV_WAIT_ROLE_SW_RES_START; } Loading
system/bta/dm/bta_dm_act.cc +30 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ #include "device/include/controller.h" #include "device/include/interop.h" #include "main/shim/btm_api.h" #include "main/shim/dumpsys.h" #include "main/shim/shim.h" #include "osi/include/log.h" #include "osi/include/osi.h" Loading Loading @@ -2174,6 +2175,29 @@ void BTA_dm_report_role_change(const RawAddress bd_addr, uint8_t new_role, FROM_HERE, base::Bind(handle_role_change, bd_addr, new_role, hci_status)); } void handle_remote_features_complete(const RawAddress& bd_addr) { tBTA_DM_PEER_DEVICE* p_dev = bta_dm_find_peer_device(bd_addr); if (!p_dev) { LOG_WARN("Unable to find device peer:%s", PRIVATE_ADDRESS(bd_addr)); return; } if (controller_get_interface()->supports_sniff_subrating() && acl_peer_supports_sniff_subrating(bd_addr)) { LOG_DEBUG("Device supports sniff subrating peer:%s", PRIVATE_ADDRESS(bd_addr)); p_dev->info = BTA_DM_DI_USE_SSR; } else { LOG_DEBUG("Device does NOT support sniff subrating peer:%s", PRIVATE_ADDRESS(bd_addr)); } } void BTA_dm_notify_remote_features_complete(const RawAddress bd_addr) { do_in_main_thread(FROM_HERE, base::Bind(handle_remote_features_complete, bd_addr)); } static tBTA_DM_PEER_DEVICE* allocate_device_for(const RawAddress& bd_addr, tBT_TRANSPORT transport) { for (uint8_t i = 0; i < bta_dm_cb.device_list.count; i++) { Loading Loading @@ -2209,6 +2233,12 @@ static void bta_dm_acl_up(const RawAddress& bd_addr, tBT_TRANSPORT transport) { if (controller_get_interface()->supports_sniff_subrating() && acl_peer_supports_sniff_subrating(bd_addr)) { // NOTE: This callback assumes upon ACL connection that // the read remote features has completed and is valid. // The only guaranteed contract for valid read remote features // data is when the BTA_dm_notify_remote_features_complete() // callback has completed. The below assignment is kept for // transitional informational purposes only. device->info = BTA_DM_DI_USE_SSR; } Loading
system/bta/dm/bta_dm_pm.cc +6 −3 Original line number Diff line number Diff line Loading @@ -695,7 +695,7 @@ static bool bta_dm_pm_park(const RawAddress& peer_addr) { * ******************************************************************************/ static void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) { tBTM_PM_MODE mode = BTM_PM_STS_ACTIVE; tBTM_PM_MODE mode = BTM_PM_MD_ACTIVE; tBTM_PM_PWR_MD pwr_md; tBTM_STATUS status; Loading @@ -703,10 +703,13 @@ static void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) { LOG_WARN("Unable to read power mode for peer:%s", PRIVATE_ADDRESS(p_peer_dev->peer_bdaddr)); } tBTM_PM_STATUS mode_status = static_cast<tBTM_PM_STATUS>(mode); LOG_DEBUG("Current power mode:%s[0x%x] peer_mode:x%02x", power_mode_status_text(mode_status).c_str(), mode_status, p_peer_dev->info); uint8_t* p_rem_feat = BTM_ReadRemoteFeatures(p_peer_dev->peer_bdaddr); APPL_TRACE_DEBUG("bta_dm_pm_sniff cur:%d, idx:%d, info:x%x", mode, index, p_peer_dev->info); const controller_t* controller = controller_get_interface(); if (mode != BTM_PM_MD_SNIFF || (controller->supports_sniff_subrating() && p_rem_feat && Loading
system/bta/hf_client/bta_hf_client_act.cc +2 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,8 @@ void bta_hf_client_start_open(tBTA_HF_CLIENT_DATA* p_data) { /* Let the incoming connection goes through. */ /* Issue collision for now. */ /* We will decide what to do when we find incoming connection later.*/ bta_hf_client_collision_cback(0, BTA_ID_HS, 0, client_cb->peer_addr); bta_hf_client_collision_cback(BTA_SYS_CONN_OPEN, BTA_ID_HS, 0, client_cb->peer_addr); return; } Loading