Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c180f9ad authored by Abhishek Adappa's avatar Abhishek Adappa Committed by Robert Greenwalt
Browse files

Radio Access Family related fixes

1. Include EHRPD in the EVDO group
2. Fix mapping of CDMA network type to include EVDO
3. Add utility to get the network type from the Raf

Change-Id: I35023083be4c681809c003c7ed6a31c698ea4647
parent 78cb6f54
Loading
Loading
Loading
Loading
+72 −7
Original line number Diff line number Diff line
@@ -48,6 +48,13 @@ public class RadioAccessFamily implements Parcelable {
    public static final int RAF_GSM = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM);
    public static final int RAF_TD_SCDMA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA);

    // Grouping of RAFs
    private static final int GSM = RAF_GSM | RAF_GPRS | RAF_EDGE;
    private static final int HS = RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP;
    private static final int CDMA = RAF_IS95A | RAF_IS95B | RAF_1xRTT;
    private static final int EVDO = RAF_EVDO_0 | RAF_EVDO_A | RAF_EVDO_B | RAF_EHRPD;
    private static final int WCDMA = HS | RAF_UMTS;

    /* Phone ID of phone */
    private int mPhoneId;

@@ -136,12 +143,6 @@ public class RadioAccessFamily implements Parcelable {
    };

    public static int getRafFromNetworkType(int type) {
        final int GSM = RAF_GSM | RAF_GPRS | RAF_EDGE;
        final int HS = RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP;
        final int CDMA = RAF_IS95A | RAF_IS95B | RAF_1xRTT;
        final int EVDO = RAF_EVDO_0 | RAF_EVDO_A | RAF_EVDO_B;
        final int WCDMA = HS | RAF_UMTS;

        int raf;

        switch (type) {
@@ -158,7 +159,7 @@ public class RadioAccessFamily implements Parcelable {
                raf = GSM | WCDMA;
                break;
            case RILConstants.NETWORK_MODE_CDMA:
                raf = CDMA;
                raf = CDMA | EVDO;
                break;
            case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO:
                raf = RAF_LTE | CDMA | EVDO;
@@ -188,6 +189,70 @@ public class RadioAccessFamily implements Parcelable {
                raf = RAF_UNKNOWN;
                break;
        }

        return raf;
    }

    /**
     * if the raf includes ANY bit set for a group
     * adjust it to contain ALL the bits for that group
     */
    private static int getAdjustedRaf(int raf) {
        raf = ((GSM & raf) > 0) ? (GSM | raf) : raf;
        raf = ((WCDMA & raf) > 0) ? (WCDMA | raf) : raf;
        raf = ((CDMA & raf) > 0) ? (CDMA | raf) : raf;
        raf = ((EVDO & raf) > 0) ? (EVDO | raf) : raf;

        return raf;
    }

    public static int getNetworkTypeFromRaf(int raf) {
        int type;

        raf = getAdjustedRaf(raf);

        switch (raf) {
            case (GSM | WCDMA):
                type = RILConstants.NETWORK_MODE_WCDMA_PREF;
                break;
            case GSM:
                type = RILConstants.NETWORK_MODE_GSM_ONLY;
                break;
            case WCDMA:
                type = RILConstants.NETWORK_MODE_WCDMA_ONLY;
                break;
            case (CDMA | EVDO):
                type = RILConstants.NETWORK_MODE_CDMA;
                break;
            case (RAF_LTE | CDMA | EVDO):
                type = RILConstants.NETWORK_MODE_LTE_CDMA_EVDO;
                break;
            case (RAF_LTE | GSM | WCDMA):
                type = RILConstants.NETWORK_MODE_LTE_GSM_WCDMA;
                break;
            case (RAF_LTE | CDMA | EVDO | GSM | WCDMA):
                type = RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA;
                break;
            case RAF_LTE:
                type = RILConstants.NETWORK_MODE_LTE_ONLY;
                break;
            case (RAF_LTE | WCDMA):
                type = RILConstants.NETWORK_MODE_LTE_WCDMA;
                break;
            case CDMA:
                type = RILConstants.NETWORK_MODE_CDMA_NO_EVDO;
                break;
            case EVDO:
                type = RILConstants.NETWORK_MODE_EVDO_NO_CDMA;
                break;
            case (GSM | WCDMA | CDMA | EVDO):
                type = RILConstants.NETWORK_MODE_GLOBAL;
                break;
            default:
                type = RILConstants.PREFERRED_NETWORK_MODE ;
                break;
        }

        return raf;
    }
}