Loading system/bta/dm/bta_dm_int.h +5 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,11 @@ struct tBTA_DM_PEER_DEVICE { void reset_av_active() { info &= ~BTA_DM_DI_AV_ACTIVE; } bool is_av_active() const { return info & BTA_DM_DI_AV_ACTIVE; } void set_local_init_sniff() { info |= BTA_DM_DI_INT_SNIFF; } bool is_local_init_sniff() const { return info & BTA_DM_DI_INT_SNIFF; } void set_remote_init_sniff() { info |= BTA_DM_DI_ACP_SNIFF; } bool is_remote_init_sniff() const { return info & BTA_DM_DI_ACP_SNIFF; } // NOTE: Why is this not used as a bitmask void set_both_device_ssr_capable() { info = BTA_DM_DI_USE_SSR; } Loading system/bta/dm/bta_dm_pm.cc +4 −5 Original line number Diff line number Diff line Loading @@ -793,8 +793,7 @@ void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) { * remote sniff params. This avoid sniff loop issue with * some agrresive headsets who use sniff latencies more than * DUT supported range of Sniff intervals.*/ if ((mode == BTM_PM_MD_SNIFF) && (p_peer_dev->Info() & BTA_DM_DI_ACP_SNIFF)) { if ((mode == BTM_PM_MD_SNIFF) && (p_peer_dev->is_remote_init_sniff())) { LOG_DEBUG("Link already in sniff mode peer:%s", ADDRESS_TO_LOGGABLE_CSTR(p_peer_dev->peer_bdaddr)); return; Loading @@ -804,7 +803,7 @@ void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) { * If sniff, but SSR is not used in this link, still issue the command */ tBTM_PM_PWR_MD sniff_entry = get_sniff_entry(index); memcpy(&pwr_md, &sniff_entry, sizeof(tBTM_PM_PWR_MD)); if (p_peer_dev->Info() & BTA_DM_DI_INT_SNIFF) { if (p_peer_dev->is_local_init_sniff()) { LOG_DEBUG("Trying to force power mode"); pwr_md.mode |= BTM_PM_MD_FORCE; } Loading Loading @@ -1069,9 +1068,9 @@ void bta_dm_pm_btm_status(const RawAddress& bd_addr, tBTM_PM_STATUS status, tBTA_DM_DEV_INFO info = p_dev->Info(); p_dev->reset_sniff_flags(); if (info & BTA_DM_DI_SET_SNIFF) p_dev->info |= BTA_DM_DI_INT_SNIFF; p_dev->set_local_init_sniff(); else p_dev->info |= BTA_DM_DI_ACP_SNIFF; p_dev->set_remote_init_sniff(); } break; Loading Loading
system/bta/dm/bta_dm_int.h +5 −0 Original line number Diff line number Diff line Loading @@ -271,6 +271,11 @@ struct tBTA_DM_PEER_DEVICE { void reset_av_active() { info &= ~BTA_DM_DI_AV_ACTIVE; } bool is_av_active() const { return info & BTA_DM_DI_AV_ACTIVE; } void set_local_init_sniff() { info |= BTA_DM_DI_INT_SNIFF; } bool is_local_init_sniff() const { return info & BTA_DM_DI_INT_SNIFF; } void set_remote_init_sniff() { info |= BTA_DM_DI_ACP_SNIFF; } bool is_remote_init_sniff() const { return info & BTA_DM_DI_ACP_SNIFF; } // NOTE: Why is this not used as a bitmask void set_both_device_ssr_capable() { info = BTA_DM_DI_USE_SSR; } Loading
system/bta/dm/bta_dm_pm.cc +4 −5 Original line number Diff line number Diff line Loading @@ -793,8 +793,7 @@ void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) { * remote sniff params. This avoid sniff loop issue with * some agrresive headsets who use sniff latencies more than * DUT supported range of Sniff intervals.*/ if ((mode == BTM_PM_MD_SNIFF) && (p_peer_dev->Info() & BTA_DM_DI_ACP_SNIFF)) { if ((mode == BTM_PM_MD_SNIFF) && (p_peer_dev->is_remote_init_sniff())) { LOG_DEBUG("Link already in sniff mode peer:%s", ADDRESS_TO_LOGGABLE_CSTR(p_peer_dev->peer_bdaddr)); return; Loading @@ -804,7 +803,7 @@ void bta_dm_pm_sniff(tBTA_DM_PEER_DEVICE* p_peer_dev, uint8_t index) { * If sniff, but SSR is not used in this link, still issue the command */ tBTM_PM_PWR_MD sniff_entry = get_sniff_entry(index); memcpy(&pwr_md, &sniff_entry, sizeof(tBTM_PM_PWR_MD)); if (p_peer_dev->Info() & BTA_DM_DI_INT_SNIFF) { if (p_peer_dev->is_local_init_sniff()) { LOG_DEBUG("Trying to force power mode"); pwr_md.mode |= BTM_PM_MD_FORCE; } Loading Loading @@ -1069,9 +1068,9 @@ void bta_dm_pm_btm_status(const RawAddress& bd_addr, tBTM_PM_STATUS status, tBTA_DM_DEV_INFO info = p_dev->Info(); p_dev->reset_sniff_flags(); if (info & BTA_DM_DI_SET_SNIFF) p_dev->info |= BTA_DM_DI_INT_SNIFF; p_dev->set_local_init_sniff(); else p_dev->info |= BTA_DM_DI_ACP_SNIFF; p_dev->set_remote_init_sniff(); } break; Loading