Loading Android.mk +1 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ LOCAL_JAVA_LIBRARIES := voip-common ims-common services LOCAL_STATIC_JAVA_LIBRARIES := \ LOCAL_STATIC_JAVA_LIBRARIES := \ android.hardware.radio-V1.0-java \ android.hardware.radio-V1.0-java \ android.hardware.radio-V1.1-java \ android.hardware.radio-V1.1-java \ android.hardware.radio-V1.2-java \ android.hardware.radio.deprecated-V1.0-java \ android.hardware.radio.deprecated-V1.0-java \ android.hidl.base-V1.0-java android.hidl.base-V1.0-java Loading src/java/com/android/internal/telephony/NetworkScanRequestTracker.java +28 −0 Original line number Original line Diff line number Diff line Loading @@ -125,6 +125,34 @@ public final class NetworkScanRequestTracker { return false; 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; return true; } } Loading src/java/com/android/internal/telephony/RIL.java +92 −42 Original line number Original line Diff line number Diff line Loading @@ -1809,43 +1809,28 @@ public final class RIL extends BaseCommands implements CommandsInterface { } } } } @Override private android.hardware.radio.V1_1.RadioAccessSpecifier convertRadioAccessSpecifierToRadioHAL( public void startNetworkScan(NetworkScanRequest nsr, Message result) { RadioAccessSpecifier ras) { IRadio radioProxy = getRadioProxy(result); android.hardware.radio.V1_1.RadioAccessSpecifier rasInHalFormat = 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 = new android.hardware.radio.V1_1.RadioAccessSpecifier(); new android.hardware.radio.V1_1.RadioAccessSpecifier(); s.radioAccessNetwork = ras.radioAccessNetwork; rasInHalFormat.radioAccessNetwork = ras.radioAccessNetwork; List<Integer> bands = null; List<Integer> bands = null; switch (ras.radioAccessNetwork) { switch (ras.radioAccessNetwork) { case RadioAccessNetworks.GERAN: case RadioAccessNetworks.GERAN: bands = s.geranBands; bands = rasInHalFormat.geranBands; break; break; case RadioAccessNetworks.UTRAN: case RadioAccessNetworks.UTRAN: bands = s.utranBands; bands = rasInHalFormat.utranBands; break; break; case RadioAccessNetworks.EUTRAN: case RadioAccessNetworks.EUTRAN: bands = s.eutranBands; bands = rasInHalFormat.eutranBands; break; break; default: default: Log.wtf(RILJ_LOG_TAG, "radioAccessNetwork " + ras.radioAccessNetwork Log.wtf(RILJ_LOG_TAG, "radioAccessNetwork " + ras.radioAccessNetwork + " not supported!"); + " not supported!"); return; return null; } } if (ras.bands != null) { if (ras.bands != null) { for (int band : ras.bands) { for (int band : ras.bands) { bands.add(band); bands.add(band); Loading @@ -1853,10 +1838,74 @@ public final class RIL extends BaseCommands implements CommandsInterface { } } if (ras.channels != null) { if (ras.channels != null) { for (int channel : ras.channels) { 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, RILRequest rr = obtainRequest(RIL_REQUEST_START_NETWORK_SCAN, result, Loading @@ -1874,6 +1923,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { } } } } } } } @Override @Override public void stopNetworkScan(Message result) { public void stopNetworkScan(Message result) { Loading tests/telephonytests/src/com/android/internal/telephony/NetworkScanRequestTest.java +12 −1 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,8 @@ import android.telephony.RadioNetworkConstants.RadioAccessNetworks; import org.junit.Test; import org.junit.Test; import java.util.ArrayList; /** Unit tests for {@link NetworkScanRequest}. */ /** Unit tests for {@link NetworkScanRequest}. */ public class NetworkScanRequestTest { public class NetworkScanRequestTest { Loading @@ -44,7 +46,16 @@ public class NetworkScanRequestTest { int[] lteChannels = {5, 6, 7, 8}; int[] lteChannels = {5, 6, 7, 8}; RadioAccessSpecifier lte = new RadioAccessSpecifier(ranLte, lteBands, lteChannels); RadioAccessSpecifier lte = new RadioAccessSpecifier(ranLte, lteBands, lteChannels); RadioAccessSpecifier[] ras = {gsm, lte}; 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(); Parcel p = Parcel.obtain(); nsq.writeToParcel(p, 0); nsq.writeToParcel(p, 0); Loading Loading
Android.mk +1 −0 Original line number Original line Diff line number Diff line Loading @@ -29,6 +29,7 @@ LOCAL_JAVA_LIBRARIES := voip-common ims-common services LOCAL_STATIC_JAVA_LIBRARIES := \ LOCAL_STATIC_JAVA_LIBRARIES := \ android.hardware.radio-V1.0-java \ android.hardware.radio-V1.0-java \ android.hardware.radio-V1.1-java \ android.hardware.radio-V1.1-java \ android.hardware.radio-V1.2-java \ android.hardware.radio.deprecated-V1.0-java \ android.hardware.radio.deprecated-V1.0-java \ android.hidl.base-V1.0-java android.hidl.base-V1.0-java Loading
src/java/com/android/internal/telephony/NetworkScanRequestTracker.java +28 −0 Original line number Original line Diff line number Diff line Loading @@ -125,6 +125,34 @@ public final class NetworkScanRequestTracker { return false; 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; return true; } } Loading
src/java/com/android/internal/telephony/RIL.java +92 −42 Original line number Original line Diff line number Diff line Loading @@ -1809,43 +1809,28 @@ public final class RIL extends BaseCommands implements CommandsInterface { } } } } @Override private android.hardware.radio.V1_1.RadioAccessSpecifier convertRadioAccessSpecifierToRadioHAL( public void startNetworkScan(NetworkScanRequest nsr, Message result) { RadioAccessSpecifier ras) { IRadio radioProxy = getRadioProxy(result); android.hardware.radio.V1_1.RadioAccessSpecifier rasInHalFormat = 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 = new android.hardware.radio.V1_1.RadioAccessSpecifier(); new android.hardware.radio.V1_1.RadioAccessSpecifier(); s.radioAccessNetwork = ras.radioAccessNetwork; rasInHalFormat.radioAccessNetwork = ras.radioAccessNetwork; List<Integer> bands = null; List<Integer> bands = null; switch (ras.radioAccessNetwork) { switch (ras.radioAccessNetwork) { case RadioAccessNetworks.GERAN: case RadioAccessNetworks.GERAN: bands = s.geranBands; bands = rasInHalFormat.geranBands; break; break; case RadioAccessNetworks.UTRAN: case RadioAccessNetworks.UTRAN: bands = s.utranBands; bands = rasInHalFormat.utranBands; break; break; case RadioAccessNetworks.EUTRAN: case RadioAccessNetworks.EUTRAN: bands = s.eutranBands; bands = rasInHalFormat.eutranBands; break; break; default: default: Log.wtf(RILJ_LOG_TAG, "radioAccessNetwork " + ras.radioAccessNetwork Log.wtf(RILJ_LOG_TAG, "radioAccessNetwork " + ras.radioAccessNetwork + " not supported!"); + " not supported!"); return; return null; } } if (ras.bands != null) { if (ras.bands != null) { for (int band : ras.bands) { for (int band : ras.bands) { bands.add(band); bands.add(band); Loading @@ -1853,10 +1838,74 @@ public final class RIL extends BaseCommands implements CommandsInterface { } } if (ras.channels != null) { if (ras.channels != null) { for (int channel : ras.channels) { 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, RILRequest rr = obtainRequest(RIL_REQUEST_START_NETWORK_SCAN, result, Loading @@ -1874,6 +1923,7 @@ public final class RIL extends BaseCommands implements CommandsInterface { } } } } } } } @Override @Override public void stopNetworkScan(Message result) { public void stopNetworkScan(Message result) { Loading
tests/telephonytests/src/com/android/internal/telephony/NetworkScanRequestTest.java +12 −1 Original line number Original line Diff line number Diff line Loading @@ -28,6 +28,8 @@ import android.telephony.RadioNetworkConstants.RadioAccessNetworks; import org.junit.Test; import org.junit.Test; import java.util.ArrayList; /** Unit tests for {@link NetworkScanRequest}. */ /** Unit tests for {@link NetworkScanRequest}. */ public class NetworkScanRequestTest { public class NetworkScanRequestTest { Loading @@ -44,7 +46,16 @@ public class NetworkScanRequestTest { int[] lteChannels = {5, 6, 7, 8}; int[] lteChannels = {5, 6, 7, 8}; RadioAccessSpecifier lte = new RadioAccessSpecifier(ranLte, lteBands, lteChannels); RadioAccessSpecifier lte = new RadioAccessSpecifier(ranLte, lteBands, lteChannels); RadioAccessSpecifier[] ras = {gsm, lte}; 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(); Parcel p = Parcel.obtain(); nsq.writeToParcel(p, 0); nsq.writeToParcel(p, 0); Loading