1e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon/* 2e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Copyright (C) 2014 The Android Open Source Project 3e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * 4e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Licensed under the Apache License, Version 2.0 (the "License"); 5e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * you may not use this file except in compliance with the License. 6e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * You may obtain a copy of the License at 7e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * 8e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * http://www.apache.org/licenses/LICENSE-2.0 9e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * 10e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Unless required by applicable law or agreed to in writing, software 11e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * distributed under the License is distributed on an "AS IS" BASIS, 12e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * See the License for the specific language governing permissions and 14e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * limitations under the License. 15e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon */ 16e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 177cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnpackage com.android.server.telecom; 189f2bed31374a56487f370be01224baf6ce97e8adBen Gilad 198731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awadimport android.os.Binder; 20d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunnimport android.os.Bundle; 21953e1af643b66df6f931d76c23bcc54147668cd4Brad Ebingerimport android.telecom.Log; 227cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport android.telecom.PhoneAccountHandle; 23a439e1b6d6201dedecfc40b67c9347a8c563b9c1Sailesh Nepal 247cc70b4f0ad1064a4a0dce6056ad82b205887160Tyler Gunnimport com.android.internal.telecom.IInCallAdapter; 25e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 26961694a9750626c067be960170bc95f10b5efcc2Tyler Gunnimport java.util.List; 27961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn 28e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon/** 29e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * Receives call commands and updates from in-call app and passes them through to CallsManager. 30e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * {@link InCallController} creates an instance of this class and passes it to the in-call app after 31e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon * binding to it. This adapter can receive commands and updates until the in-call app is unbound. 32e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon */ 33e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordonclass InCallAdapter extends IInCallAdapter.Stub { 34e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon private final CallsManager mCallsManager; 35e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal private final CallIdMapper mCallIdMapper; 368d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad private final TelecomSystem.SyncRoot mLock; 37209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger private final String mOwnerComponentName; 38e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 39e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon /** Persists the specified parameters. */ 408731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad public InCallAdapter(CallsManager callsManager, CallIdMapper callIdMapper, 41209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger TelecomSystem.SyncRoot lock, String ownerComponentName) { 42e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon mCallsManager = callsManager; 43e59bb195972d65a71618af4fe13f1ad982253e16Sailesh Nepal mCallIdMapper = callIdMapper; 448d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad mLock = lock; 45209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger mOwnerComponentName = ownerComponentName; 46e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 47e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 48e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon @Override 4938931d0ad60f00a9f50c90cef446166731f0b871Andrew Lee public void answerCall(String callId, int videoState) { 508731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 518f98f10d53f4f7aa1605a37313a6186f90dc6c0eBrad Ebinger Log.startSession(LogUtils.Sessions.ICA_ANSWER_CALL, mOwnerComponentName); 5211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 5311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 5411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 5511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "answerCall(%s,%d)", callId, videoState); 5611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 5711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 5811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.answerCall(call, videoState); 5911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 6011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "answerCall, unknown call id: %s", callId); 6111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 628d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 6311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 6411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 658d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 668731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 6711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 68969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 69e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 70e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 71e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon @Override 72ff7493a8f620509d41dd8a5106c1d0dcd27cd274Ihab Awad public void rejectCall(String callId, boolean rejectWithMessage, String textMessage) { 738731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 748f98f10d53f4f7aa1605a37313a6186f90dc6c0eBrad Ebinger Log.startSession(LogUtils.Sessions.ICA_REJECT_CALL, mOwnerComponentName); 7511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 7611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 7711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 7811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "rejectCall(%s,%b,%s)", callId, rejectWithMessage, textMessage); 7911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 8011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 8111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.rejectCall(call, rejectWithMessage, textMessage); 8211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 8311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "setRingback, unknown call id: %s", callId); 8411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 858d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 8611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 8711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 888d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 898731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 9011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 91969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 92e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 93e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon 9410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal @Override 9510ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void playDtmfTone(String callId, char digit) { 968731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 97209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.pDT", mOwnerComponentName); 9811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 9911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 10011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 10111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "playDtmfTone(%s,%c)", callId, digit); 10211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 10311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 10411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.playDtmfTone(call, digit); 10511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 10611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "playDtmfTone, unknown call id: %s", callId); 10711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1088d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 10911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 11011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 1118d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1128731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 11311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 114969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 11574549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad } 11674549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad 11710ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal @Override 11810ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void stopDtmfTone(String callId) { 1198731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 120209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.sDT", mOwnerComponentName); 12111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 12211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 12311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 12411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "stopDtmfTone(%s)", callId); 12511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 12611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 12711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.stopDtmfTone(call); 12811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 12911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "stopDtmfTone, unknown call id: %s", callId); 13011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1318d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 13211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 13311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 1348d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1358731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 13611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 137969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 13874549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad } 13974549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad 14010ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal @Override 141352105c5d33ac94e5ad0cb5ac2e9268731423e65Evan Charlton public void postDialContinue(String callId, boolean proceed) { 1428731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 143209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.pDC", mOwnerComponentName); 14411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 14511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 14611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 14711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.d(this, "postDialContinue(%s)", callId); 14811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 14911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 15011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.postDialContinue(call, proceed); 15111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 15211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "postDialContinue, unknown call id: %s", callId); 15311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1548d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 15511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 15611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 1578d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1588731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 15911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 160969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 16174549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad } 16274549ec95acf0d2ddbe4feca91c6febdf8008074Ihab Awad 163e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon @Override 16410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void disconnectCall(String callId) { 1658731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 1668f98f10d53f4f7aa1605a37313a6186f90dc6c0eBrad Ebinger Log.startSession(LogUtils.Sessions.ICA_DISCONNECT_CALL, mOwnerComponentName); 16711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 16811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 16911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 17011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.v(this, "disconnectCall: %s", callId); 17111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 17211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 17311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.disconnectCall(call); 17411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 17511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "disconnectCall, unknown call id: %s", callId); 17611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1778d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 17811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 17911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 1808d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 1818731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 18211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 183969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 184e3d76abbb6c7c726980abed522f6c3efcbb6019eSantos Cordon } 185cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee 186cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee @Override 18710ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void holdCall(String callId) { 1888731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 1898f98f10d53f4f7aa1605a37313a6186f90dc6c0eBrad Ebinger Log.startSession(LogUtils.Sessions.ICA_HOLD_CALL, mOwnerComponentName); 19011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 19111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 19211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 19311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 19411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 19511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.holdCall(call); 19611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 19711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "holdCall, unknown call id: %s", callId); 19811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 1998d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 20011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 20111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2028d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2038731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 20411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 205969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 206cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee } 207cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee 208cdf3ebd3ea6505668304b7e0a39df354ebbb52fbYorke Lee @Override 20910ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void unholdCall(String callId) { 2108731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 2118f98f10d53f4f7aa1605a37313a6186f90dc6c0eBrad Ebinger Log.startSession(LogUtils.Sessions.ICA_UNHOLD_CALL, mOwnerComponentName); 21211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 21311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 21411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 21511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 21611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 21711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.unholdCall(call); 21811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 21911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "unholdCall, unknown call id: %s", callId); 22011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 2218d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 22211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 22311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2248d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2258731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 22611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 227969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 22884fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal } 22984fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal 23084fa5f8c59a1cd3c5716c239fb19c58244fc81feSailesh Nepal @Override 231f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen public void phoneAccountSelected(String callId, PhoneAccountHandle accountHandle, 232f5e5d3ccf108c41e06983a582742b00d221b78b7Nancy Chen boolean setDefault) { 2338731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 234209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.pAS", mOwnerComponentName); 23511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 23611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 23711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 23811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 23911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 24011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.phoneAccountSelected(call, accountHandle, setDefault); 24111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 24211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "phoneAccountSelected, unknown call id: %s", callId); 24311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 2448d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 24511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 24611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2478d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2488731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 24911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 250969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 25153ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen } 25253ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen 25353ceedc1f5ae5a075c7a3186db8bb4db32cbe583Nancy Chen @Override 25410ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void mute(boolean shouldMute) { 2558731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 2568f98f10d53f4f7aa1605a37313a6186f90dc6c0eBrad Ebinger Log.startSession(LogUtils.Sessions.ICA_MUTE, mOwnerComponentName); 25711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 25811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 25911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 26011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.mute(shouldMute); 26111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 26211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 26311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2648731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 2658731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 26611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 2678d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2686aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal } 2696aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal 2706aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal @Override 27110ea4609f60940145489ebffcdd53d40948f56f4Sailesh Nepal public void setAudioRoute(int route) { 2728731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 2738f98f10d53f4f7aa1605a37313a6186f90dc6c0eBrad Ebinger Log.startSession(LogUtils.Sessions.ICA_SET_AUDIO_ROUTE, mOwnerComponentName); 27411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 27511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 27611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 27711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.setAudioRoute(route); 27811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 27911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 28011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 2818731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 2828731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 28311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 2848d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 2856aca10a0efa2771ccdef5920f4276f0db4a7ee1fSailesh Nepal } 2868f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon 2878f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon @Override 28812d61825cd0d6aa06272db3f77b5e30dce379951Santos Cordon public void conference(String callId, String otherCallId) { 2898731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 2908f98f10d53f4f7aa1605a37313a6186f90dc6c0eBrad Ebinger Log.startSession(LogUtils.Sessions.ICA_CONFERENCE, mOwnerComponentName); 29111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 29211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 29311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 29411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 29511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call otherCall = mCallIdMapper.getCall(otherCallId); 29611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null && otherCall != null) { 29711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.conference(call, otherCall); 29811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 29911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "conference, unknown call id: %s or %s", callId, otherCallId); 30011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 3018731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 30211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 30311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 3048d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 3058731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 30611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 307969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 3088f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon } 3098f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon 3108f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon @Override 311a161070ea054f91a5b2d5b4e3413381134d548b8Santos Cordon public void splitFromConference(String callId) { 3128731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 313209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.sFC", mOwnerComponentName); 31411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 31511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 31611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 31711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 31811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 31911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger call.splitFromConference(); 32011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 32111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "splitFromConference, unknown call id: %s", callId); 32211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 3238d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 32411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 32511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 3268d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 3278731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 32811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 329969755a2a7ff9416f677dd87d520fce27e629dffJay Shrauner } 3308f3282c49bd4e8e6de59be4bdaefc726d99a3273Santos Cordon } 331e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal 332e8ecb98d5341395e073d02c065143ae3ac76ef71Sailesh Nepal @Override 3336805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon public void mergeConference(String callId) { 3348731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 335209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.mC", mOwnerComponentName); 33611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 33711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 33811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 33911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 34011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 34111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger call.mergeConference(); 34211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 34311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "mergeConference, unknown call id: %s", callId); 34411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 3458d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 34611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 34711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 3488d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 3498731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 35011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 3516805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 3526805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 3536805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon 3546805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon @Override 3556805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon public void swapConference(String callId) { 3568731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 357209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.sC", mOwnerComponentName); 35811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 35911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 36011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 36111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Call call = mCallIdMapper.getCall(callId); 36211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger if (call != null) { 36311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger call.swapConference(); 36411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } else { 36511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.w(this, "swapConference, unknown call id: %s", callId); 36611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 3678d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 36811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 36911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 3708d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 3718731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 37211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 3736805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 3746805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon } 375d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn 376d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn @Override 377d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn public void pullExternalCall(String callId) { 378d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn try { 379d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.startSession("ICA.pEC", mOwnerComponentName); 380d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn long token = Binder.clearCallingIdentity(); 381d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn try { 382d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn synchronized (mLock) { 383d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Call call = mCallIdMapper.getCall(callId); 384d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn if (call != null) { 385d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn call.pullExternalCall(); 386d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } else { 387d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.w(this, "pullExternalCall, unknown call id: %s", callId); 388d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 389d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 390d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } finally { 391d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Binder.restoreCallingIdentity(token); 392d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 393d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } finally { 394d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.endSession(); 395d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 396d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 397d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn 398d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn @Override 399d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn public void sendCallEvent(String callId, String event, Bundle extras) { 400d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn try { 401d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.startSession("ICA.sCE", mOwnerComponentName); 402d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn long token = Binder.clearCallingIdentity(); 403d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn try { 404d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn synchronized (mLock) { 405d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Call call = mCallIdMapper.getCall(callId); 406d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn if (call != null) { 407d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn call.sendCallEvent(event, extras); 408d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } else { 409d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.w(this, "sendCallEvent, unknown call id: %s", callId); 410d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 411d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 412d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } finally { 413d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Binder.restoreCallingIdentity(token); 414d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 415d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } finally { 416d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn Log.endSession(); 417d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 418d45e6d973ea7460fb605a1eb7a66ba38c6f2467dTyler Gunn } 419961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn 420961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn @Override 421961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn public void putExtras(String callId, Bundle extras) { 422961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn try { 423961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.startSession("ICA.pE", mOwnerComponentName); 424961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn long token = Binder.clearCallingIdentity(); 425961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn try { 426961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn synchronized (mLock) { 427961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Call call = mCallIdMapper.getCall(callId); 428961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn if (call != null) { 429961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn call.putExtras(Call.SOURCE_INCALL_SERVICE, extras); 430961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } else { 431961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.w(this, "putExtras, unknown call id: %s", callId); 432961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 433961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 434961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } finally { 435961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Binder.restoreCallingIdentity(token); 436961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 437961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } finally { 438961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.endSession(); 439961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 440961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 441961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn 442961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn @Override 443961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn public void removeExtras(String callId, List<String> keys) { 444961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn try { 445961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.startSession("ICA.rE", mOwnerComponentName); 446961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn long token = Binder.clearCallingIdentity(); 447961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn try { 448961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn synchronized (mLock) { 449961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Call call = mCallIdMapper.getCall(callId); 450961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn if (call != null) { 451961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn call.removeExtras(Call.SOURCE_INCALL_SERVICE, keys); 452961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } else { 453961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.w(this, "removeExtra, unknown call id: %s", callId); 454961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 455961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 456961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } finally { 457961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Binder.restoreCallingIdentity(token); 458961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 459961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } finally { 460961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn Log.endSession(); 461961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 462961694a9750626c067be960170bc95f10b5efcc2Tyler Gunn } 4636805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon 4646805923a2d91f9e193a4dd33f7a655587d2f173cSantos Cordon @Override 465d134687adc2594ed43e912f427f494ef258e89bcYorke Lee public void turnOnProximitySensor() { 4668731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 467209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.tOnPS", mOwnerComponentName); 46811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 46911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 47011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 47111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.turnOnProximitySensor(); 47211623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 47311623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 47411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 4758731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 4768731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 47711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 4788d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 479d134687adc2594ed43e912f427f494ef258e89bcYorke Lee } 480d134687adc2594ed43e912f427f494ef258e89bcYorke Lee 481d134687adc2594ed43e912f427f494ef258e89bcYorke Lee @Override 482d134687adc2594ed43e912f427f494ef258e89bcYorke Lee public void turnOffProximitySensor(boolean screenOnImmediately) { 4838731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad try { 484209e4135874ffc0164856c87d47fd904a06bf40eBrad Ebinger Log.startSession("ICA.tOffPS", mOwnerComponentName); 48511623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger long token = Binder.clearCallingIdentity(); 48611623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger try { 48711623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger synchronized (mLock) { 48811623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger mCallsManager.turnOffProximitySensor(screenOnImmediately); 48911623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } 49011623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger } finally { 49111623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Binder.restoreCallingIdentity(token); 4928731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } 4938731faf3a1dcf888b894d4ad0faab97effab10bcIhab Awad } finally { 49411623a354be47205bf3bc686ed8fdfc278958983Brad Ebinger Log.endSession(); 4958d5d9ddc66b55b6906364ab3c0e244dab4d58f13Ihab Awad } 496d134687adc2594ed43e912f427f494ef258e89bcYorke Lee } 497dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu 498dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu @Override 499aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu public void sendRttRequest(String callId) { 500dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu try { 501dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Log.startSession("ICA.sRR"); 502dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu long token = Binder.clearCallingIdentity(); 503dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu try { 504dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu synchronized (mLock) { 505aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu Call call = mCallIdMapper.getCall(callId); 506aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu if (call != null) { 507aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu call.sendRttRequest(); 508aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu } else { 509aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu Log.w(this, "stopRtt(): call %s not found", callId); 510aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu } 511dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 512dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } finally { 513dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Binder.restoreCallingIdentity(token); 514dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 515dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } finally { 516dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Log.endSession(); 517dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 518dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 519dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu 520dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu @Override 521aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu public void respondToRttRequest(String callId, int id, boolean accept) { 522dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu try { 523dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Log.startSession("ICA.rTRR"); 524dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu long token = Binder.clearCallingIdentity(); 525dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu try { 526dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu synchronized (mLock) { 527aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu Call call = mCallIdMapper.getCall(callId); 528aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu if (call != null) { 529aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu call.handleRttRequestResponse(id, accept); 530aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu } else { 531aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu Log.w(this, "respondToRttRequest(): call %s not found", callId); 532aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu } 533dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 534dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } finally { 535dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Binder.restoreCallingIdentity(token); 536dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 537dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } finally { 538dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Log.endSession(); 539dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 540dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 541dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu 542dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu @Override 543aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu public void stopRtt(String callId) { 544dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu try { 545dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Log.startSession("ICA.sRTT"); 546dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu long token = Binder.clearCallingIdentity(); 547dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu try { 548dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu synchronized (mLock) { 549aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu Call call = mCallIdMapper.getCall(callId); 550aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu if (call != null) { 551aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu call.stopRtt(); 552aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu } else { 553aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu Log.w(this, "stopRtt(): call %s not found", callId); 554aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu } 555dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 556dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } finally { 557dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Binder.restoreCallingIdentity(token); 558dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 559dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } finally { 560dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Log.endSession(); 561dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 562dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 563dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu 564dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu @Override 565aeece4ec4184b76e0ac2e8a012af05638ad866f6Hall Liu public void setRttMode(String callId, int mode) { 566dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu try { 567dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Log.startSession("ICA.sRM"); 568dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu long token = Binder.clearCallingIdentity(); 569dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu try { 570dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu synchronized (mLock) { 571dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu // TODO 572dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 573dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } finally { 574dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Binder.restoreCallingIdentity(token); 575dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 576dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } finally { 577dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu Log.endSession(); 578dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 579dd68bc36a3278557b1c4d9183ed9e3dee077eb20Hall Liu } 5809f2bed31374a56487f370be01224baf6ce97e8adBen Gilad} 581