Manual network selection by RAN type
Support updated API for setNetworkSelectionModeManual
Bug: 68116277
Test: atest FrameworksTelephonyTests
Change-Id: I8071e9eac1c90f17761e453f081db5843aa2ae14
diff --git a/guest/hals/ril/libril/ril.h b/guest/hals/ril/libril/ril.h
index e1137b0..4e51c57 100644
--- a/guest/hals/ril/libril/ril.h
+++ b/guest/hals/ril/libril/ril.h
@@ -2139,10 +2139,12 @@
} RIL_ScanType;
typedef enum {
- GERAN = 0x01, // GSM EDGE Radio Access Network
- UTRAN = 0x02, // Universal Terrestrial Radio Access Network
- EUTRAN = 0x03, // Evolved Universal Terrestrial Radio Access Network
- NGRAN = 0x04, // Next-Generation Radio Access Network
+ UNKNOWN = 0x00, // Unknown Radio Access Network
+ GERAN = 0x01, // GSM EDGE Radio Access Network
+ UTRAN = 0x02, // Universal Terrestrial Radio Access Network
+ EUTRAN = 0x03, // Evolved Universal Terrestrial Radio Access Network
+ NGRAN = 0x04, // Next-Generation Radio Access Network
+ CDMA2000 = 0x05, // CDMA 2000 Radio AccessNetwork
} RIL_RadioAccessNetworks;
typedef enum {
diff --git a/guest/hals/ril/libril/ril_service.cpp b/guest/hals/ril/libril/ril_service.cpp
index 134acb3..8bb2df7 100755
--- a/guest/hals/ril/libril/ril_service.cpp
+++ b/guest/hals/ril/libril/ril_service.cpp
@@ -561,6 +561,8 @@
Return<void> getBarringInfo(int32_t serial);
Return<void> getVoiceRegistrationState_1_5(int32_t serial);
Return<void> getDataRegistrationState_1_5(int32_t serial);
+ Return<void> setNetworkSelectionModeManual_1_5(int32_t serial,
+ const hidl_string& operatorNumeric, V1_5::RadioAccessNetworks ran);
};
struct OemHookImpl : public IOemHook {
@@ -3803,6 +3805,15 @@
return Void();
}
+Return<void> RadioImpl_1_5::setNetworkSelectionModeManual_1_5(int32_t serial,
+ const hidl_string& operatorNumeric, V1_5::RadioAccessNetworks ran) {
+#if VDBG
+ RLOGD("setNetworkSelectionModeManual_1_5: serial %d", serial);
+#endif
+ dispatchVoid(serial, mSlotId, RIL_REQUEST_SET_NETWORK_SELECTION_MANUAL);
+ return Void();
+}
+
// OEM hook methods:
Return<void> OemHookImpl::setResponseFunctions(
const ::android::sp<IOemHookResponse>& oemHookResponseParam,
@@ -8192,6 +8203,33 @@
return 0;
}
+int radio_1_5::setNetworkSelectionModeManualResponse_1_5(int slotId,
+ int responseType, int serial, RIL_Errno e,
+ void *response, size_t responseLen) {
+#if VDBG
+ RLOGD("setNetworkSelectionModeManualResponse_1_5: serial %d", serial);
+#endif
+
+ if (radioService[slotId]->mRadioResponseV1_5 != NULL) {
+ RadioResponseInfo responseInfo = {};
+ populateResponseInfo(responseInfo, serial, responseType, e);
+ Return<void> retStatus = radioService[slotId]->mRadioResponseV1_5
+ ->setNetworkSelectionModeManualResponse_1_5(responseInfo);
+ radioService[slotId]->checkReturnStatus(retStatus);
+ } else if (radioService[slotId]->mRadioResponse != NULL) {
+ RadioResponseInfo responseInfo = {};
+ populateResponseInfo(responseInfo, serial, responseType, e);
+ Return<void> retStatus = radioService[slotId]->mRadioResponse
+ ->setNetworkSelectionModeManualResponse(responseInfo);
+ radioService[slotId]->checkReturnStatus(retStatus);
+ } else {
+ RLOGE("acceptCallResponse: radioService[%d]->setNetworkSelectionModeManualResponse_1_5 "
+ "== NULL", slotId);
+ }
+
+ return 0;
+}
+
/***************************************************************************************************
* INDICATION FUNCTIONS
* The below function handle unsolicited messages coming from the Radio
diff --git a/guest/hals/ril/libril/ril_service.h b/guest/hals/ril/libril/ril_service.h
index 7807004..640413c 100644
--- a/guest/hals/ril/libril/ril_service.h
+++ b/guest/hals/ril/libril/ril_service.h
@@ -195,6 +195,10 @@
int responseType, int serial, RIL_Errno e, void *response,
size_t responselen);
+int setNetworkSelectionModeManualResponse_1_5(int slotId,
+ int responseType, int serial, RIL_Errno e,
+ void *response, size_t responselen);
+
int getAvailableNetworksResponse(int slotId,
int responseType, int serial, RIL_Errno e, void *response,
size_t responselen);