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 } 730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 75cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyServiceState(Phone sender) { 770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ServiceState ss = sender.getServiceState(); 78d1a60dfe521f376e3500946d5371f126dbd36767xinhe int phoneId = sender.getPhoneId(); 79a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 80d1a60dfe521f376e3500946d5371f126dbd36767xinhe 81a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.d(LOG_TAG, "nofityServiceState: mRegistry=" + mRegistry + " ss=" + ss 82d1a60dfe521f376e3500946d5371f126dbd36767xinhe + " sender=" + sender + " phondId=" + phoneId + " subId=" + subId); 830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ss == null) { 840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ss = new ServiceState(); 850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ss.setStateOutOfService(); 860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 887961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 89d1a60dfe521f376e3500946d5371f126dbd36767xinhe mRegistry.notifyServiceStateForPhoneId(phoneId, subId, ss); 907961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 96cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifySignalStrength(Phone sender) { 98a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 99a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville Rlog.d(LOG_TAG, "notifySignalStrength: mRegistry=" + mRegistry 100a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville + " ss=" + sender.getSignalStrength() + " sender=" + sender); 1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1027961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 1036a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifySignalStrengthForSubscriber(subId, sender.getSignalStrength()); 1047961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 110cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyMessageWaitingChanged(Phone sender) { 112d1a60dfe521f376e3500946d5371f126dbd36767xinhe int phoneId = sender.getPhoneId(); 113a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 114d1a60dfe521f376e3500946d5371f126dbd36767xinhe 1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1167961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 117d1a60dfe521f376e3500946d5371f126dbd36767xinhe mRegistry.notifyMessageWaitingChangedForPhoneId(phoneId, subId, 118a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender.getMessageWaitingIndicator()); 1197961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 125cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyCallForwardingChanged(Phone sender) { 127a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1297961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 1306a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyCallForwardingChangedForSubscriber(subId, 131a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender.getCallForwardingIndicator()); 1327961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 138cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyDataActivity(Phone sender) { 140a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1427961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 1436a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyDataActivityForSubscriber(subId, 144a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville convertDataActivityState(sender.getDataActivityState())); 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 notifyDataConnection(Phone sender, String reason, String apnType, 1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville PhoneConstants.DataState state) { 1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville doNotifyDataConnection(sender, reason, apnType, state); 1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville private void doNotifyDataConnection(Phone sender, String reason, String apnType, 1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville PhoneConstants.DataState state) { 159a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 160a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long dds = SubscriptionManager.getDefaultDataSubId(); 161d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville if (DBG) log("subId = " + subId + ", DDS = " + dds); 162a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // TODO 1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // use apnType as the key to which connection we're talking about. 1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // pass apnType back up to fetch particular for this one. 1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville TelephonyManager telephony = TelephonyManager.getDefault(); 1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville LinkProperties linkProperties = null; 16896cce86cf08e37e0f09ed5057b1196e26b302743Robert Greenwalt NetworkCapabilities networkCapabilities = null; 1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville boolean roaming = false; 1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (state == PhoneConstants.DataState.CONNECTED) { 1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville linkProperties = sender.getLinkProperties(apnType); 17396cce86cf08e37e0f09ed5057b1196e26b302743Robert Greenwalt networkCapabilities = sender.getNetworkCapabilities(apnType); 1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville ServiceState ss = sender.getServiceState(); 1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville if (ss != null) roaming = ss.getRoaming(); 1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 1797961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 1806a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyDataConnectionForSubscriber(subId, 181a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville convertDataState(state), 182a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender.isDataConnectivityPossible(apnType), reason, 183a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville sender.getActiveApnHost(apnType), 184a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville apnType, 185a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville linkProperties, 186a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville networkCapabilities, 187a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville ((telephony!=null) ? telephony.getNetworkType() : 188a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville TelephonyManager.NETWORK_TYPE_UNKNOWN), 189a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville roaming); 1907961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 196cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyDataConnectionFailed(Phone sender, String reason, String apnType) { 198a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2007961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 2016a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyDataConnectionFailedForSubscriber(subId, reason, apnType); 2027961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 208cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyCellLocation(Phone sender) { 210a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville Bundle data = new Bundle(); 2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville sender.getCellLocation().fillInNotifierBundle(data); 2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2147961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 2156a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyCellLocationForSubscriber(subId, data); 2167961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 222cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 223ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville public void notifyCellInfo(Phone sender, List<CellInfo> cellInfo) { 224a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville long subId = sender.getSubId(); 2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2267961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 2276a5ef38e6ae3d3a3ad90ae180388fe85de0495a2Wink Saville mRegistry.notifyCellInfoForSubscriber(subId, cellInfo); 2287961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 234cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville @Override 2358758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville public void notifyDataConnectionRealTimeInfo(Phone sender, 2368758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville DataConnectionRealTimeInfo dcRtInfo) { 2378758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville try { 2388758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville mRegistry.notifyDataConnectionRealTimeInfo(dcRtInfo); 2398758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville } catch (RemoteException ex) { 2408758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville 2418758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville } 2428758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville } 2438758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville 2448758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville @Override 2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public void notifyOtaspChanged(Phone sender, int otaspMode) { 246a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subId? 2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville try { 2487961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski if (mRegistry != null) { 2497961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski mRegistry.notifyOtaspChanged(otaspMode); 2507961ac2c8d2e50d879bc6d5b272b7d972a335c0eAdam Lesinski } 2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } catch (RemoteException ex) { 2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville // system process is dead 2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 2560742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela public void notifyPreciseCallState(Phone sender) { 257a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subId? 2580742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela Call ringingCall = sender.getRingingCall(); 2590742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela Call foregroundCall = sender.getForegroundCall(); 2600742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela Call backgroundCall = sender.getBackgroundCall(); 2610742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela if (ringingCall != null && foregroundCall != null && backgroundCall != null) { 2620742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela try { 2630742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela mRegistry.notifyPreciseCallState( 2640742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela convertPreciseCallState(ringingCall.getState()), 2650742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela convertPreciseCallState(foregroundCall.getState()), 2660742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela convertPreciseCallState(backgroundCall.getState())); 2670742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } catch (RemoteException ex) { 2680742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela // system process is dead 2690742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 2700742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 2710742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 2720742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 273b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen public void notifyDisconnectCause(int cause, int preciseCause) { 274a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subId? 2750742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela try { 276b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen mRegistry.notifyDisconnectCause(cause, preciseCause); 2770742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } catch (RemoteException ex) { 2780742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela // system process is dead 2790742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 2800742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 2810742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 2820742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela public void notifyPreciseDataConnectionFailed(Phone sender, String reason, String apnType, 2830742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela String apn, String failCause) { 284a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subId? 2850742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela try { 2860742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela mRegistry.notifyPreciseDataConnectionFailed(reason, apnType, apn, failCause); 2870742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } catch (RemoteException ex) { 2880742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela // system process is dead 2890742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 2900742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 2910742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 292a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville @Override 293a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public void notifyVoLteServiceStateChanged(Phone sender, VoLteServiceState lteState) { 294a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // FIXME: subID 295a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville try { 296a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville mRegistry.notifyVoLteServiceStateChanged(lteState); 297a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } catch (RemoteException ex) { 298a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville // system process is dead 299a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 300a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 301a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 302ca117227299fb662cbd2c0cfe41d17ff0f903befNew Author Steven Liu @Override 303ca117227299fb662cbd2c0cfe41d17ff0f903befNew Author Steven Liu public void notifyOemHookRawEventForSubscriber(long subId, byte[] rawData) { 304ca117227299fb662cbd2c0cfe41d17ff0f903befNew Author Steven Liu try { 305ca117227299fb662cbd2c0cfe41d17ff0f903befNew Author Steven Liu mRegistry.notifyOemHookRawEventForSubscriber(subId, rawData); 306ca117227299fb662cbd2c0cfe41d17ff0f903befNew Author Steven Liu } catch (RemoteException ex) { 307ca117227299fb662cbd2c0cfe41d17ff0f903befNew Author Steven Liu // system process is dead 308ca117227299fb662cbd2c0cfe41d17ff0f903befNew Author Steven Liu } 309ca117227299fb662cbd2c0cfe41d17ff0f903befNew Author Steven Liu } 310ca117227299fb662cbd2c0cfe41d17ff0f903befNew Author Steven Liu 3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 312cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the {@link PhoneConstants.State} enum into the TelephonyManager.CALL_STATE_* 313cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * constants for the public API. 3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static int convertCallState(PhoneConstants.State state) { 3160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case RINGING: 3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.CALL_STATE_RINGING; 3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case OFFHOOK: 3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.CALL_STATE_OFFHOOK; 3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.CALL_STATE_IDLE; 3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 327cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the TelephonyManager.CALL_STATE_* constants into the 328cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * {@link PhoneConstants.State} enum for the public API. 3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static PhoneConstants.State convertCallState(int state) { 3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.CALL_STATE_RINGING: 3330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.State.RINGING; 3340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.CALL_STATE_OFFHOOK: 3350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.State.OFFHOOK; 3360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 3370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.State.IDLE; 3380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 342cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the {@link PhoneConstants.DataState} enum into the TelephonyManager.DATA_* constants 3430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for the public API. 3440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static int convertDataState(PhoneConstants.DataState state) { 3460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 3470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case CONNECTING: 3480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_CONNECTING; 3490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case CONNECTED: 3500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_CONNECTED; 3510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case SUSPENDED: 3520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_SUSPENDED; 3530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 3540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_DISCONNECTED; 3550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 359cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the TelephonyManager.DATA_* constants into {@link PhoneConstants.DataState} enum 3600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for the public API. 3610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static PhoneConstants.DataState convertDataState(int state) { 3630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 3640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_CONNECTING: 3650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.CONNECTING; 3660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_CONNECTED: 3670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.CONNECTED; 3680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_SUSPENDED: 3690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.SUSPENDED; 3700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 3710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return PhoneConstants.DataState.DISCONNECTED; 3720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 376cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the {@link Phone.DataActivityState} enum into the TelephonyManager.DATA_* constants 3770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for the public API. 3780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static int convertDataActivityState(Phone.DataActivityState state) { 3800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 3810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case DATAIN: 3820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_IN; 3830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case DATAOUT: 3840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_OUT; 3850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case DATAINANDOUT: 3860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_INOUT; 3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case DORMANT: 3880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_DORMANT; 3890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 3900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return TelephonyManager.DATA_ACTIVITY_NONE; 3910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 3930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville 3940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville /** 395cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville * Convert the TelephonyManager.DATA_* constants into the {@link Phone.DataActivityState} enum 3960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * for the public API. 3970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */ 3980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville public static Phone.DataActivityState convertDataActivityState(int state) { 3990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville switch (state) { 4000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_ACTIVITY_IN: 4010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.DATAIN; 4020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_ACTIVITY_OUT: 4030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.DATAOUT; 4040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_ACTIVITY_INOUT: 4050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.DATAINANDOUT; 4060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville case TelephonyManager.DATA_ACTIVITY_DORMANT: 4070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.DORMANT; 4080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville default: 4090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville return Phone.DataActivityState.NONE; 4100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville } 4120742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 4130742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela /** 4140742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela * Convert the {@link State} enum into the PreciseCallState.PRECISE_CALL_STATE_* constants 4150742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela * for the public API. 4160742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela */ 4170742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela public static int convertPreciseCallState(Call.State state) { 4180742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela switch (state) { 4190742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case ACTIVE: 4200742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_ACTIVE; 4210742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case HOLDING: 4220742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_HOLDING; 4230742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case DIALING: 4240742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_DIALING; 4250742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case ALERTING: 4260742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_ALERTING; 4270742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case INCOMING: 4280742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_INCOMING; 4290742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case WAITING: 4300742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_WAITING; 4310742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case DISCONNECTED: 4320742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED; 4330742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case DISCONNECTING: 4340742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING; 4350742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela default: 4360742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return PreciseCallState.PRECISE_CALL_STATE_IDLE; 4370742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 4380742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 4390742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela 4400742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela /** 4410742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela * Convert the Call.State.* constants into the {@link State} enum 4420742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela * for the public API. 4430742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela */ 4440742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela public static Call.State convertPreciseCallState(int state) { 4450742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela switch (state) { 4460742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_ACTIVE: 4470742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.ACTIVE; 4480742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_HOLDING: 4490742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.HOLDING; 4500742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_DIALING: 4510742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.DIALING; 4520742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_ALERTING: 4530742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.ALERTING; 4540742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_INCOMING: 4550742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.INCOMING; 4560742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_WAITING: 4570742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.WAITING; 4580742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED: 4590742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.DISCONNECTED; 4600742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING: 4610742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.DISCONNECTING; 4620742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela default: 4630742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela return Call.State.IDLE; 4640742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 4650742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela } 466a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville 467a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville public interface IDataStateChangedCallback { 468a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville void onDataStateChanged(long subId, String state, String reason, String apnName, 469a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville String apnType, boolean unavailable); 470a8467dd0c524787104b1ccdddc5e8af10ba729edWink Saville } 471d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville 472d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville private void log(String s) { 473d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville Rlog.d(LOG_TAG, s); 474d2c79d28884203ad4f13ebdf443b3899d56b93d6Wink Saville } 4750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville} 476