Loading src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +12 −2 Original line number Original line Diff line number Diff line Loading @@ -642,6 +642,7 @@ public class GsmServiceStateTracker extends ServiceStateTracker { int regState = ServiceState.RIL_REG_STATE_UNKNOWN; int regState = ServiceState.RIL_REG_STATE_UNKNOWN; int reasonRegStateDenied = -1; int reasonRegStateDenied = -1; int psc = -1; int psc = -1; int cssIndicator = 0; if (states.length > 0) { if (states.length > 0) { try { try { regState = Integer.parseInt(states[0]); regState = Integer.parseInt(states[0]); Loading @@ -658,6 +659,9 @@ public class GsmServiceStateTracker extends ServiceStateTracker { type = Integer.parseInt(states[3]); type = Integer.parseInt(states[3]); } } } } if (states.length >= 7 && (states[7] != null)) { cssIndicator = Integer.parseInt(states[7]); } if (states.length > 14) { if (states.length > 14) { if (states[14] != null && states[14].length() > 0) { if (states[14] != null && states[14].length() > 0) { psc = Integer.parseInt(states[14], 16); psc = Integer.parseInt(states[14], 16); Loading @@ -671,6 +675,7 @@ public class GsmServiceStateTracker extends ServiceStateTracker { mGsmRoaming = regCodeIsRoaming(regState); mGsmRoaming = regCodeIsRoaming(regState); mNewSS.setState(regCodeToServiceState(regState)); mNewSS.setState(regCodeToServiceState(regState)); mNewSS.setRilVoiceRadioTechnology(type); mNewSS.setRilVoiceRadioTechnology(type); mNewSS.setCssIndicator(cssIndicator); if ((regState == ServiceState.RIL_REG_STATE_DENIED if ((regState == ServiceState.RIL_REG_STATE_DENIED || regState == ServiceState.RIL_REG_STATE_DENIED_EMERGENCY_CALL_ENABLED) || regState == ServiceState.RIL_REG_STATE_DENIED_EMERGENCY_CALL_ENABLED) Loading Loading @@ -1457,11 +1462,16 @@ public class GsmServiceStateTracker extends ServiceStateTracker { /** /** * @return true if phone is camping on a technology (eg UMTS) * @return true if phone is camping on a technology (eg UMTS) * that could support voice and data simultaneously. * that could support voice and data simultaneously or * concurrent services support indicator is set to '1'. */ */ @Override @Override public boolean isConcurrentVoiceAndDataAllowed() { public boolean isConcurrentVoiceAndDataAllowed() { return (mSS.getRilDataRadioTechnology() >= ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); if (mSS.getRilDataRadioTechnology() >= ServiceState.RIL_RADIO_TECHNOLOGY_UMTS) { return true; } else { return mSS.getCssIndicator() == 1; } } } /** /** Loading Loading
src/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +12 −2 Original line number Original line Diff line number Diff line Loading @@ -642,6 +642,7 @@ public class GsmServiceStateTracker extends ServiceStateTracker { int regState = ServiceState.RIL_REG_STATE_UNKNOWN; int regState = ServiceState.RIL_REG_STATE_UNKNOWN; int reasonRegStateDenied = -1; int reasonRegStateDenied = -1; int psc = -1; int psc = -1; int cssIndicator = 0; if (states.length > 0) { if (states.length > 0) { try { try { regState = Integer.parseInt(states[0]); regState = Integer.parseInt(states[0]); Loading @@ -658,6 +659,9 @@ public class GsmServiceStateTracker extends ServiceStateTracker { type = Integer.parseInt(states[3]); type = Integer.parseInt(states[3]); } } } } if (states.length >= 7 && (states[7] != null)) { cssIndicator = Integer.parseInt(states[7]); } if (states.length > 14) { if (states.length > 14) { if (states[14] != null && states[14].length() > 0) { if (states[14] != null && states[14].length() > 0) { psc = Integer.parseInt(states[14], 16); psc = Integer.parseInt(states[14], 16); Loading @@ -671,6 +675,7 @@ public class GsmServiceStateTracker extends ServiceStateTracker { mGsmRoaming = regCodeIsRoaming(regState); mGsmRoaming = regCodeIsRoaming(regState); mNewSS.setState(regCodeToServiceState(regState)); mNewSS.setState(regCodeToServiceState(regState)); mNewSS.setRilVoiceRadioTechnology(type); mNewSS.setRilVoiceRadioTechnology(type); mNewSS.setCssIndicator(cssIndicator); if ((regState == ServiceState.RIL_REG_STATE_DENIED if ((regState == ServiceState.RIL_REG_STATE_DENIED || regState == ServiceState.RIL_REG_STATE_DENIED_EMERGENCY_CALL_ENABLED) || regState == ServiceState.RIL_REG_STATE_DENIED_EMERGENCY_CALL_ENABLED) Loading Loading @@ -1457,11 +1462,16 @@ public class GsmServiceStateTracker extends ServiceStateTracker { /** /** * @return true if phone is camping on a technology (eg UMTS) * @return true if phone is camping on a technology (eg UMTS) * that could support voice and data simultaneously. * that could support voice and data simultaneously or * concurrent services support indicator is set to '1'. */ */ @Override @Override public boolean isConcurrentVoiceAndDataAllowed() { public boolean isConcurrentVoiceAndDataAllowed() { return (mSS.getRilDataRadioTechnology() >= ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); if (mSS.getRilDataRadioTechnology() >= ServiceState.RIL_RADIO_TECHNOLOGY_UMTS) { return true; } else { return mSS.getCssIndicator() == 1; } } } /** /** Loading