DefaultPhoneNotifier.java revision ef1d4bff9bbf7d967dbcace73f08910e14e367d0
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;
250825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.ServiceState;
260825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.telephony.TelephonyManager;
270825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport android.util.Log;
280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
290825495a331bb44df395a0cdb79fab85e68db5d5Wink Savilleimport com.android.internal.telephony.ITelephonyRegistry;
300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
31ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Savilleimport java.util.List;
32ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville
330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville/**
340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville * broadcast intents
350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville */
360825495a331bb44df395a0cdb79fab85e68db5d5Wink Savillepublic class DefaultPhoneNotifier implements PhoneNotifier {
370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    static final String LOG_TAG = "GSM";
390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private static final boolean DBG = true;
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
480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyPhoneState(Phone sender) {
490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Call ringingCall = sender.getRingingCall();
500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        String incomingNumber = "";
510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ringingCall != null && ringingCall.getEarliestConnection() != null){
520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            incomingNumber = ringingCall.getEarliestConnection().getAddress();
530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCallState(convertCallState(sender.getState()), incomingNumber);
560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyServiceState(Phone sender) {
620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ServiceState ss = sender.getServiceState();
630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ss == null) {
640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ss = new ServiceState();
650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            ss.setStateOutOfService();
660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyServiceState(ss);
690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifySignalStrength(Phone sender) {
750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifySignalStrength(sender.getSignalStrength());
770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyMessageWaitingChanged(Phone sender) {
830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyMessageWaitingChanged(sender.getMessageWaitingIndicator());
850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyCallForwardingChanged(Phone sender) {
910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCallForwardingChanged(sender.getCallForwardingIndicator());
930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataActivity(Phone sender) {
990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyDataActivity(convertDataActivityState(sender.getDataActivityState()));
1010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataConnection(Phone sender, String reason, String apnType,
1070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PhoneConstants.DataState state) {
1080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        doNotifyDataConnection(sender, reason, apnType, state);
1090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void doNotifyDataConnection(Phone sender, String reason, String apnType,
1120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            PhoneConstants.DataState state) {
1130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // TODO
1140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // use apnType as the key to which connection we're talking about.
1150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        // pass apnType back up to fetch particular for this one.
1160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        TelephonyManager telephony = TelephonyManager.getDefault();
1170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LinkProperties linkProperties = null;
1180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        LinkCapabilities linkCapabilities = null;
1190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        boolean roaming = false;
1200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (state == PhoneConstants.DataState.CONNECTED) {
1220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            linkProperties = sender.getLinkProperties(apnType);
1230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            linkCapabilities = sender.getLinkCapabilities(apnType);
1240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        ServiceState ss = sender.getServiceState();
1260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        if (ss != null) roaming = ss.getRoaming();
1270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyDataConnection(
1300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    convertDataState(state),
1310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    sender.isDataConnectivityPossible(apnType), reason,
1320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    sender.getActiveApnHost(apnType),
1330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    apnType,
1340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    linkProperties,
1350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    linkCapabilities,
1360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    ((telephony!=null) ? telephony.getNetworkType() :
1370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    TelephonyManager.NETWORK_TYPE_UNKNOWN),
1380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                    roaming);
1390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyDataConnectionFailed(Phone sender, String reason, String apnType) {
1450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyDataConnectionFailed(reason, apnType);
1470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyCellLocation(Phone sender) {
1530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Bundle data = new Bundle();
1540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        sender.getCellLocation().fillInNotifierBundle(data);
1550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCellLocation(data);
1570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
162ef1d4bff9bbf7d967dbcace73f08910e14e367d0Wink Saville    public void notifyCellInfo(Phone sender, List<CellInfo> cellInfo) {
1630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyCellInfo(cellInfo);
1650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public void notifyOtaspChanged(Phone sender, int otaspMode) {
1710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        try {
1720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            mRegistry.notifyOtaspChanged(otaspMode);
1730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        } catch (RemoteException ex) {
1740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            // system process is dead
1750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    private void log(String s) {
1790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        Log.d(LOG_TAG, "[PhoneNotifier] " + s);
1800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Convert the {@link State} enum into the TelephonyManager.CALL_STATE_* constants
1840825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
1850825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
1860825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertCallState(PhoneConstants.State state) {
1870825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
1880825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case RINGING:
1890825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_RINGING;
1900825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case OFFHOOK:
1910825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_OFFHOOK;
1920825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
1930825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.CALL_STATE_IDLE;
1940825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
1950825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
1960825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
1970825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
1980825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Convert the TelephonyManager.CALL_STATE_* constants into the {@link State} enum
1990825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2000825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2010825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static PhoneConstants.State convertCallState(int state) {
2020825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2030825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.CALL_STATE_RINGING:
2040825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.RINGING;
2050825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.CALL_STATE_OFFHOOK:
2060825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.OFFHOOK;
2070825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2080825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.State.IDLE;
2090825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2100825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2110825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2120825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2130825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Convert the {@link DataState} enum into the TelephonyManager.DATA_* constants
2140825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2150825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2160825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertDataState(PhoneConstants.DataState state) {
2170825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2180825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case CONNECTING:
2190825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_CONNECTING;
2200825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case CONNECTED:
2210825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_CONNECTED;
2220825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case SUSPENDED:
2230825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_SUSPENDED;
2240825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2250825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_DISCONNECTED;
2260825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2270825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2280825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2290825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2300825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Convert the TelephonyManager.DATA_* constants into {@link DataState} enum
2310825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2320825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2330825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static PhoneConstants.DataState convertDataState(int state) {
2340825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2350825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_CONNECTING:
2360825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.CONNECTING;
2370825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_CONNECTED:
2380825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.CONNECTED;
2390825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_SUSPENDED:
2400825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.SUSPENDED;
2410825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2420825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return PhoneConstants.DataState.DISCONNECTED;
2430825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2440825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2450825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2460825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2470825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Convert the {@link DataState} enum into the TelephonyManager.DATA_* constants
2480825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2490825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2500825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static int convertDataActivityState(Phone.DataActivityState state) {
2510825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2520825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAIN:
2530825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_IN;
2540825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAOUT:
2550825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_OUT;
2560825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DATAINANDOUT:
2570825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_INOUT;
2580825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case DORMANT:
2590825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_DORMANT;
2600825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2610825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return TelephonyManager.DATA_ACTIVITY_NONE;
2620825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2630825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2640825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville
2650825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    /**
2660825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * Convert the TelephonyManager.DATA_* constants into the {@link DataState} enum
2670825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     * for the public API.
2680825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville     */
2690825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    public static Phone.DataActivityState convertDataActivityState(int state) {
2700825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        switch (state) {
2710825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_IN:
2720825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAIN;
2730825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_OUT:
2740825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAOUT;
2750825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_INOUT:
2760825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DATAINANDOUT;
2770825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            case TelephonyManager.DATA_ACTIVITY_DORMANT:
2780825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.DORMANT;
2790825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville            default:
2800825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville                return Phone.DataActivityState.NONE;
2810825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville        }
2820825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville    }
2830825495a331bb44df395a0cdb79fab85e68db5d5Wink Saville}
284