diff options
author | Hemant Gupta <hemantg@codeaurora.org> | 2015-10-11 14:11:19 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-10-11 14:11:19 +0000 |
commit | 7c2df255b6f518ff0ba5054d3b2a69c63c877a8c (patch) | |
tree | b3494006fe21e3c3be559caacf3d477fd25c1160 | |
parent | 4310d1390353ed872cc7be1923fd55222864a4d4 (diff) | |
parent | 836f7d384eea45c1cc29ab671be798e6b26da519 (diff) | |
download | android_packages_apps_Bluetooth-7c2df255b6f518ff0ba5054d3b2a69c63c877a8c.tar.gz android_packages_apps_Bluetooth-7c2df255b6f518ff0ba5054d3b2a69c63c877a8c.tar.bz2 android_packages_apps_Bluetooth-7c2df255b6f518ff0ba5054d3b2a69c63c877a8c.zip |
am 836f7d38: am faf199e4: SAP: Fix missing connect response when call ongoing at connect
* commit '836f7d384eea45c1cc29ab671be798e6b26da519':
SAP: Fix missing connect response when call ongoing at connect
-rw-r--r-- | src/com/android/bluetooth/sap/SapServer.java | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/src/com/android/bluetooth/sap/SapServer.java b/src/com/android/bluetooth/sap/SapServer.java index 87856b3d8..339f67631 100644 --- a/src/com/android/bluetooth/sap/SapServer.java +++ b/src/com/android/bluetooth/sap/SapServer.java @@ -422,7 +422,10 @@ public class SapServer extends Thread implements Callback { * - Initiate a FORCED shutdown * - Wait for RIL deinit to complete */ - if(mState != SAP_STATE.DISCONNECTED) { + if (mState == SAP_STATE.CONNECTING_CALL_ONGOING) { + /* Most likely remote device closed rfcomm, update state */ + changeState(SAP_STATE.DISCONNECTED); + } else if (mState != SAP_STATE.DISCONNECTED) { if(mState != SAP_STATE.DISCONNECTING && mIsLocalInitDisconnect != true) { sendDisconnectInd(SapMessage.DISC_FORCED); @@ -509,7 +512,6 @@ public class SapServer extends Thread implements Callback { if (isCallOngoing() == true) { /* If a call is ongoing we set the state, inform the SAP client and wait for a state * change intent from the TelephonyManager with state IDLE. */ - changeState(SAP_STATE.CONNECTING_CALL_ONGOING); reply.setConnectionStatus(SapMessage.CON_STATUS_OK_ONGOING_CALL); } else { /* no call is ongoing, initiate the connect sequence: @@ -651,11 +653,12 @@ public class SapServer extends Thread implements Callback { if(DEBUG) Log.i(TAG_HANDLER, "in Shutdown()"); try { - mRfcommOut.close(); + if (mRfcommOut != null) + mRfcommOut.close(); } catch (IOException e) {} try { - mRfcommIn.close(); - + if (mRfcommIn != null) + mRfcommIn.close(); } catch (IOException e) {} mRfcommIn = null; mRfcommOut = null; @@ -714,19 +717,25 @@ public class SapServer extends Thread implements Callback { switch(sapMsg.getMsgType()) { case SapMessage.ID_CONNECT_RESP: - if (sapMsg.getConnectionStatus() == SapMessage.CON_STATUS_OK) { - // This is successful connect response from RIL/modem. - changeState(SAP_STATE.CONNECTED); - } else if(sapMsg.getConnectionStatus() == SapMessage.CON_STATUS_OK_ONGOING_CALL - && mState != SAP_STATE.CONNECTING_CALL_ONGOING) { - changeState(SAP_STATE.CONNECTING_CALL_ONGOING); - } else if(mState == SAP_STATE.CONNECTING_CALL_ONGOING) { + if(mState == SAP_STATE.CONNECTING_CALL_ONGOING) { /* Hold back the connect resp if a call was ongoing when the connect req - * was received. + * was received. + * A response with status call-ongoing was sent, and the connect response + * received from the RIL when call ends must be discarded. */ + if (sapMsg.getConnectionStatus() == SapMessage.CON_STATUS_OK) { + // This is successful connect response from RIL/modem. + changeState(SAP_STATE.CONNECTED); + } if(VERBOSE) Log.i(TAG, "Hold back the connect resp, as a call was ongoing" + " when the initial response were sent."); sapMsg = null; + } else if (sapMsg.getConnectionStatus() == SapMessage.CON_STATUS_OK) { + // This is successful connect response from RIL/modem. + changeState(SAP_STATE.CONNECTED); + } else if(sapMsg.getConnectionStatus() == + SapMessage.CON_STATUS_OK_ONGOING_CALL) { + changeState(SAP_STATE.CONNECTING_CALL_ONGOING); } else if(sapMsg.getConnectionStatus() != SapMessage.CON_STATUS_OK) { /* Most likely the peer will try to connect again, hence we keep the * connection to RIL open and stay in connecting state. |