From 151f1f65eec8afc81ceec0110cde6f305a0c1ab8 Mon Sep 17 00:00:00 2001 From: Venkata Jagadeesh Garaga Date: Fri, 26 Aug 2016 17:20:59 +0530 Subject: [PATCH] GAP: Handle JV sys busy/idle properly in OPP TX/RX Handle JV power manager sys busy and sys idle properly in OPP TX/RX scenario Start/restart 1 sec timer on JV sys idle and stop sniff timer/1 sec timer on JV sys busy to align with default sniff behavior. Change-Id: I6ac51b24b9fda01726cdc3b43346194d2495f8f0 CRs-Fixed: 1055649 --- bta/jv/bta_jv_act.c | 46 +++++++++++++++++----------------------------- 1 file changed, 17 insertions(+), 29 deletions(-) diff --git a/bta/jv/bta_jv_act.c b/bta/jv/bta_jv_act.c index a1e7ad45c..24d7430e2 100644 --- a/bta/jv/bta_jv_act.c +++ b/bta/jv/bta_jv_act.c @@ -2185,25 +2185,25 @@ static void bta_jv_pm_conn_busy(tBTA_JV_PM_CB *p_cb) { if ((NULL != p_cb) && (BTA_JV_PM_IDLE_ST == p_cb->state)) { - tBTM_PM_MODE mode = BTM_PM_MD_ACTIVE; - if (BTM_ReadPowerMode(p_cb->peer_bd_addr, &mode) == BTM_SUCCESS) { - if (mode == BTM_PM_MD_SNIFF) { - bta_jv_pm_state_change(p_cb, BTA_JV_CONN_BUSY); - } else { - p_cb->state = BTA_JV_PM_BUSY_ST; - APPL_TRACE_DEBUG("bta_jv_pm_conn_busy:power mode: %d", mode); - } - } else { - bta_jv_pm_state_change(p_cb, BTA_JV_CONN_BUSY); + if (alarm_is_scheduled(p_cb->idle_timer)) + { + alarm_cancel(p_cb->idle_timer); + p_cb->state = BTA_JV_PM_BUSY_ST; + } + else + { + APPL_TRACE_DEBUG("bta_jv_pm_conn_busy"); + bta_jv_pm_state_change(p_cb, BTA_JV_CONN_BUSY); } } + } /******************************************************************************* ** - ** Function bta_jv_pm_conn_busy + ** Function bta_jv_pm_conn_idle ** - ** Description set pm connection busy state (input param safe) + ** Description set pm connection idle state (input param safe) ** ** Params p_cb: pm control block of jv connection ** @@ -2215,11 +2215,9 @@ static void bta_jv_pm_conn_idle(tBTA_JV_PM_CB *p_cb) if ((NULL != p_cb) && (BTA_JV_PM_IDLE_ST != p_cb->state)) { APPL_TRACE_DEBUG("bta_jv_pm_conn_idle, p_cb: %p", p_cb); p_cb->state = BTA_JV_PM_IDLE_ST; - // start intermediate idle timer for 1s - if (!alarm_is_scheduled(p_cb->idle_timer)) { - alarm_set_on_queue(p_cb->idle_timer, BTA_JV_IDLE_TIMEOUT_MS, - bta_jv_idle_timeout_handler, p_cb, btu_general_alarm_queue); - } + /* start intermediate idle timer for 1s */ + alarm_set_on_queue(p_cb->idle_timer, BTA_JV_IDLE_TIMEOUT_MS, + bta_jv_idle_timeout_handler, p_cb, btu_general_alarm_queue); } } @@ -2710,18 +2708,8 @@ extern void bta_jv_l2cap_close_fixed (tBTA_JV_MSG *p_data) void bta_jv_idle_timeout_handler(void *tle) { tBTA_JV_PM_CB *p_cb = (tBTA_JV_PM_CB *)tle;; APPL_TRACE_DEBUG("%s p_cb: %p", __func__, p_cb); - - if (NULL != p_cb) { - - tBTM_PM_MODE mode = BTM_PM_MD_ACTIVE; - if (BTM_ReadPowerMode(p_cb->peer_bd_addr, &mode) == BTM_SUCCESS) { - if (mode == BTM_PM_MD_SNIFF) { - APPL_TRACE_WARNING("%s: %d", __func__, mode) - return; - } - } else { - APPL_TRACE_DEBUG("%s: Read power mode failed %d", __func__, mode); - } + if ((NULL != p_cb) && (BTA_JV_PM_IDLE_ST == p_cb->state)) + { bta_jv_pm_state_change(p_cb, BTA_JV_CONN_IDLE); } } -- 2.11.0