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

Commit 6e6c19ba authored by Sooraj Sasindran's avatar Sooraj Sasindran Committed by android-build-merger
Browse files

Merge "Enhance network scan request"

am: 0cd7ef0e

Change-Id: I42f16c6c7f574986c9813b9078f5178eb757bf41
parents 457ad6ff 0cd7ef0e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ LOCAL_JAVA_LIBRARIES := voip-common ims-common services
LOCAL_STATIC_JAVA_LIBRARIES := \
    android.hardware.radio-V1.0-java \
    android.hardware.radio-V1.1-java \
    android.hardware.radio-V1.2-java \
    android.hardware.radio.deprecated-V1.0-java \
    android.hidl.base-V1.0-java

+28 −0
Original line number Diff line number Diff line
@@ -125,6 +125,34 @@ public final class NetworkScanRequestTracker {
                return false;
            }
        }

        if ((nsri.mRequest.searchPeriodicity < NetworkScanRequest.MIN_SEARCH_PERIODICITY_SEC)
                || (nsri.mRequest.searchPeriodicity
                > NetworkScanRequest.MAX_SEARCH_PERIODICITY_SEC)) {
            return false;
        }

        if ((nsri.mRequest.maxSearchTime < NetworkScanRequest.MIN_SEARCH_MAX_SEC)
                || (nsri.mRequest.maxSearchTime > NetworkScanRequest.MAX_SEARCH_MAX_SEC)) {
            return false;
        }

        if ((nsri.mRequest.incrementalResultsPeriodicity
                < NetworkScanRequest.MIN_INCREMENTAL_PERIODICITY_SEC)
                || (nsri.mRequest.incrementalResultsPeriodicity
                > NetworkScanRequest.MAX_INCREMENTAL_PERIODICITY_SEC)) {
            return false;
        }

        if ((nsri.mRequest.searchPeriodicity > nsri.mRequest.maxSearchTime)
                || (nsri.mRequest.incrementalResultsPeriodicity > nsri.mRequest.maxSearchTime)) {
            return false;
        }

        if ((nsri.mRequest.mccMncs != null)
                && (nsri.mRequest.mccMncs.size() > NetworkScanRequest.MAX_MCC_MNC_LIST_SIZE)) {
            return false;
        }
        return true;
    }

+92 −42
Original line number Diff line number Diff line
@@ -1809,43 +1809,28 @@ public final class RIL extends BaseCommands implements CommandsInterface {
        }
    }

    @Override
    public void startNetworkScan(NetworkScanRequest nsr, Message result) {
        IRadio radioProxy = getRadioProxy(result);
        if (radioProxy != null) {
            android.hardware.radio.V1_1.IRadio radioProxy11 =
                    android.hardware.radio.V1_1.IRadio.castFrom(radioProxy);
            if (radioProxy11 == null) {
                if (result != null) {
                    AsyncResult.forMessage(result, null,
                            CommandException.fromRilErrno(REQUEST_NOT_SUPPORTED));
                    result.sendToTarget();
                }
            } else {
                android.hardware.radio.V1_1.NetworkScanRequest request =
                        new android.hardware.radio.V1_1.NetworkScanRequest();
                request.type = nsr.scanType;
                request.interval = 60;
                for (RadioAccessSpecifier ras : nsr.specifiers) {
                    android.hardware.radio.V1_1.RadioAccessSpecifier s =
    private android.hardware.radio.V1_1.RadioAccessSpecifier convertRadioAccessSpecifierToRadioHAL(
            RadioAccessSpecifier ras) {
        android.hardware.radio.V1_1.RadioAccessSpecifier rasInHalFormat =
                new android.hardware.radio.V1_1.RadioAccessSpecifier();
                    s.radioAccessNetwork = ras.radioAccessNetwork;
        rasInHalFormat.radioAccessNetwork = ras.radioAccessNetwork;
        List<Integer> bands = null;
        switch (ras.radioAccessNetwork) {
            case RadioAccessNetworks.GERAN:
                            bands = s.geranBands;
                bands = rasInHalFormat.geranBands;
                break;
            case RadioAccessNetworks.UTRAN:
                            bands = s.utranBands;
                bands = rasInHalFormat.utranBands;
                break;
            case RadioAccessNetworks.EUTRAN:
                            bands = s.eutranBands;
                bands = rasInHalFormat.eutranBands;
                break;
            default:
                Log.wtf(RILJ_LOG_TAG, "radioAccessNetwork " + ras.radioAccessNetwork
                        + " not supported!");
                            return;
                return null;
        }

        if (ras.bands != null) {
            for (int band : ras.bands) {
                bands.add(band);
@@ -1853,10 +1838,74 @@ public final class RIL extends BaseCommands implements CommandsInterface {
        }
        if (ras.channels != null) {
            for (int channel : ras.channels) {
                            s.channels.add(channel);
                rasInHalFormat.channels.add(channel);
            }
        }

        return rasInHalFormat;
    }
                    request.specifiers.add(s);

    @Override
    public void startNetworkScan(NetworkScanRequest nsr, Message result) {
        IRadio radioProxy = getRadioProxy(result);
        if (radioProxy != null) {
            android.hardware.radio.V1_2.IRadio radioProxy12 =
                    android.hardware.radio.V1_2.IRadio.castFrom(radioProxy);
            if (radioProxy12 != null) {
                android.hardware.radio.V1_2.NetworkScanRequest request =
                        new android.hardware.radio.V1_2.NetworkScanRequest();
                request.type = nsr.scanType;
                request.interval = nsr.searchPeriodicity;
                request.maxSearchTime = nsr.maxSearchTime;
                request.incrementalResultsPeriodicity = nsr.incrementalResultsPeriodicity;
                request.incrementalResults = nsr.incrementalResults;

                for (RadioAccessSpecifier ras : nsr.specifiers) {

                    android.hardware.radio.V1_1.RadioAccessSpecifier rasInHalFormat =
                            convertRadioAccessSpecifierToRadioHAL(ras);
                    if (rasInHalFormat == null) {
                        return;
                    }

                    request.specifiers.add(rasInHalFormat);
                }

                request.mccMncs.addAll(nsr.mccMncs);
                RILRequest rr = obtainRequest(RIL_REQUEST_START_NETWORK_SCAN, result,
                        mRILDefaultWorkSource);

                if (RILJ_LOGD) {
                    riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));
                }

                try {
                    radioProxy12.startNetworkScan_1_2(rr.mSerial, request);
                } catch (RemoteException | RuntimeException e) {
                    handleRadioProxyExceptionForRR(rr, "startNetworkScan", e);
                }
            } else {
                android.hardware.radio.V1_1.IRadio radioProxy11 =
                        android.hardware.radio.V1_1.IRadio.castFrom(radioProxy);
                if (radioProxy11 == null) {
                    if (result != null) {
                        AsyncResult.forMessage(result, null,
                                CommandException.fromRilErrno(REQUEST_NOT_SUPPORTED));
                        result.sendToTarget();
                    }
                } else {
                    android.hardware.radio.V1_1.NetworkScanRequest request =
                            new android.hardware.radio.V1_1.NetworkScanRequest();
                    request.type = nsr.scanType;
                    request.interval = nsr.searchPeriodicity;
                    for (RadioAccessSpecifier ras : nsr.specifiers) {
                        android.hardware.radio.V1_1.RadioAccessSpecifier rasInHalFormat =
                                convertRadioAccessSpecifierToRadioHAL(ras);
                        if (rasInHalFormat == null) {
                            return;
                        }

                        request.specifiers.add(rasInHalFormat);
                    }

                    RILRequest rr = obtainRequest(RIL_REQUEST_START_NETWORK_SCAN, result,
@@ -1874,6 +1923,7 @@ public final class RIL extends BaseCommands implements CommandsInterface {
                }
            }
        }
    }

    @Override
    public void stopNetworkScan(Message result) {
+12 −1
Original line number Diff line number Diff line
@@ -28,6 +28,8 @@ import android.telephony.RadioNetworkConstants.RadioAccessNetworks;

import org.junit.Test;

import java.util.ArrayList;

/** Unit tests for {@link NetworkScanRequest}. */

public class NetworkScanRequestTest {
@@ -44,7 +46,16 @@ public class NetworkScanRequestTest {
        int[] lteChannels = {5, 6, 7, 8};
        RadioAccessSpecifier lte = new RadioAccessSpecifier(ranLte, lteBands, lteChannels);
        RadioAccessSpecifier[] ras = {gsm, lte};
        NetworkScanRequest nsq = new NetworkScanRequest(NetworkScanRequest.SCAN_TYPE_ONE_SHOT, ras);
        int searchPeriodicity = 70;
        int maxSearchTime = 200;
        boolean incrementalResults = true;
        int incrementalResultsPeriodicity = 7;
        ArrayList<String> mccmncs = new ArrayList<String>();
        mccmncs.add("310480");
        mccmncs.add("21002");
        NetworkScanRequest nsq = new NetworkScanRequest(NetworkScanRequest.SCAN_TYPE_ONE_SHOT, ras,
                  searchPeriodicity, maxSearchTime, incrementalResults,
                  incrementalResultsPeriodicity, mccmncs);

        Parcel p = Parcel.obtain();
        nsq.writeToParcel(p, 0);