diff options
author | Wink Saville <wink@google.com> | 2011-06-03 16:35:08 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-06-03 16:35:08 -0700 |
commit | da3505993ce8f6e3c207b97813e0e0818e253187 (patch) | |
tree | 6178bf10fe3bbc3a2134a828675f226df82fc2d8 /telephony | |
parent | 04a5a95450fab72fb8fef43d878de05764792f1a (diff) | |
parent | 3699c3d7c8a450cc39fd1c3db23b64208bd43353 (diff) | |
download | frameworks_base-da3505993ce8f6e3c207b97813e0e0818e253187.zip frameworks_base-da3505993ce8f6e3c207b97813e0e0818e253187.tar.gz frameworks_base-da3505993ce8f6e3c207b97813e0e0818e253187.tar.bz2 |
am 3699c3d7: am 5b4e2440: Merge "Refactor ServiceStateTracker handling of radio technology." into honeycomb-LTE
* commit '3699c3d7c8a450cc39fd1c3db23b64208bd43353':
Refactor ServiceStateTracker handling of radio technology.
Diffstat (limited to 'telephony')
5 files changed, 113 insertions, 179 deletions
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java index 2aa6d1d..fce7cdc 100644 --- a/telephony/java/android/telephony/ServiceState.java +++ b/telephony/java/android/telephony/ServiceState.java @@ -387,62 +387,77 @@ public class ServiceState implements Parcelable { && mIsEmergencyOnly == s.mIsEmergencyOnly); } + /** + * Convert radio technology to String + * + * @param radioTechnology + * @return String representation of the RAT + * + * @hide + */ + public static String radioTechnologyToString(int rt) { + String rtString; + + switch(rt) { + case 0: + rtString = "Unknown"; + break; + case 1: + rtString = "GPRS"; + break; + case 2: + rtString = "EDGE"; + break; + case 3: + rtString = "UMTS"; + break; + case 4: + rtString = "CDMA-IS95A"; + break; + case 5: + rtString = "CDMA-IS95B"; + break; + case 6: + rtString = "1xRTT"; + break; + case 7: + rtString = "EvDo-rev.0"; + break; + case 8: + rtString = "EvDo-rev.A"; + break; + case 9: + rtString = "HSDPA"; + break; + case 10: + rtString = "HSUPA"; + break; + case 11: + rtString = "HSPA"; + break; + case 12: + rtString = "EvDo-rev.B"; + break; + case 13: + rtString = "eHRPD"; + break; + case 14: + rtString = "LTE"; + break; + case 15: + rtString = "HSPAP"; + break; + default: + rtString = "Unexpected"; + Log.w(LOG_TAG, "Unexpected radioTechnology=" + rt); + break; + } + return rtString + ":" + rt; + } + @Override public String toString() { - String radioTechnology = new String("Error in radioTechnology"); - switch(this.mRadioTechnology) { - case 0: - radioTechnology = "Unknown"; - break; - case 1: - radioTechnology = "GPRS"; - break; - case 2: - radioTechnology = "EDGE"; - break; - case 3: - radioTechnology = "UMTS"; - break; - case 4: - radioTechnology = "IS95A"; - break; - case 5: - radioTechnology = "IS95B"; - break; - case 6: - radioTechnology = "1xRTT"; - break; - case 7: - radioTechnology = "EvDo rev. 0"; - break; - case 8: - radioTechnology = "EvDo rev. A"; - break; - case 9: - radioTechnology = "HSDPA"; - break; - case 10: - radioTechnology = "HSUPA"; - break; - case 11: - radioTechnology = "HSPA"; - break; - case 12: - radioTechnology = "EvDo rev. B"; - break; - case 13: - radioTechnology = "eHRPD"; - break; - case 14: - radioTechnology = "LTE"; - break; - case 15: - radioTechnology = "HSPAP"; - break; - default: - Log.w(LOG_TAG, "mRadioTechnology variable out of range."); - break; - } + String radioTechnology = radioTechnologyToString(mRadioTechnology); return (mState + " " + (mRoaming ? "roaming" : "home") + " " + mOperatorAlphaLong diff --git a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java index 695805c..01b807d 100644 --- a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java @@ -54,6 +54,12 @@ public abstract class ServiceStateTracker extends Handler { protected boolean mDesiredPowerState; /** + * Values correspond to ServiceState.RADIO_TECHNOLOGY_ definitions. + */ + protected int mRadioTechnology = 0; + protected int mNewRadioTechnology = 0; + + /** * By default, strength polling is enabled. However, if we're * getting unsolicited signal strength updates from the radio, set * value to true and don't bother polling any more. diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java index 067139e..7bc7ca2 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaLteServiceStateTracker.java @@ -32,6 +32,7 @@ import android.os.Registrant; import android.os.RegistrantList; import android.os.AsyncResult; import android.os.Message; +import android.os.SystemProperties; import android.util.Log; import android.util.EventLog; @@ -72,6 +73,7 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { handlePollStateResult(msg.what, ar); break; case EVENT_SIM_READY: + if (DBG) log("handleMessage EVENT_SIM_READY"); isSubscriptionFromRuim = false; cm.getCDMASubscription( obtainMessage(EVENT_POLL_STATE_CDMA_SUBSCRIPTION)); pollState(); @@ -186,39 +188,6 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { } } - protected static String networkTypeToString(int type) { - String ret = "unknown"; - - switch (type) { - case ServiceState.RADIO_TECHNOLOGY_IS95A: - case ServiceState.RADIO_TECHNOLOGY_IS95B: - ret = "CDMA"; - break; - case ServiceState.RADIO_TECHNOLOGY_1xRTT: - ret = "CDMA - 1xRTT"; - break; - case ServiceState.RADIO_TECHNOLOGY_EVDO_0: - ret = "CDMA - EvDo rev. 0"; - break; - case ServiceState.RADIO_TECHNOLOGY_EVDO_A: - ret = "CDMA - EvDo rev. A"; - break; - case ServiceState.RADIO_TECHNOLOGY_EVDO_B: - ret = "CDMA - EvDo rev. B"; - break; - case ServiceState.RADIO_TECHNOLOGY_LTE: - ret = "LTE"; - break; - case ServiceState.RADIO_TECHNOLOGY_EHRPD: - ret = "CDMA - eHRPD"; - break; - default: - sloge("networkTypeToString: Wrong network, can not return a string."); - break; - } - return ret; - } - @Override protected void pollStateDone() { // determine data NetworkType from both LET and CDMA SS @@ -282,13 +251,20 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { (newNetworkType <= ServiceState.RADIO_TECHNOLOGY_EVDO_A)); if (DBG) { - log("pollStateDone: hasRegistered = " - + hasRegistered + " hasCdmaDataConnectionAttached = " - + hasCdmaDataConnectionAttached + " hasCdmaDataConnectionChanged = " - + hasCdmaDataConnectionChanged + " hasNetworkTypeChanged = " - + hasNetworkTypeChanged + " has4gHandoff = " + has4gHandoff - + " hasMultiApnSupport = " + hasMultiApnSupport + " hasLostMultiApnSupport = " - + hasLostMultiApnSupport); + log("pollStateDone:" + + " hasRegistered=" + hasRegistered + + " hasDeegistered=" + hasDeregistered + + " hasCdmaDataConnectionAttached=" + hasCdmaDataConnectionAttached + + " hasCdmaDataConnectionDetached=" + hasCdmaDataConnectionDetached + + " hasCdmaDataConnectionChanged=" + hasCdmaDataConnectionChanged + + " hasNetworkTypeChanged = " + hasNetworkTypeChanged + + " hasChanged=" + hasChanged + + " hasRoamingOn=" + hasRoamingOn + + " hasRoamingOff=" + hasRoamingOff + + " hasLocationChanged=" + hasLocationChanged + + " has4gHandoff = " + has4gHandoff + + " hasMultiApnSupport=" + hasMultiApnSupport + + " hasLostMultiApnSupport=" + hasLostMultiApnSupport); } // Add an event log when connection state changes if (ss.getState() != newSS.getState() @@ -316,7 +292,7 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { && (phone.mDataConnectionTracker instanceof GsmDataConnectionTracker)) { if (DBG)log("GsmDataConnectionTracker disposed"); phone.mDataConnectionTracker.dispose(); - phone.mDataConnectionTracker = new CdmaDataConnectionTracker((CDMAPhone)phone); + phone.mDataConnectionTracker = new CdmaDataConnectionTracker(phone); } CdmaCellLocation tcl = cellLoc; @@ -330,7 +306,7 @@ public class CdmaLteServiceStateTracker extends CdmaServiceStateTracker { if (hasNetworkTypeChanged) { phone.setSystemProperty(TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, - networkTypeToString(networkType)); + ServiceState.radioTechnologyToString(networkType)); } if (hasRegistered) { diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index 54bc58a..ead6bca 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -253,6 +253,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { switch (msg.what) { case EVENT_RADIO_AVAILABLE: + if (DBG) log("handleMessage: EVENT_RADIO_AVAILABLE"); break; case EVENT_RUIM_READY: @@ -266,7 +267,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { } cm.getCDMASubscription(obtainMessage(EVENT_POLL_STATE_CDMA_SUBSCRIPTION)); - if (DBG) log("Receive EVENT_RUIM_READY and Send Request getCDMASubscription."); + if (DBG) log("handleMessage: EVENT_RUIM_READY, Send Request getCDMASubscription."); // Restore the previous network selection. pollState(); @@ -280,6 +281,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { // For Non-RUIM phones, the subscription information is stored in // Non Volatile. Here when Non-Volatile is ready, we can poll the CDMA // subscription info. + if (DBG) log("handleMessage: EVENT_NV_READY, Send Request getCDMASubscription."); cm.getCDMASubscription( obtainMessage(EVENT_POLL_STATE_CDMA_SUBSCRIPTION)); pollState(); // Signal strength polling stops when radio is off. @@ -871,36 +873,6 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { } } - protected static String networkTypeToString(int type) { - String ret = "unknown"; - - switch (type) { - case ServiceState.RADIO_TECHNOLOGY_IS95A: - case ServiceState.RADIO_TECHNOLOGY_IS95B: - ret = "CDMA"; - break; - case ServiceState.RADIO_TECHNOLOGY_1xRTT: - ret = "CDMA - 1xRTT"; - break; - case ServiceState.RADIO_TECHNOLOGY_EVDO_0: - ret = "CDMA - EvDo rev. 0"; - break; - case ServiceState.RADIO_TECHNOLOGY_EVDO_A: - ret = "CDMA - EvDo rev. A"; - break; - case ServiceState.RADIO_TECHNOLOGY_EVDO_B: - ret = "CDMA - EvDo rev. B"; - break; - default: - if (DBG) { - slog("Wrong network. Can not return a string."); - } - break; - } - - return ret; - } - protected void fixTimeZone(String isoCountryCode) { TimeZone zone = null; // If the offset is (0, false) and the time zone property @@ -998,7 +970,7 @@ public class CdmaServiceStateTracker extends ServiceStateTracker { if (hasNetworkTypeChanged) { phone.setSystemProperty(TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, - networkTypeToString(networkType)); + ServiceState.radioTechnologyToString(networkType)); } if (hasRegistered) { diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index 4352831..93f4b4e 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -84,12 +84,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker { private int mNewReasonDataDenied = -1; /** - * Values correspond to ServiceState.RADIO_TECHNOLOGY_ definitions. - */ - private int networkType = 0; - private int newNetworkType = 0; - - /** * GSM roaming status solely based on TS 27.007 7.2 CREG. Only used by * handlePollStateResult to store CREG roaming result. */ @@ -628,7 +622,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { } newGPRSState = regCodeToServiceState(regState); mDataRoaming = regCodeIsRoaming(regState); - newNetworkType = type; + mNewRadioTechnology = type; newSS.setRadioTechnology(type); break; @@ -748,37 +742,6 @@ final class GsmServiceStateTracker extends ServiceStateTracker { } } - private static String networkTypeToString(int type) { - //Network Type from GPRS_REGISTRATION_STATE - String ret = "unknown"; - - switch (type) { - case ServiceState.RADIO_TECHNOLOGY_GPRS: - ret = "GPRS"; - break; - case ServiceState.RADIO_TECHNOLOGY_EDGE: - ret = "EDGE"; - break; - case ServiceState.RADIO_TECHNOLOGY_UMTS: - ret = "UMTS"; - break; - case ServiceState.RADIO_TECHNOLOGY_HSDPA: - ret = "HSDPA"; - break; - case ServiceState.RADIO_TECHNOLOGY_HSUPA: - ret = "HSUPA"; - break; - case ServiceState.RADIO_TECHNOLOGY_HSPA: - ret = "HSPA"; - break; - default: - sloge("Wrong network type: " + Integer.toString(type)); - break; - } - - return ret; - } - private void pollStateDone() { if (DBG) { log("Poll ServiceState done: " + @@ -788,8 +751,8 @@ final class GsmServiceStateTracker extends ServiceStateTracker { " mNewMaxDataCalls=" + mNewMaxDataCalls + " oldReasonDataDenied=" + mReasonDataDenied + " mNewReasonDataDenied=" + mNewReasonDataDenied + - " oldType=" + networkTypeToString(networkType) + - " newType=" + networkTypeToString(newNetworkType)); + " oldType=" + ServiceState.radioTechnologyToString(mRadioTechnology) + + " newType=" + ServiceState.radioTechnologyToString(mNewRadioTechnology)); } boolean hasRegistered = @@ -808,7 +771,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { gprsState == ServiceState.STATE_IN_SERVICE && newGPRSState != ServiceState.STATE_IN_SERVICE; - boolean hasNetworkTypeChanged = networkType != newNetworkType; + boolean hasRadioTechnologyChanged = mRadioTechnology != mNewRadioTechnology; boolean hasChanged = !newSS.equals(ss); @@ -838,30 +801,32 @@ final class GsmServiceStateTracker extends ServiceStateTracker { // Add an event log when network type switched // TODO: we may add filtering to reduce the event logged, // i.e. check preferred network setting, only switch to 2G, etc - if (hasNetworkTypeChanged) { + if (hasRadioTechnologyChanged) { int cid = -1; GsmCellLocation loc = ((GsmCellLocation)phone.getCellLocation()); if (loc != null) cid = loc.getCid(); - EventLog.writeEvent(EventLogTags.GSM_RAT_SWITCHED, cid, networkType, newNetworkType); + EventLog.writeEvent(EventLogTags.GSM_RAT_SWITCHED, cid, mRadioTechnology, + mNewRadioTechnology); if (DBG) { - log("RAT switched " + networkTypeToString(networkType) + " -> " - + networkTypeToString(newNetworkType) + " at cell " + cid); + log("RAT switched " + ServiceState.radioTechnologyToString(mRadioTechnology) + + " -> " + ServiceState.radioTechnologyToString(mNewRadioTechnology) + + " at cell " + cid); } } gprsState = newGPRSState; mReasonDataDenied = mNewReasonDataDenied; mMaxDataCalls = mNewMaxDataCalls; - networkType = newNetworkType; + mRadioTechnology = mNewRadioTechnology; // this new state has been applied - forget it until we get a new new state - newNetworkType = 0; + mNewRadioTechnology = 0; newSS.setStateOutOfService(); // clean slate for next time - if (hasNetworkTypeChanged) { + if (hasRadioTechnologyChanged) { phone.setSystemProperty(TelephonyProperties.PROPERTY_DATA_NETWORK_TYPE, - networkTypeToString(networkType)); + ServiceState.radioTechnologyToString(mRadioTechnology)); } if (hasRegistered) { @@ -949,7 +914,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { mDetachedRegistrants.notifyRegistrants(); } - if (hasNetworkTypeChanged) { + if (hasRadioTechnologyChanged) { phone.notifyDataConnection(Phone.REASON_NW_TYPE_CHANGED, Phone.APN_TYPE_ALL); } @@ -1285,7 +1250,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { * that could support voice and data simultaneously. */ public boolean isConcurrentVoiceAndDataAllowed() { - return (networkType >= ServiceState.RADIO_TECHNOLOGY_UMTS); + return (mRadioTechnology >= ServiceState.RADIO_TECHNOLOGY_UMTS); } /** |