DefaultPhoneNotifier.java revision d1a60dfe521f376e3500946d5371f126dbd36767
10825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/* 20825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Copyright (C) 2006 The Android Open Source Project 30825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 40825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Licensed under the Apache License, Version 2.0 (the "License"); 50825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * you may not use this file except in compliance with the License. 60825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * You may obtain a copy of the License at 70825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 80825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * http://www.apache.org/licenses/LICENSE-2.0 90825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * 100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * Unless required by applicable law or agreed to in writing, software 110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * distributed under the License is distributed on an "AS IS" BASIS, 120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * See the License for the specific language governing permissions and 140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * limitations under the License. 150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 170825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepackage com.android.internal.telephony; 180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 190825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LinkProperties; 2096cce86cf08e37e0f09ed5057b1196e26b302743Robert Greenwaltimport android.net.NetworkCapabilities; 210825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.Bundle; 220825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.RemoteException; 230825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.os.ServiceManager; 240825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.CellInfo; 258758315661d65c14d0e10d354a14f80ec1f65db7Wink Savilleimport android.telephony.DataConnectionRealTimeInfo; 26a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.Rlog; 27a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.VoLteServiceState; 280825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.ServiceState; 29a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport android.telephony.SubscriptionManager; 300825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.TelephonyManager; 310742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuelaimport android.telephony.PreciseCallState; 320742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuelaimport android.telephony.DisconnectCause; 330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 34a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.Call; 35a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.CallManager; 36a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.Phone; 370825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.ITelephonyRegistry; 38a8467dd0c524787104b1ccdddc5e8af10ba729edWink Savilleimport com.android.internal.telephony.PhoneConstants; 390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 40ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Savilleimport java.util.List; 41ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville 420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/** 430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * broadcast intents 440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 450825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class DefaultPhoneNotifier implements PhoneNotifier { 46d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville private static final String LOG_TAG = "DefaultPhoneNotifier"; 47d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville private static final boolean DBG = false; // STOPSHIP if true 480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 49a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville protected ITelephonyRegistry mRegistry; 500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /*package*/ 52a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville protected DefaultPhoneNotifier() { 530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville mRegistry = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService( 540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville "telephony.registry")); 550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 57cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyPhoneState(Phone sender) { 590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Call ringingCall = sender.getRingingCall(); 60a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville String incomingNumber = ""; 620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ringingCall != null && ringingCall.getEarliestConnection() != null){ 630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville incomingNumber = ringingCall.getEarliestConnection().getAddress(); 640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 667961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 676a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyCallStateForSubscriber(subId, 68a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville convertCallState(sender.getState()), incomingNumber); 69a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 70a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } catch (RemoteException ex) { 71a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // system process is dead 72a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 73a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville notifyCallStateToTelephonyRegistry(sender); 74a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 75a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 76a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville /* 77a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Suppose, some third party app e.g. FM app registers for a call state changed indication 78a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * through TelephonyManager/PhoneStateListener and an incoming call is received on sub1 or 79a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * sub2. Then ir-respective of sub1/sub2 FM app should be informed of call state 80a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * changed(onCallStateChanged()) indication so that FM app can be paused. 81a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * Hence send consolidated call state information to apps. (i.e. sub1 or sub2 active 82a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville * call state, in priority order RINGING > OFFHOOK > IDLE) 83a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville */ 84a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void notifyCallStateToTelephonyRegistry(Phone sender) { 85a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Call ringingCall = null; 86a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville CallManager cm = CallManager.getInstance(); 87a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville PhoneConstants.State state = sender.getState(); 88a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville String incomingNumber = ""; 89a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville for (Phone phone : cm.getAllPhones()) { 90a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (phone.getState() == PhoneConstants.State.RINGING) { 91a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville ringingCall = phone.getRingingCall(); 92a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (ringingCall != null && ringingCall.getEarliestConnection() != null) { 93a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville incomingNumber = ringingCall.getEarliestConnection().getAddress(); 94a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 95a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender = phone; 96a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville state = PhoneConstants.State.RINGING; 97a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville break; 98a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } else if (phone.getState() == PhoneConstants.State.OFFHOOK) { 99a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (state == PhoneConstants.State.IDLE) { 100a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville state = PhoneConstants.State.OFFHOOK; 101a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender = phone; 102a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 103a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 104a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 105d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville if (DBG) log("notifyCallStateToTelephonyRegistry, subId = " + sender.getSubId() 106a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville + " state = " + state); 107a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville try { 108a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville if (mRegistry != null) { 109a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mRegistry.notifyCallState(convertCallState(state), incomingNumber); 1107961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 116cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyServiceState(Phone sender) { 1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ServiceState ss = sender.getServiceState(); 119d1a60dfe521f376e3500946d5371f126dbd36767xinhe int phoneId = sender.getPhoneId(); 120a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 121d1a60dfe521f376e3500946d5371f126dbd36767xinhe 122a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.d(LOG_TAG, "nofityServiceState: mRegistry=" + mRegistry + " ss=" + ss 123d1a60dfe521f376e3500946d5371f126dbd36767xinhe + " sender=" + sender + " phondId=" + phoneId + " subId=" + subId); 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ss == null) { 1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ss = new ServiceState(); 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ss.setStateOutOfService(); 1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1297961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 130d1a60dfe521f376e3500946d5371f126dbd36767xinhe mRegistry.notifyServiceStateForPhoneId(phoneId, subId, ss); 1317961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 137cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifySignalStrength(Phone sender) { 139a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 140a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.d(LOG_TAG, "notifySignalStrength: mRegistry=" + mRegistry 141a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville + " ss=" + sender.getSignalStrength() + " sender=" + sender); 1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1437961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 1446a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifySignalStrengthForSubscriber(subId, sender.getSignalStrength()); 1457961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 151cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyMessageWaitingChanged(Phone sender) { 153d1a60dfe521f376e3500946d5371f126dbd36767xinhe int phoneId = sender.getPhoneId(); 154a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 155d1a60dfe521f376e3500946d5371f126dbd36767xinhe 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1577961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 158d1a60dfe521f376e3500946d5371f126dbd36767xinhe mRegistry.notifyMessageWaitingChangedForPhoneId(phoneId, subId, 159a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender.getMessageWaitingIndicator()); 1607961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 166cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyCallForwardingChanged(Phone sender) { 168a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1707961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 1716a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyCallForwardingChangedForSubscriber(subId, 172a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender.getCallForwardingIndicator()); 1737961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 179cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyDataActivity(Phone sender) { 181a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1837961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 1846a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyDataActivityForSubscriber(subId, 185a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville convertDataActivityState(sender.getDataActivityState())); 1867961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 192cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyDataConnection(Phone sender, String reason, String apnType, 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville PhoneConstants.DataState state) { 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville doNotifyDataConnection(sender, reason, apnType, state); 1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void doNotifyDataConnection(Phone sender, String reason, String apnType, 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville PhoneConstants.DataState state) { 200a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 201a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long dds = SubscriptionManager.getDefaultDataSubId(); 202d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville if (DBG) log("subId = " + subId + ", DDS = " + dds); 203a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // TODO 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // use apnType as the key to which connection we're talking about. 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // pass apnType back up to fetch particular for this one. 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyManager telephony = TelephonyManager.getDefault(); 2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LinkProperties linkProperties = null; 20996cce86cf08e37e0f09ed5057b1196e26b302743Robert Greenwalt NetworkCapabilities networkCapabilities = null; 2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean roaming = false; 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (state == PhoneConstants.DataState.CONNECTED) { 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties = sender.getLinkProperties(apnType); 21496cce86cf08e37e0f09ed5057b1196e26b302743Robert Greenwalt networkCapabilities = sender.getNetworkCapabilities(apnType); 2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ServiceState ss = sender.getServiceState(); 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ss != null) roaming = ss.getRoaming(); 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2207961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 2216a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyDataConnectionForSubscriber(subId, 222a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville convertDataState(state), 223a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender.isDataConnectivityPossible(apnType), reason, 224a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender.getActiveApnHost(apnType), 225a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville apnType, 226a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville linkProperties, 227a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville networkCapabilities, 228a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville ((telephony!=null) ? telephony.getNetworkType() : 229a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville TelephonyManager.NETWORK_TYPE_UNKNOWN), 230a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville roaming); 2317961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 237cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyDataConnectionFailed(Phone sender, String reason, String apnType) { 239a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2417961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 2426a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyDataConnectionFailedForSubscriber(subId, reason, apnType); 2437961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 249cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyCellLocation(Phone sender) { 251a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Bundle data = new Bundle(); 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sender.getCellLocation().fillInNotifierBundle(data); 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2557961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 2566a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyCellLocationForSubscriber(subId, data); 2577961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 263cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 264ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville public void notifyCellInfo(Phone sender, List<CellInfo> cellInfo) { 265a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2677961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 2686a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyCellInfoForSubscriber(subId, cellInfo); 2697961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 275cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2768758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville public void notifyDataConnectionRealTimeInfo(Phone sender, 2778758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville DataConnectionRealTimeInfo dcRtInfo) { 2788758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville try { 2798758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville mRegistry.notifyDataConnectionRealTimeInfo(dcRtInfo); 2808758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville } catch (RemoteException ex) { 2818758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville 2828758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville } 2838758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville } 2848758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville 2858758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville @Override 2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyOtaspChanged(Phone sender, int otaspMode) { 287a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subId? 2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2897961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 2907961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski mRegistry.notifyOtaspChanged(otaspMode); 2917961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2970742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela public void notifyPreciseCallState(Phone sender) { 298a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subId? 2990742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela Call ringingCall = sender.getRingingCall(); 3000742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela Call foregroundCall = sender.getForegroundCall(); 3010742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela Call backgroundCall = sender.getBackgroundCall(); 3020742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela if (ringingCall != null && foregroundCall != null && backgroundCall != null) { 3030742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela try { 3040742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela mRegistry.notifyPreciseCallState( 3050742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela convertPreciseCallState(ringingCall.getState()), 3060742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela convertPreciseCallState(foregroundCall.getState()), 3070742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela convertPreciseCallState(backgroundCall.getState())); 3080742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } catch (RemoteException ex) { 3090742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela // system process is dead 3100742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 3110742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 3120742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 3130742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 314b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen public void notifyDisconnectCause(int cause, int preciseCause) { 315a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subId? 3160742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela try { 317b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen mRegistry.notifyDisconnectCause(cause, preciseCause); 3180742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } catch (RemoteException ex) { 3190742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela // system process is dead 3200742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 3210742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 3220742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 3230742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela public void notifyPreciseDataConnectionFailed(Phone sender, String reason, String apnType, 3240742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela String apn, String failCause) { 325a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subId? 3260742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela try { 3270742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela mRegistry.notifyPreciseDataConnectionFailed(reason, apnType, apn, failCause); 3280742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } catch (RemoteException ex) { 3290742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela // system process is dead 3300742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 3310742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 3320742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 333a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 334a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void notifyVoLteServiceStateChanged(Phone sender, VoLteServiceState lteState) { 335a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subID 336a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville try { 337a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mRegistry.notifyVoLteServiceStateChanged(lteState); 338a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } catch (RemoteException ex) { 339a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // system process is dead 340a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 341a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 342a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 344cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the {@link PhoneConstants.State} enum into the TelephonyManager.CALL_STATE_* 345cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * constants for the public API. 3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static int convertCallState(PhoneConstants.State state) { 3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RINGING: 3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.CALL_STATE_RINGING; 3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case OFFHOOK: 3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.CALL_STATE_OFFHOOK; 3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.CALL_STATE_IDLE; 3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 359cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the TelephonyManager.CALL_STATE_* constants into the 360cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * {@link PhoneConstants.State} enum for the public API. 3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static PhoneConstants.State convertCallState(int state) { 3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.CALL_STATE_RINGING: 3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.State.RINGING; 3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.CALL_STATE_OFFHOOK: 3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.State.OFFHOOK; 3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.State.IDLE; 3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 374cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the {@link PhoneConstants.DataState} enum into the TelephonyManager.DATA_* constants 3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for the public API. 3760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static int convertDataState(PhoneConstants.DataState state) { 3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case CONNECTING: 3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_CONNECTING; 3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case CONNECTED: 3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_CONNECTED; 3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SUSPENDED: 3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_SUSPENDED; 3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_DISCONNECTED; 3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 391cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the TelephonyManager.DATA_* constants into {@link PhoneConstants.DataState} enum 3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for the public API. 3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static PhoneConstants.DataState convertDataState(int state) { 3950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_CONNECTING: 3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.CONNECTING; 3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_CONNECTED: 3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.CONNECTED; 4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_SUSPENDED: 4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.SUSPENDED; 4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.DISCONNECTED; 4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 408cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the {@link Phone.DataActivityState} enum into the TelephonyManager.DATA_* constants 4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for the public API. 4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static int convertDataActivityState(Phone.DataActivityState state) { 4120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 4130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case DATAIN: 4140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_IN; 4150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case DATAOUT: 4160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_OUT; 4170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case DATAINANDOUT: 4180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_INOUT; 4190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case DORMANT: 4200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_DORMANT; 4210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 4220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_NONE; 4230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 4260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 427cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the TelephonyManager.DATA_* constants into the {@link Phone.DataActivityState} enum 4280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for the public API. 4290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 4300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static Phone.DataActivityState convertDataActivityState(int state) { 4310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 4320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_ACTIVITY_IN: 4330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.DATAIN; 4340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_ACTIVITY_OUT: 4350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.DATAOUT; 4360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_ACTIVITY_INOUT: 4370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.DATAINANDOUT; 4380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_ACTIVITY_DORMANT: 4390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.DORMANT; 4400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 4410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.NONE; 4420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4440742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 4450742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela /** 4460742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela * Convert the {@link State} enum into the PreciseCallState.PRECISE_CALL_STATE_* constants 4470742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela * for the public API. 4480742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela */ 4490742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela public static int convertPreciseCallState(Call.State state) { 4500742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela switch (state) { 4510742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case ACTIVE: 4520742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_ACTIVE; 4530742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case HOLDING: 4540742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_HOLDING; 4550742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case DIALING: 4560742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_DIALING; 4570742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case ALERTING: 4580742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_ALERTING; 4590742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case INCOMING: 4600742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_INCOMING; 4610742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case WAITING: 4620742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_WAITING; 4630742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case DISCONNECTED: 4640742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED; 4650742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case DISCONNECTING: 4660742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING; 4670742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela default: 4680742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_IDLE; 4690742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 4700742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 4710742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 4720742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela /** 4730742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela * Convert the Call.State.* constants into the {@link State} enum 4740742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela * for the public API. 4750742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela */ 4760742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela public static Call.State convertPreciseCallState(int state) { 4770742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela switch (state) { 4780742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_ACTIVE: 4790742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.ACTIVE; 4800742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_HOLDING: 4810742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.HOLDING; 4820742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_DIALING: 4830742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.DIALING; 4840742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_ALERTING: 4850742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.ALERTING; 4860742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_INCOMING: 4870742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.INCOMING; 4880742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_WAITING: 4890742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.WAITING; 4900742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED: 4910742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.DISCONNECTED; 4920742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING: 4930742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.DISCONNECTING; 4940742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela default: 4950742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.IDLE; 4960742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 4970742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 498a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 499a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public interface IDataStateChangedCallback { 500a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void onDataStateChanged(long subId, String state, String reason, String apnName, 501a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville String apnType, boolean unavailable); 502a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 503d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville 504d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville private void log(String s) { 505d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville Rlog.d(LOG_TAG, s); 506d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville } 5070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 508