Fix crash when mSST is null and change default to GSM.
This commit is contained in:
@@ -170,7 +170,7 @@ public interface Phone {
|
||||
int NT_MODE_EVDO_NO_CDMA = 6; /* EvDo only */
|
||||
int NT_MODE_GLOBAL = 7; /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
|
||||
AVAILABLE Application Settings menu*/
|
||||
int PREFERRED_NT_MODE = NT_MODE_GLOBAL;
|
||||
int PREFERRED_NT_MODE = NT_MODE_GSM_ONLY;
|
||||
|
||||
|
||||
// Used for CDMA roaming mode
|
||||
|
||||
@@ -108,26 +108,23 @@ public class PhoneFactory {
|
||||
sCommandsInterface = new RIL(context, networkMode, cdmaSubscription);
|
||||
|
||||
switch(networkMode) {
|
||||
case RILConstants.NETWORK_MODE_CDMA:
|
||||
case RILConstants.NETWORK_MODE_CDMA_NO_EVDO:
|
||||
case RILConstants.NETWORK_MODE_EVDO_NO_CDMA:
|
||||
case RILConstants.NETWORK_MODE_GLOBAL:
|
||||
sProxyPhone = new PhoneProxy(new CDMAPhone(context,
|
||||
sCommandsInterface, sPhoneNotifier));
|
||||
Log.i(LOG_TAG, "Creating CDMAPhone");
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_WCDMA_PREF:
|
||||
case RILConstants.NETWORK_MODE_GSM_ONLY:
|
||||
case RILConstants.NETWORK_MODE_WCDMA_ONLY:
|
||||
case RILConstants.NETWORK_MODE_GSM_UMTS:
|
||||
default:
|
||||
sProxyPhone = new PhoneProxy(new GSMPhone(context,
|
||||
sCommandsInterface, sPhoneNotifier));
|
||||
Log.i(LOG_TAG, "Creating GSMPhone");
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_CDMA:
|
||||
case RILConstants.NETWORK_MODE_CDMA_NO_EVDO:
|
||||
case RILConstants.NETWORK_MODE_EVDO_NO_CDMA:
|
||||
sProxyPhone = new PhoneProxy(new CDMAPhone(context,
|
||||
sCommandsInterface, sPhoneNotifier));
|
||||
Log.i(LOG_TAG, "Creating CDMAPhone");
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_GLOBAL:
|
||||
default:
|
||||
sProxyPhone = new PhoneProxy(new CDMAPhone(context,
|
||||
sCommandsInterface, sPhoneNotifier));
|
||||
Log.i(LOG_TAG, "Creating CDMAPhone");
|
||||
}
|
||||
sMadeDefaults = true;
|
||||
}
|
||||
@@ -160,5 +157,3 @@ public class PhoneFactory {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -565,22 +565,18 @@ public final class RIL extends BaseCommands implements CommandsInterface {
|
||||
mNetworkMode = networkMode;
|
||||
//At startup mPhoneType is first set from networkMode
|
||||
switch(networkMode) {
|
||||
case RILConstants.NETWORK_MODE_CDMA:
|
||||
case RILConstants.NETWORK_MODE_CDMA_NO_EVDO:
|
||||
case RILConstants.NETWORK_MODE_EVDO_NO_CDMA:
|
||||
case RILConstants.NETWORK_MODE_GLOBAL:
|
||||
mPhoneType = RILConstants.CDMA_PHONE;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_WCDMA_PREF:
|
||||
case RILConstants.NETWORK_MODE_GSM_ONLY:
|
||||
case RILConstants.NETWORK_MODE_WCDMA_ONLY:
|
||||
case RILConstants.NETWORK_MODE_GSM_UMTS:
|
||||
mPhoneType = RILConstants.GSM_PHONE;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_CDMA:
|
||||
case RILConstants.NETWORK_MODE_CDMA_NO_EVDO:
|
||||
case RILConstants.NETWORK_MODE_EVDO_NO_CDMA:
|
||||
mPhoneType = RILConstants.CDMA_PHONE;
|
||||
break;
|
||||
case RILConstants.NETWORK_MODE_GLOBAL:
|
||||
mPhoneType = RILConstants.CDMA_PHONE;
|
||||
break;
|
||||
default:
|
||||
mPhoneType = RILConstants.CDMA_PHONE;
|
||||
mPhoneType = RILConstants.GSM_PHONE;
|
||||
}
|
||||
|
||||
PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
|
||||
|
||||
@@ -51,7 +51,7 @@ public interface RILConstants {
|
||||
int NETWORK_MODE_EVDO_NO_CDMA = 6; /* EvDo only */
|
||||
int NETWORK_MODE_GLOBAL = 7; /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
|
||||
AVAILABLE Application Settings menu*/
|
||||
int PREFERRED_NETWORK_MODE = NETWORK_MODE_GLOBAL;
|
||||
int PREFERRED_NETWORK_MODE = NETWORK_MODE_GSM_ONLY;
|
||||
|
||||
/* CDMA subscription source. See ril.h RIL_REQUEST_CDMA_SET_SUBSCRIPTION */
|
||||
int SUBSCRIPTION_FROM_RUIM = 0; /* CDMA subscription from RUIM when available */
|
||||
|
||||
5
telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
Normal file → Executable file
5
telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java
Normal file → Executable file
@@ -475,6 +475,11 @@ public class CDMAPhone extends PhoneBase {
|
||||
// we report data connected
|
||||
|
||||
ret = DataState.CONNECTED;
|
||||
} else if (mSST == null) {
|
||||
// Radio Technology Change is ongoning, dispose() and removeReferences() have
|
||||
// already been called
|
||||
|
||||
ret = DataState.DISCONNECTED;
|
||||
} else if (mSST.getCurrentCdmaDataConnectionState()
|
||||
== ServiceState.RADIO_TECHNOLOGY_UNKNOWN) {
|
||||
// If we're out of service, open TCP sockets may still work
|
||||
|
||||
5
telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
Normal file → Executable file
5
telephony/java/com/android/internal/telephony/gsm/GSMPhone.java
Normal file → Executable file
@@ -316,6 +316,11 @@ public class GSMPhone extends PhoneBase {
|
||||
// we report data connected
|
||||
|
||||
ret = DataState.CONNECTED;
|
||||
} else if (mSST == null) {
|
||||
// Radio Technology Change is ongoning, dispose() and removeReferences() have
|
||||
// already been called
|
||||
|
||||
ret = DataState.DISCONNECTED;
|
||||
} else if (mSST.getCurrentGprsState()
|
||||
!= ServiceState.STATE_IN_SERVICE) {
|
||||
// If we're out of service, open TCP sockets may still work
|
||||
|
||||
Reference in New Issue
Block a user