Update IRadioNetwork for Emergency Call domain selection HAL API changes.
Bug: 243344927
Test: build and flash
Change-Id: Iea7f8c5e8e30befd16637728a0a610c01e2140d3
diff --git a/Android.bp b/Android.bp
index fab53d1..d784fc8 100644
--- a/Android.bp
+++ b/Android.bp
@@ -87,7 +87,7 @@
"android.hardware.radio.data-V1-java",
"android.hardware.radio.messaging-V1-java",
"android.hardware.radio.modem-V1-java",
- "android.hardware.radio.network-V1-java",
+ "android.hardware.radio.network-V2-java",
"android.hardware.radio.sim-V1-java",
"android.hardware.radio.voice-V1-java",
"voip-common",
diff --git a/src/java/com/android/internal/telephony/BaseCommands.java b/src/java/com/android/internal/telephony/BaseCommands.java
index 972884a..764458a 100644
--- a/src/java/com/android/internal/telephony/BaseCommands.java
+++ b/src/java/com/android/internal/telephony/BaseCommands.java
@@ -114,6 +114,7 @@
protected RegistrantList mBarringInfoChangedRegistrants = new RegistrantList();
protected RegistrantList mSimPhonebookChangedRegistrants = new RegistrantList();
protected RegistrantList mSimPhonebookRecordsReceivedRegistrants = new RegistrantList();
+ protected RegistrantList mEmergencyNetworkScanRegistrants = new RegistrantList();
@UnsupportedAppUsage
protected Registrant mGsmSmsRegistrant;
@@ -1132,4 +1133,26 @@
@Override
public void updateSimPhonebookRecord(SimPhonebookRecord phonebookRecord, Message result) {
}
+
+ /**
+ * Register for Emergency network scan result.
+ *
+ * @param h Handler for notification message.
+ * @param what User-defined message code.
+ * @param obj User object.
+ */
+ @Override
+ public void registerForEmergencyNetworkScan(Handler h, int what, Object obj) {
+ mEmergencyNetworkScanRegistrants.add(h, what, obj);
+ }
+
+ /**
+ * Unregister for Emergency network scan result.
+ *
+ * @param h Handler to be removed from the registrant list.
+ */
+ @Override
+ public void unregisterForEmergencyNetworkScan(Handler h) {
+ mEmergencyNetworkScanRegistrants.remove(h);
+ }
}
diff --git a/src/java/com/android/internal/telephony/CommandsInterface.java b/src/java/com/android/internal/telephony/CommandsInterface.java
index 27cedfe..cdde40e 100644
--- a/src/java/com/android/internal/telephony/CommandsInterface.java
+++ b/src/java/com/android/internal/telephony/CommandsInterface.java
@@ -2761,4 +2761,20 @@
* @param result Callback message containing the usage setting (or a failure status).
*/
default void getUsageSetting(Message result) {}
+
+ /**
+ * Register for Emergency network scan result.
+ *
+ * @param h Handler for notification message.
+ * @param what User-defined message code.
+ * @param obj User object.
+ */
+ default void registerForEmergencyNetworkScan(Handler h, int what, Object obj) {}
+
+ /**
+ * Unregister for Emergency network scan result.
+ *
+ * @param h Handler to be removed from the registrant list.
+ */
+ default void unregisterForEmergencyNetworkScan(Handler h) {}
}
diff --git a/src/java/com/android/internal/telephony/NetworkIndication.java b/src/java/com/android/internal/telephony/NetworkIndication.java
index c9ebfd5..9c577ba 100644
--- a/src/java/com/android/internal/telephony/NetworkIndication.java
+++ b/src/java/com/android/internal/telephony/NetworkIndication.java
@@ -20,6 +20,7 @@
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_CDMA_PRL_CHANGED;
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_CELL_INFO_LIST;
+import static com.android.internal.telephony.RILConstants.RIL_UNSOL_EMERGENCY_NETWORK_SCAN_RESULT;
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_LCEDATA_RECV;
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_NETWORK_SCAN_RESULT;
import static com.android.internal.telephony.RILConstants.RIL_UNSOL_NITZ_TIME_RECEIVED;
@@ -380,6 +381,23 @@
new AsyncResult(null, response, null));
}
+ /**
+ * Emergency Scan Results.
+ * @param indicationType Type of radio indication
+ * @param result the result of the Emergency Network Scan
+ */
+ public void emergencyNetworkScanResult(int indicationType,
+ android.hardware.radio.network.EmergencyRegResult result) {
+ mRil.processIndication(RIL.NETWORK_SERVICE, indicationType);
+
+ if (mRil.isLogOrTrace()) {
+ mRil.unsljLogRet(RIL_UNSOL_EMERGENCY_NETWORK_SCAN_RESULT, result);
+ }
+
+ mRil.mEmergencyNetworkScanRegistrants.notifyRegistrants(
+ new AsyncResult(null, result, null));
+ }
+
@Override
public String getInterfaceHash() {
return IRadioNetworkIndication.HASH;
diff --git a/src/java/com/android/internal/telephony/NetworkResponse.java b/src/java/com/android/internal/telephony/NetworkResponse.java
index d9f70fd..5f5895e 100644
--- a/src/java/com/android/internal/telephony/NetworkResponse.java
+++ b/src/java/com/android/internal/telephony/NetworkResponse.java
@@ -436,6 +436,43 @@
RadioResponse.responseInts(RIL.NETWORK_SERVICE, mRil, responseInfo, usageSetting);
}
+ /**
+ * @param responseInfo Response info struct containing response type, serial no. and error
+ * @param regState the current registration state of the modem.
+ */
+ public void setEmergencyModeResponse(RadioResponseInfo responseInfo,
+ android.hardware.radio.network.EmergencyRegResult regState) {
+ RILRequest rr = mRil.processResponse(RIL.NETWORK_SERVICE, responseInfo);
+
+ if (rr != null) {
+ if (responseInfo.error == RadioError.NONE) {
+ RadioResponse.sendMessageResponse(rr.mResult, regState);
+ }
+ mRil.processResponseDone(rr, responseInfo, regState);
+ }
+ }
+
+ /**
+ * @param responseInfo Response info struct containing response type, serial no. and error
+ */
+ public void triggerEmergencyNetworkScanResponse(RadioResponseInfo responseInfo) {
+ RadioResponse.responseVoid(RIL.NETWORK_SERVICE, mRil, responseInfo);
+ }
+
+ /**
+ * @param responseInfo Response info struct containing response type, serial no. and error
+ */
+ public void exitEmergencyModeResponse(RadioResponseInfo responseInfo) {
+ RadioResponse.responseVoid(RIL.NETWORK_SERVICE, mRil, responseInfo);
+ }
+
+ /**
+ * @param responseInfo Response info struct containing response type, serial no. and error
+ */
+ public void cancelEmergencyNetworkScanResponse(RadioResponseInfo responseInfo) {
+ RadioResponse.responseVoid(RIL.NETWORK_SERVICE, mRil, responseInfo);
+ }
+
@Override
public String getInterfaceHash() {
return IRadioNetworkResponse.HASH;
diff --git a/src/java/com/android/internal/telephony/RadioNetworkProxy.java b/src/java/com/android/internal/telephony/RadioNetworkProxy.java
index 31a8691..d8ad820 100644
--- a/src/java/com/android/internal/telephony/RadioNetworkProxy.java
+++ b/src/java/com/android/internal/telephony/RadioNetworkProxy.java
@@ -852,4 +852,64 @@
}
// Only supported on AIDL.
}
+
+ /**
+ * Set the Emergency Mode
+ *
+ * @param serial Serial number of the request.
+ * @param emcModeType Defines the radio emergency mode type.
+ * @throws RemoteException
+ */
+ public void setEmergencyMode(int serial, int emcModeType) throws RemoteException {
+ if (isEmpty()) return;
+ if (isAidl()) {
+ mNetworkProxy.setEmergencyMode(serial, emcModeType);
+ }
+ // Only supported on AIDL.
+ }
+
+ /**
+ * Triggers an Emergency network scan.
+ *
+ * @param serial Serial number of the request.
+ * @param scanRequest Contains the preferred networks and type of service to be scanned.
+ * @throws RemoteException
+ */
+ public void triggerEmergencyNetworkScan(int serial,
+ android.hardware.radio.network.EmergencyNetworkScanTrigger scanRequest)
+ throws RemoteException {
+ if (isEmpty()) return;
+ if (isAidl()) {
+ mNetworkProxy.triggerEmergencyNetworkScan(serial, scanRequest);
+ }
+ // Only supported on AIDL.
+ }
+
+ /**
+ * Cancels ongoing Emergency network scan
+ *
+ * @param serial Serial number of the request.
+ * @throws RemoteException
+ */
+ public void cancelEmergencyNetworkScan(int serial) throws RemoteException {
+ if (isEmpty()) return;
+ if (isAidl()) {
+ mNetworkProxy.cancelEmergencyNetworkScan(serial);
+ }
+ // Only supported on AIDL.
+ }
+
+ /**
+ * Exits ongoing Emergency Mode
+ *
+ * @param serial Serial number of the request.
+ * @throws RemoteException
+ */
+ public void exitEmergencyMode(int serial) throws RemoteException {
+ if (isEmpty()) return;
+ if (isAidl()) {
+ mNetworkProxy.exitEmergencyMode(serial);
+ }
+ // Only supported on AIDL.
+ }
}