DefaultPhoneNotifier.java revision 8758315661d65c14d0e10d354a14f80ec1f65db7
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.LinkCapabilities;
200825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.net.LinkProperties;
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;
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.ServiceState;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.TelephonyManager;
280742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuelaimport android.telephony.PreciseCallState;
290742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuelaimport android.telephony.DisconnectCause;
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
310825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.ITelephonyRegistry;
320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
33ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Savilleimport java.util.List;
34ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * broadcast intents
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class DefaultPhoneNotifier implements PhoneNotifier {
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private ITelephonyRegistry mRegistry;
410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /*package*/
430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    DefaultPhoneNotifier() {
440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        mRegistry = ITelephonyRegistry.Stub.asInterface(ServiceManager.getService(
450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    "telephony.registry"));
460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
48cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyPhoneState(Phone sender) {
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Call ringingCall = sender.getRingingCall();
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        String incomingNumber = "";
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ringingCall != null && ringingCall.getEarliestConnection() != null){
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            incomingNumber = ringingCall.getEarliestConnection().getAddress();
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCallState(convertCallState(sender.getState()), incomingNumber);
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
62cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyServiceState(Phone sender) {
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ServiceState ss = sender.getServiceState();
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ss == null) {
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ss = new ServiceState();
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ss.setStateOutOfService();
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyServiceState(ss);
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
76cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifySignalStrength(Phone sender) {
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifySignalStrength(sender.getSignalStrength());
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
85cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyMessageWaitingChanged(Phone sender) {
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyMessageWaitingChanged(sender.getMessageWaitingIndicator());
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
94cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyCallForwardingChanged(Phone sender) {
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCallForwardingChanged(sender.getCallForwardingIndicator());
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
103cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataActivity(Phone sender) {
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyDataActivity(convertDataActivityState(sender.getDataActivityState()));
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
112cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataConnection(Phone sender, String reason, String apnType,
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PhoneConstants.DataState state) {
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        doNotifyDataConnection(sender, reason, apnType, state);
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void doNotifyDataConnection(Phone sender, String reason, String apnType,
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PhoneConstants.DataState state) {
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // TODO
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // use apnType as the key to which connection we're talking about.
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // pass apnType back up to fetch particular for this one.
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        TelephonyManager telephony = TelephonyManager.getDefault();
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LinkProperties linkProperties = null;
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LinkCapabilities linkCapabilities = null;
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        boolean roaming = false;
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (state == PhoneConstants.DataState.CONNECTED) {
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            linkProperties = sender.getLinkProperties(apnType);
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            linkCapabilities = sender.getLinkCapabilities(apnType);
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ServiceState ss = sender.getServiceState();
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ss != null) roaming = ss.getRoaming();
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyDataConnection(
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    convertDataState(state),
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    sender.isDataConnectivityPossible(apnType), reason,
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    sender.getActiveApnHost(apnType),
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    apnType,
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    linkProperties,
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    linkCapabilities,
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    ((telephony!=null) ? telephony.getNetworkType() :
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    TelephonyManager.NETWORK_TYPE_UNKNOWN),
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roaming);
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
151cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataConnectionFailed(Phone sender, String reason, String apnType) {
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyDataConnectionFailed(reason, apnType);
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
160cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyCellLocation(Phone sender) {
1620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Bundle data = new Bundle();
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        sender.getCellLocation().fillInNotifierBundle(data);
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCellLocation(data);
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
171cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
172ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville    public void notifyCellInfo(Phone sender, List<CellInfo> cellInfo) {
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCellInfo(cellInfo);
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
180cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville    @Override
1818758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville    public void notifyDataConnectionRealTimeInfo(Phone sender,
1828758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville                                                 DataConnectionRealTimeInfo dcRtInfo) {
1838758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville        try {
1848758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville            mRegistry.notifyDataConnectionRealTimeInfo(dcRtInfo);
1858758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville        } catch (RemoteException ex) {
1868758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville
1878758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville        }
1888758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville    }
1898758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville
1908758315661d65c14d0e10d354a14f80ec1f65db7Wink Saville    @Override
1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyOtaspChanged(Phone sender, int otaspMode) {
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyOtaspChanged(otaspMode);
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1990742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    public void notifyPreciseCallState(Phone sender) {
2000742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        Call ringingCall = sender.getRingingCall();
2010742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        Call foregroundCall = sender.getForegroundCall();
2020742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        Call backgroundCall = sender.getBackgroundCall();
2030742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        if (ringingCall != null && foregroundCall != null && backgroundCall != null) {
2040742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            try {
2050742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                mRegistry.notifyPreciseCallState(
2060742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                        convertPreciseCallState(ringingCall.getState()),
2070742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                        convertPreciseCallState(foregroundCall.getState()),
2080742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                        convertPreciseCallState(backgroundCall.getState()));
2090742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            } catch (RemoteException ex) {
2100742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                // system process is dead
2110742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            }
2120742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
2130742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
2140742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
215b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen    public void notifyDisconnectCause(int cause, int preciseCause) {
2160742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        try {
217b7b7a62112b79571adf74372c5f5366fd62d0031Anders Kristensen            mRegistry.notifyDisconnectCause(cause, preciseCause);
2180742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        } catch (RemoteException ex) {
2190742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            // system process is dead
2200742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
2210742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
2220742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
2230742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    public void notifyPreciseDataConnectionFailed(Phone sender, String reason, String apnType,
2240742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            String apn, String failCause) {
2250742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        try {
2260742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            mRegistry.notifyPreciseDataConnectionFailed(reason, apnType, apn, failCause);
2270742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        } catch (RemoteException ex) {
2280742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            // system process is dead
2290742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
2300742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
2310742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
233cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the {@link PhoneConstants.State} enum into the TelephonyManager.CALL_STATE_*
234cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * constants for the public API.
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertCallState(PhoneConstants.State state) {
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case RINGING:
2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_RINGING;
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case OFFHOOK:
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_OFFHOOK;
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_IDLE;
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
248cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the TelephonyManager.CALL_STATE_* constants into the
249cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * {@link PhoneConstants.State} enum for the public API.
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static PhoneConstants.State convertCallState(int state) {
2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.CALL_STATE_RINGING:
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.RINGING;
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.CALL_STATE_OFFHOOK:
2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.OFFHOOK;
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.IDLE;
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
263cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the {@link PhoneConstants.DataState} enum into the TelephonyManager.DATA_* constants
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertDataState(PhoneConstants.DataState state) {
2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case CONNECTING:
2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_CONNECTING;
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case CONNECTED:
2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_CONNECTED;
2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case SUSPENDED:
2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_SUSPENDED;
2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_DISCONNECTED;
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
280cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the TelephonyManager.DATA_* constants into {@link PhoneConstants.DataState} enum
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static PhoneConstants.DataState convertDataState(int state) {
2840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_CONNECTING:
2860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.CONNECTING;
2870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_CONNECTED:
2880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.CONNECTED;
2890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_SUSPENDED:
2900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.SUSPENDED;
2910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.DISCONNECTED;
2930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
297cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the {@link Phone.DataActivityState} enum into the TelephonyManager.DATA_* constants
2980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertDataActivityState(Phone.DataActivityState state) {
3010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
3020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAIN:
3030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_IN;
3040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAOUT:
3050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_OUT;
3060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAINANDOUT:
3070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_INOUT;
3080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DORMANT:
3090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_DORMANT;
3100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
3110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_NONE;
3120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
3130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
3150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
316cbaa45bbf2cab852b6c9c3a887e9f803d4e857eaWink Saville     * Convert the TelephonyManager.DATA_* constants into the {@link Phone.DataActivityState} enum
3170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
3180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
3190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static Phone.DataActivityState convertDataActivityState(int state) {
3200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
3210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_IN:
3220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAIN;
3230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_OUT:
3240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAOUT;
3250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_INOUT:
3260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAINANDOUT;
3270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_DORMANT:
3280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DORMANT;
3290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
3300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.NONE;
3310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
3320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
3330742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
3340742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    /**
3350742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * Convert the {@link State} enum into the PreciseCallState.PRECISE_CALL_STATE_* constants
3360742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * for the public API.
3370742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     */
3380742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    public static int convertPreciseCallState(Call.State state) {
3390742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        switch (state) {
3400742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case ACTIVE:
3410742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_ACTIVE;
3420742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case HOLDING:
3430742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_HOLDING;
3440742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case DIALING:
3450742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_DIALING;
3460742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case ALERTING:
3470742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_ALERTING;
3480742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case INCOMING:
3490742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_INCOMING;
3500742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case WAITING:
3510742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_WAITING;
3520742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case DISCONNECTED:
3530742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED;
3540742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case DISCONNECTING:
3550742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING;
3560742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            default:
3570742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return PreciseCallState.PRECISE_CALL_STATE_IDLE;
3580742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
3590742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
3600742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela
3610742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    /**
3620742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * Convert the Call.State.* constants into the {@link State} enum
3630742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     * for the public API.
3640742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela     */
3650742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    public static Call.State convertPreciseCallState(int state) {
3660742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        switch (state) {
3670742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_ACTIVE:
3680742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.ACTIVE;
3690742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_HOLDING:
3700742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.HOLDING;
3710742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_DIALING:
3720742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.DIALING;
3730742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_ALERTING:
3740742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.ALERTING;
3750742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_INCOMING:
3760742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.INCOMING;
3770742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_WAITING:
3780742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.WAITING;
3790742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTED:
3800742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.DISCONNECTED;
3810742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            case PreciseCallState.PRECISE_CALL_STATE_DISCONNECTING:
3820742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.DISCONNECTING;
3830742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela            default:
3840742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela                return Call.State.IDLE;
3850742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela        }
3860742246233c3f03f864d23e52d89e1845d994701Antonio Marín Cerezuela    }
3870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
388