19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.telephony;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable;
219c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN;
229c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_EDGE;
239c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_GPRS;
249c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS;
259c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSDPA;
269c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSUPA;
279c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwangimport static android.telephony.TelephonyManager.NETWORK_TYPE_HSPA;
289c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang
299c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
322563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville * Represents the neighboring cell information, including
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Received Signal Strength and Cell ID location.
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class NeighboringCellInfo implements Parcelable
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project{
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Signal strength is not available
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final public int UNKNOWN_RSSI = 99;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Cell location is not available
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final public int UNKNOWN_CID = -1;
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
469c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    /**
479c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * In GSM, mRssi is the Received RSSI;
489c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * In UMTS, mRssi is the Level index of CPICH Received Signal Code Power
499c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     */
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private int mRssi;
519c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    /**
529c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * CID in 16 bits format in GSM. Return UNKNOWN_CID in UMTS and CMDA.
539c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     */
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private int mCid;
559c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    /**
569c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * LAC in 16 bits format in GSM. Return UNKNOWN_CID in UMTS and CMDA.
579c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     */
589c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    private int mLac;
599c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    /**
609c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * Primary Scrambling Code in 9 bits format in UMTS
619c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * Return UNKNOWN_CID in GSM and CMDA.
629c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     */
639c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    private int mPsc;
649c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    /**
659c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * Radio network type, value is one of following
669c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * TelephonyManager.NETWORK_TYPE_XXXXXX.
679c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     */
689c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    private int mNetworkType;
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Empty constructor.  Initializes the RSSI and CID.
729c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *
739c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * NeighboringCellInfo is one time shot for the neighboring cells based on
749c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * the radio network type at that moment. Its constructor needs radio network
759c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * type.
76cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     *
77cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     * @deprecated by {@link #NeighboringCellInfo(int, String, int)}
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
7929e4a3c566f435c32f0b95e4ac8e8b33cac6fabaDianne Hackborn    @Deprecated
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public NeighboringCellInfo() {
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRssi = UNKNOWN_RSSI;
829c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mLac = UNKNOWN_CID;
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCid = UNKNOWN_CID;
849c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mPsc = UNKNOWN_CID;
859c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mNetworkType = NETWORK_TYPE_UNKNOWN;
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Initialize the object from rssi and cid.
909c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *
919c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * NeighboringCellInfo is one time shot for the neighboring cells based on
929c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * the radio network type at that moment. Its constructor needs radio network
939c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * type.
94cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     *
95cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     * @deprecated by {@link #NeighboringCellInfo(int, String, int)}
969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
9729e4a3c566f435c32f0b95e4ac8e8b33cac6fabaDianne Hackborn    @Deprecated
989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public NeighboringCellInfo(int rssi, int cid) {
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRssi = rssi;
1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCid = cid;
1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1022563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1049c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * Initialize the object from rssi, location string, and radioType
1059c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * radioType is one of following
1069c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * {@link TelephonyManager#NETWORK_TYPE_GPRS TelephonyManager.NETWORK_TYPE_GPRS},
1079c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * {@link TelephonyManager#NETWORK_TYPE_EDGE TelephonyManager.NETWORK_TYPE_EDGE},
1089c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * {@link TelephonyManager#NETWORK_TYPE_UMTS TelephonyManager.NETWORK_TYPE_UMTS},
1099c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * {@link TelephonyManager#NETWORK_TYPE_HSDPA TelephonyManager.NETWORK_TYPE_HSDPA},
1109c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * {@link TelephonyManager#NETWORK_TYPE_HSUPA TelephonyManager.NETWORK_TYPE_HSUPA},
1119c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * and {@link TelephonyManager#NETWORK_TYPE_HSPA TelephonyManager.NETWORK_TYPE_HSPA}.
1129c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     */
1139c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    public NeighboringCellInfo(int rssi, String location, int radioType) {
1149c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        // set default value
1159c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mRssi = rssi;
1169c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mNetworkType = NETWORK_TYPE_UNKNOWN;
1179c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mPsc = UNKNOWN_CID;
1189c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mLac = UNKNOWN_CID;
1199c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mCid = UNKNOWN_CID;
1209c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang
1219c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang
1229c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        // pad location string with leading "0"
1239c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        int l = location.length();
1249c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        if (l > 8) return;
1259c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        if (l < 8) {
1269c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            for (int i = 0; i < (8-l); i++) {
1279c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang                location = "0" + location;
1289c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            }
1299c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        }
130962a990a45a2a9f9c3002064e71f9c2fed86acf1Robert Greenwalt        // TODO - handle LTE and eHRPD (or find they can't be supported)
1319c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        try {// set LAC/CID or PSC based on radioType
1329c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            switch (radioType) {
1339c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            case NETWORK_TYPE_GPRS:
1349c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            case NETWORK_TYPE_EDGE:
1359c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang                mNetworkType = radioType;
136c6dd77d04a94b7fa0659a099e5b85b70f5f2ea9fNaveen Kalla                // check if 0xFFFFFFFF for UNKNOWN_CID
137c6dd77d04a94b7fa0659a099e5b85b70f5f2ea9fNaveen Kalla                if (!location.equalsIgnoreCase("FFFFFFFF")) {
138c6dd77d04a94b7fa0659a099e5b85b70f5f2ea9fNaveen Kalla                    mCid = Integer.valueOf(location.substring(4), 16);
139c6dd77d04a94b7fa0659a099e5b85b70f5f2ea9fNaveen Kalla                    mLac = Integer.valueOf(location.substring(0, 4), 16);
140c6dd77d04a94b7fa0659a099e5b85b70f5f2ea9fNaveen Kalla                }
1419c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang                break;
1429c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            case NETWORK_TYPE_UMTS:
1439c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            case NETWORK_TYPE_HSDPA:
1449c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            case NETWORK_TYPE_HSUPA:
1459c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            case NETWORK_TYPE_HSPA:
1469c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang                mNetworkType = radioType;
1479c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang                mPsc = Integer.valueOf(location, 16);
1489c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang                break;
1499c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            }
1509c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        } catch (NumberFormatException e) {
1519c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            // parsing location error
1529c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            mPsc = UNKNOWN_CID;
1539c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            mLac = UNKNOWN_CID;
1549c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            mCid = UNKNOWN_CID;
1559c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            mNetworkType = NETWORK_TYPE_UNKNOWN;
1569c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        }
1579c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    }
1589c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang
1599c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    /**
1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Initialize the object from a parcel.
1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public NeighboringCellInfo(Parcel in) {
1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRssi = in.readInt();
1649c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mLac = in.readInt();
1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCid = in.readInt();
1669c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mPsc = in.readInt();
1679c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        mNetworkType = in.readInt();
1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1692563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville
1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1719c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * @return received signal strength or UNKNOWN_RSSI if unknown
1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     *
1739c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * For GSM, it is in "asu" ranging from 0 to 31 (dBm = -113 + 2*asu)
1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * 0 means "-113 dBm or less" and 31 means "-51 dBm or greater"
1759c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * For UMTS, it is the Level index of CPICH RSCP defined in TS 25.125
1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getRssi() {
1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mRssi;
1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1829c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * @return LAC in GSM, 0xffff max legal value
1839c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *  UNKNOWN_CID if in UMTS or CMDA or unknown
1849c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     */
1859c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    public int getLac() {
1869c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        return mLac;
1879c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    }
1889c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang
1899c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    /**
1909c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * @return cell id in GSM, 0xffff max legal value
1919c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *  UNKNOWN_CID if in UMTS or CDMA or unknown
1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int getCid() {
1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return mCid;
1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
1989c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * @return Primary Scrambling Code in 9 bits format in UMTS, 0x1ff max value
1999c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *  UNKNOWN_CID if in GSM or CMDA or unknown
2009c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     */
2019c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    public int getPsc() {
2029c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        return mPsc;
2039c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    }
2049c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang
2059c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    /**
2069c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * @return Radio network type while neighboring cell location is stored.
2079c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *
2089c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * Return {@link TelephonyManager#NETWORK_TYPE_UNKNOWN TelephonyManager.NETWORK_TYPE_UNKNOWN}
2099c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * means that the location information is unavailable.
2109c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *
2119c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * Return {@link TelephonyManager#NETWORK_TYPE_GPRS TelephonyManager.NETWORK_TYPE_GPRS} or
2129c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * {@link TelephonyManager#NETWORK_TYPE_EDGE TelephonyManager.NETWORK_TYPE_EDGE}
2139c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * means that Neighboring Cell information is stored for GSM network, in
2149c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * which {@link NeighboringCellInfo#getLac NeighboringCellInfo.getLac} and
2159c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * {@link NeighboringCellInfo#getCid NeighboringCellInfo.getCid} should be
2169c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * called to access location.
2179c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *
2189c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * Return {@link TelephonyManager#NETWORK_TYPE_UMTS TelephonyManager.NETWORK_TYPE_UMTS},
2199c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * {@link TelephonyManager#NETWORK_TYPE_HSDPA TelephonyManager.NETWORK_TYPE_HSDPA},
2209c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * {@link TelephonyManager#NETWORK_TYPE_HSUPA TelephonyManager.NETWORK_TYPE_HSUPA},
2219c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * or {@link TelephonyManager#NETWORK_TYPE_HSPA TelephonyManager.NETWORK_TYPE_HSPA}
2229c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * means that Neighboring Cell information is stored for UMTS network, in
2239c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * which {@link NeighboringCellInfo#getPsc NeighboringCellInfo.getPsc}
2249c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * should be called to access location.
2259c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     */
2269c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    public int getNetworkType() {
2279c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        return mNetworkType;
2289c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    }
2299c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang    /**
2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set the cell id.
2319c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *
2329c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * NeighboringCellInfo is a one time shot for the neighboring cells based on
2339c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * the radio network type at that moment. It shouldn't be changed after
2349c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * creation.
235cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     *
236cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     * @deprecated cid value passed as in location parameter passed to constructor
237cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     *              {@link #NeighboringCellInfo(int, String, int)}
2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
23929e4a3c566f435c32f0b95e4ac8e8b33cac6fabaDianne Hackborn    @Deprecated
2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setCid(int cid) {
2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mCid = cid;
2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * Set the signal strength of the cell.
2469c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     *
2479c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * NeighboringCellInfo is a one time shot for the neighboring cells based on
2489c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * the radio network type at that moment. It shouldn't be changed after
2499c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang     * creation.
250cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     *
251cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     * @deprecated initial rssi value passed as parameter to constructor
252cc6ff2bc6011294367d9a8c644f811449e952eb7Wink Saville     *              {@link #NeighboringCellInfo(int, String, int)}
2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
25429e4a3c566f435c32f0b95e4ac8e8b33cac6fabaDianne Hackborn    @Deprecated
2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void setRssi(int rssi) {
2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mRssi = rssi;
2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String toString() {
2619c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        StringBuilder sb = new StringBuilder();
2629c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang
2639c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        sb.append("[");
2649c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        if (mPsc != UNKNOWN_CID) {
2659c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            sb.append(Integer.toHexString(mPsc))
2669c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang                    .append("@").append(((mRssi == UNKNOWN_RSSI)? "-" : mRssi));
2679c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        } else if(mLac != UNKNOWN_CID && mCid != UNKNOWN_CID) {
2689c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang            sb.append(Integer.toHexString(mLac))
2699c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang                    .append(Integer.toHexString(mCid))
2709c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang                    .append("@").append(((mRssi == UNKNOWN_RSSI)? "-" : mRssi));
2719c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        }
2729c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        sb.append("]");
2739c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang
2749c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        return sb.toString();
2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int describeContents() {
2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void writeToParcel(Parcel dest, int flags) {
2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        dest.writeInt(mRssi);
2839c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        dest.writeInt(mLac);
2842563a3ac05dd3cf8a07203ae682c243f2e793137Wink Saville        dest.writeInt(mCid);
2859c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        dest.writeInt(mPsc);
2869c118c80fd0a5416051f2a49f515301f2cf3fd6fjohnwang        dest.writeInt(mNetworkType);
2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static final Parcelable.Creator<NeighboringCellInfo> CREATOR
2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    = new Parcelable.Creator<NeighboringCellInfo>() {
2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public NeighboringCellInfo createFromParcel(Parcel in) {
2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new NeighboringCellInfo(in);
2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public NeighboringCellInfo[] newArray(int size) {
2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            return new NeighboringCellInfo[size];
2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
299c6dd77d04a94b7fa0659a099e5b85b70f5f2ea9fNaveen Kalla}
300