12af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville/*
22af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* Copyright (C) 2014 The Android Open Source Project
32af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville*
42af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* Licensed under the Apache License, Version 2.0 (the "License");
52af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* you may not use this file except in compliance with the License.
62af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* You may obtain a copy of the License at
72af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville*
82af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville*      http://www.apache.org/licenses/LICENSE-2.0
92af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville*
102af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* Unless required by applicable law or agreed to in writing, software
112af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* distributed under the License is distributed on an "AS IS" BASIS,
122af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* See the License for the specific language governing permissions and
142af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville* limitations under the License.
152af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville*/
162af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
172af2d57d578e0c3a2740628e7c6336b19961cc49Wink Savillepackage android.telephony;
182af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
192af2d57d578e0c3a2740628e7c6336b19961cc49Wink Savilleimport android.os.Parcel;
202af2d57d578e0c3a2740628e7c6336b19961cc49Wink Savilleimport android.os.Parcelable;
212af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
22997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scottimport com.android.internal.telephony.RILConstants;
23997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott
242af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville/**
252af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * Object to indicate the phone radio type and access technology.
262af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville *
272af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville * @hide
282af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville */
292af2d57d578e0c3a2740628e7c6336b19961cc49Wink Savillepublic class RadioAccessFamily implements Parcelable {
302af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
312af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    // Radio Access Family
322af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_UNKNOWN = (1 <<  ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN);
332af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_GPRS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GPRS);
342af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_EDGE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EDGE);
352af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_UMTS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UMTS);
362af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_IS95A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95A);
372af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_IS95B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95B);
382af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_1xRTT = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT);
392af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_EVDO_0 = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0);
402af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_EVDO_A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A);
412af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_HSDPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA);
422af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_HSUPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA);
432af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_HSPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPA);
442af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_EVDO_B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B);
452af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_EHRPD = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD);
462af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_LTE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE);
472af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_HSPAP = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP);
482af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_GSM = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM);
492af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final int RAF_TD_SCDMA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA);
502af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
512af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    /* Phone ID of phone */
522af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    private int mPhoneId;
532af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
542af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    /* Radio Access Family */
552af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    private int mRadioAccessFamily;
562af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
572af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    /**
582af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * Constructor.
592af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     *
602af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * @param phoneId the phone ID
612af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * @param radioAccessFamily the phone radio access family defined
622af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     *        in RadioAccessFamily. It's a bit mask value to represent
632af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     *        the support type.
642af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     */
652af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public RadioAccessFamily(int phoneId, int radioAccessFamily) {
662af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        mPhoneId = phoneId;
672af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        mRadioAccessFamily = radioAccessFamily;
682af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    }
692af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
702af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    /**
712af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * Get phone ID.
722af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     *
732af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * @return phone ID
742af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     */
752af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public int getPhoneId() {
762af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        return mPhoneId;
772af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    }
782af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
792af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    /**
802af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * get radio access family.
812af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     *
822af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * @return radio access family
832af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     */
842af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public int getRadioAccessFamily() {
852af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        return mRadioAccessFamily;
862af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    }
872af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
882af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    @Override
892af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public String toString() {
902af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        String ret = "{ mPhoneId = " + mPhoneId
912af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville                + ", mRadioAccessFamily = " + mRadioAccessFamily
922af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville                + "}";
932af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        return ret;
942af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    }
952af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
962af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    /**
972af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * Implement the Parcelable interface.
982af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     *
992af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * @return describe content
1002af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     */
1012af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    @Override
1022af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public int describeContents() {
1032af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        return 0;
1042af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    }
1052af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
1062af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    /**
1072af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * Implement the Parcelable interface.
1082af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     *
1092af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * @param outParcel The Parcel in which the object should be written.
1102af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * @param flags Additional flags about how the object should be written.
1112af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     */
112997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott    @Override
1132af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public void writeToParcel(Parcel outParcel, int flags) {
1142af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        outParcel.writeInt(mPhoneId);
1152af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        outParcel.writeInt(mRadioAccessFamily);
1162af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    }
1172af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
1182af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    /**
1192af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     * Implement the Parcelable interface.
1202af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville     */
1212af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    public static final Creator<RadioAccessFamily> CREATOR =
1222af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville            new Creator<RadioAccessFamily>() {
1232af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
1242af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        @Override
1252af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        public RadioAccessFamily createFromParcel(Parcel in) {
1262af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville            int phoneId = in.readInt();
1272af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville            int radioAccessFamily = in.readInt();
1282af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
1292af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville            return new RadioAccessFamily(phoneId, radioAccessFamily);
1302af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        }
1312af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
1322af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        @Override
1332af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        public RadioAccessFamily[] newArray(int size) {
1342af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville            return new RadioAccessFamily[size];
1352af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville        }
1362af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville    };
137997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott
138997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott    public static int getRafFromNetworkType(int type) {
139f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville        final int GSM = RAF_GSM | RAF_GPRS | RAF_EDGE;
140f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville        final int HS = RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP;
141f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville        final int CDMA = RAF_IS95A | RAF_IS95B | RAF_1xRTT;
142f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville        final int EVDO = RAF_EVDO_0 | RAF_EVDO_A | RAF_EVDO_B;
143f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville        final int WCDMA = HS | RAF_UMTS;
144f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville
145f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville        int raf;
146f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville
147997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott        switch (type) {
148997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott            case RILConstants.NETWORK_MODE_WCDMA_PREF:
149f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = GSM | WCDMA;
150f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
151997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott            case RILConstants.NETWORK_MODE_GSM_ONLY:
152f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = GSM;
153f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
154482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_WCDMA_ONLY:
155f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = WCDMA;
156f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
157482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_GSM_UMTS:
158f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = GSM | WCDMA;
159f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
160482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_CDMA:
161f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = CDMA;
162f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
163482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO:
164f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = RAF_LTE | CDMA | EVDO;
165f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
166482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_LTE_GSM_WCDMA:
167f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = RAF_LTE | GSM | WCDMA;
168f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
169482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA:
170f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = RAF_LTE | CDMA | EVDO | GSM | WCDMA;
171f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
172482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_LTE_ONLY:
173f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = RAF_LTE;
174f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
175482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_LTE_WCDMA:
176f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = RAF_LTE | WCDMA;
177f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
178482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_CDMA_NO_EVDO:
179f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = CDMA;
180f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
181482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_EVDO_NO_CDMA:
182f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = EVDO;
183f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
184482b4246c25164f8a55c473acec1d2ca9a9e08d2Stuart Scott            case RILConstants.NETWORK_MODE_GLOBAL:
185f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = GSM | WCDMA | CDMA | EVDO;
186f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
187997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott            default:
188f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                raf = RAF_UNKNOWN;
189f73c2d1f0b6d55668c19493fba0088a69e6b128fWink Saville                break;
190997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott        }
191b5f1e878d1bc245b676a1a2504c30d21a311bf6cWink Saville        return raf;
192997ddc8e3e4b9d4daa65294dbd5cc3ecfb79c101Stuart Scott    }
1932af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville}
1942af2d57d578e0c3a2740628e7c6336b19961cc49Wink Saville
195