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

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

Fix filtering logic for setting the network type

Convert the network type to radio access family (RAF) before filtering it.
Convert the filtered RAF to network type before sending it to the
modem.

Change-Id: I3c044572d65e61b12143228309b931dfd1032fec
parent 05fcb2ea
Loading
Loading
Loading
Loading
+25 −4
Original line number Diff line number Diff line
@@ -1375,11 +1375,32 @@ public abstract class PhoneBase extends Handler implements Phone {
    @Override
    public void setPreferredNetworkType(int networkType, Message response) {
        // Only set preferred network types to that which the modem supports
        final int raf = getRadioAccessFamily();
        int modemRaf = getRadioAccessFamily();
        int rafFromType = RadioAccessFamily.getRafFromNetworkType(networkType);

        if (raf != RadioAccessFamily.RAF_UNKNOWN) {
            mCi.setPreferredNetworkType(networkType & raf, response);
        if (modemRaf == RadioAccessFamily.RAF_UNKNOWN
                || rafFromType == RadioAccessFamily.RAF_UNKNOWN) {
            Rlog.d(LOG_TAG, "setPreferredNetworkType: Abort, unknown RAF: "
                    + modemRaf + " " + rafFromType);
            if (response != null) {
                CommandException ex;

                ex = new CommandException(CommandException.Error.GENERIC_FAILURE);
                AsyncResult.forMessage(response, null, ex);
                response.sendToTarget();
            }
            return;
        }

        int filteredRaf = (rafFromType & modemRaf);
        int filteredType = RadioAccessFamily.getNetworkTypeFromRaf(filteredRaf);

        Rlog.d(LOG_TAG, "setPreferredNetworkType: networkType = " + networkType
                + " modemRaf = " + modemRaf
                + " rafFromType = " + rafFromType
                + " filteredType = " + filteredType);

        mCi.setPreferredNetworkType(filteredType, response);
    }

    @Override