Fixed service state changed event

Added a new registrant for service state changed event.
Also added service state non-legacy mode initialization
support.

Fix: 217985293
Test: Manual
Change-Id: Ifd988943a3f6e22ec563417eea6f173c02a866e2
This commit is contained in:
Jack Yu
2022-02-11 14:15:55 -08:00
parent 6583413a0d
commit 6d94e1c200

View File

@@ -1168,7 +1168,15 @@ public class ServiceState implements Parcelable {
}
}
private void init() {
/**
* Initialize the service state. Set everything to the default value.
*
* @param legacyMode {@code true} if the device is on IWLAN legacy mode, where IWLAN is
* considered as a RAT on WWAN {@link NetworkRegistrationInfo}. {@code false} if the device
* is on AP-assisted mode, where IWLAN should be reported through WLAN.
* {@link NetworkRegistrationInfo}.
*/
private void init(boolean legacyMode) {
if (DBG) Rlog.d(LOG_TAG, "init");
mVoiceRegState = STATE_OUT_OF_SERVICE;
mDataRegState = STATE_OUT_OF_SERVICE;
@@ -1200,6 +1208,13 @@ public class ServiceState implements Parcelable {
.setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
.setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN)
.build());
if (!legacyMode) {
addNetworkRegistrationInfo(new NetworkRegistrationInfo.Builder()
.setDomain(NetworkRegistrationInfo.DOMAIN_PS)
.setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WLAN)
.setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_UNKNOWN)
.build());
}
}
mOperatorAlphaLongRaw = null;
mOperatorAlphaShortRaw = null;
@@ -1208,15 +1223,32 @@ public class ServiceState implements Parcelable {
}
public void setStateOutOfService() {
init();
init(true);
}
public void setStateOff() {
init();
init(true);
mVoiceRegState = STATE_POWER_OFF;
mDataRegState = STATE_POWER_OFF;
}
/**
* Set the service state to out-of-service
*
* @param legacyMode {@code true} if the device is on IWLAN legacy mode, where IWLAN is
* considered as a RAT on WWAN {@link NetworkRegistrationInfo}. {@code false} if the device
* is on AP-assisted mode, where IWLAN should be reported through WLAN.
* @param powerOff {@code true} if this is a power off case (i.e. Airplane mode on).
* @hide
*/
public void setOutOfService(boolean legacyMode, boolean powerOff) {
init(legacyMode);
if (powerOff) {
mVoiceRegState = STATE_POWER_OFF;
mDataRegState = STATE_POWER_OFF;
}
}
public void setState(int state) {
setVoiceRegState(state);
if (DBG) Rlog.e(LOG_TAG, "[ServiceState] setState deprecated use setVoiceRegState()");