Update startNetworkScan to use 1.5 HAL
Bug: 143683654
Test: atest RILTest
Change-Id: I59e819b929bdd2dd6c52c4beba7c36379ed32b61
Merged-In: I59e819b929bdd2dd6c52c4beba7c36379ed32b61
diff --git a/Android.bp b/Android.bp
index 8cf8d0d..dc70288 100644
--- a/Android.bp
+++ b/Android.bp
@@ -57,6 +57,7 @@
"android.hardware.radio-V1.2-java",
"android.hardware.radio-V1.3-java",
"android.hardware.radio-V1.4-java",
+ "android.hardware.radio-V1.5-java",
"voip-common",
"ims-common",
"services",
diff --git a/src/java/com/android/internal/telephony/RIL.java b/src/java/com/android/internal/telephony/RIL.java
index e7201e4..1b223ab 100644
--- a/src/java/com/android/internal/telephony/RIL.java
+++ b/src/java/com/android/internal/telephony/RIL.java
@@ -180,6 +180,9 @@
/** @hide */
public static final HalVersion RADIO_HAL_VERSION_1_4 = new HalVersion(1, 4);
+ /** @hide */
+ public static final HalVersion RADIO_HAL_VERSION_1_5 = new HalVersion(1, 5);
+
// IRadio version
private HalVersion mRadioVersion = RADIO_HAL_VERSION_UNKNOWN;
@@ -435,14 +438,23 @@
+ " is disabled");
} else {
try {
- mRadioProxy = android.hardware.radio.V1_4.IRadio.getService(
+ mRadioProxy = android.hardware.radio.V1_5.IRadio.getService(
HIDL_SERVICE_NAME[mPhoneId], true);
- mRadioVersion = RADIO_HAL_VERSION_1_4;
+ mRadioVersion = RADIO_HAL_VERSION_1_5;
} catch (NoSuchElementException e) {
}
if (mRadioProxy == null) {
try {
+ mRadioProxy = android.hardware.radio.V1_4.IRadio.getService(
+ HIDL_SERVICE_NAME[mPhoneId], true);
+ mRadioVersion = RADIO_HAL_VERSION_1_4;
+ } catch (NoSuchElementException e) {
+ }
+ }
+
+ if (mRadioProxy == null) {
+ try {
mRadioProxy = android.hardware.radio.V1_3.IRadio.getService(
HIDL_SERVICE_NAME[mPhoneId], true);
mRadioVersion = RADIO_HAL_VERSION_1_3;
@@ -2080,12 +2092,83 @@
return rasInHalFormat;
}
+ private android.hardware.radio.V1_5.RadioAccessSpecifier
+ convertRadioAccessSpecifierToRadioHAL_1_5(RadioAccessSpecifier ras) {
+ android.hardware.radio.V1_5.RadioAccessSpecifier rasInHalFormat =
+ new android.hardware.radio.V1_5.RadioAccessSpecifier();
+ rasInHalFormat.radioAccessNetwork = ras.getRadioAccessNetwork();
+ List<Integer> bands = null;
+ switch (ras.getRadioAccessNetwork()) {
+ case AccessNetworkType.GERAN:
+ bands = rasInHalFormat.bands.geranBands();
+ break;
+ case AccessNetworkType.UTRAN:
+ bands = rasInHalFormat.bands.utranBands();
+ break;
+ case AccessNetworkType.EUTRAN:
+ bands = rasInHalFormat.bands.eutranBands();
+ break;
+ case AccessNetworkType.NGRAN:
+ bands = rasInHalFormat.bands.ngranBands();
+ break;
+ default:
+ Log.wtf(RILJ_LOG_TAG, "radioAccessNetwork " + ras.getRadioAccessNetwork()
+ + " not supported!");
+ return null;
+ }
+
+ if (ras.getBands() != null) {
+ for (int band : ras.getBands()) {
+ bands.add(band);
+ }
+ }
+ if (ras.getChannels() != null) {
+ for (int channel : ras.getChannels()) {
+ rasInHalFormat.channels.add(channel);
+ }
+ }
+
+ return rasInHalFormat;
+ }
+
@Override
public void startNetworkScan(NetworkScanRequest nsr, Message result) {
IRadio radioProxy = getRadioProxy(result);
if (radioProxy != null) {
- if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_2)) {
+ if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_5)) {
+ android.hardware.radio.V1_5.NetworkScanRequest request =
+ new android.hardware.radio.V1_5.NetworkScanRequest();
+ request.type = nsr.getScanType();
+ request.interval = nsr.getSearchPeriodicity();
+ request.maxSearchTime = nsr.getMaxSearchTime();
+ request.incrementalResultsPeriodicity = nsr.getIncrementalResultsPeriodicity();
+ request.incrementalResults = nsr.getIncrementalResults();
+ for (RadioAccessSpecifier ras : nsr.getSpecifiers()) {
+ android.hardware.radio.V1_5.RadioAccessSpecifier rasInHalFormat =
+ convertRadioAccessSpecifierToRadioHAL_1_5(ras);
+ if (rasInHalFormat == null) {
+ return;
+ }
+ request.specifiers.add(rasInHalFormat);
+ }
+
+ request.mccMncs.addAll(nsr.getPlmns());
+ RILRequest rr = obtainRequest(RIL_REQUEST_START_NETWORK_SCAN, result,
+ mRILDefaultWorkSource);
+
+ if (RILJ_LOGD) {
+ riljLog(rr.serialString() + "> " + requestToString(rr.mRequest));
+ }
+
+ try {
+ android.hardware.radio.V1_5.IRadio radioProxy15 =
+ (android.hardware.radio.V1_5.IRadio) radioProxy;
+ radioProxy15.startNetworkScan_1_5(rr.mSerial, request);
+ } catch (RemoteException | RuntimeException e) {
+ handleRadioProxyExceptionForRR(rr, "startNetworkScan", e);
+ }
+ } else if (mRadioVersion.greaterOrEqual(RADIO_HAL_VERSION_1_2)) {
android.hardware.radio.V1_2.NetworkScanRequest request =
new android.hardware.radio.V1_2.NetworkScanRequest();
request.type = nsr.getScanType();