diff options
| author | Wink Saville <wink@google.com> | 2012-04-13 16:11:20 -0700 |
|---|---|---|
| committer | Wink Saville <wink@google.com> | 2012-04-13 16:11:20 -0700 |
| commit | 583eaaa57c51b28bf14da2a5cc94a2e6091cccf5 (patch) | |
| tree | 574630923b5a461eb43150999884ff51a9f985a1 /telephony | |
| parent | 069c4f3f0c8190289d60296ec54fafa56abb4776 (diff) | |
| download | frameworks_base-583eaaa57c51b28bf14da2a5cc94a2e6091cccf5.zip frameworks_base-583eaaa57c51b28bf14da2a5cc94a2e6091cccf5.tar.gz frameworks_base-583eaaa57c51b28bf14da2a5cc94a2e6091cccf5.tar.bz2 | |
Enhance the debug output for StateMachines.
Allow some messages to be ignored and allow the subclass to
add additional information. In particular, the information
can be used to decode the msg.what to a string.
Change-Id: I4f53becc6f0cb77399f99702084efef9d8785d67
Diffstat (limited to 'telephony')
| -rw-r--r-- | telephony/java/com/android/internal/telephony/DataConnection.java | 76 | ||||
| -rw-r--r-- | telephony/java/com/android/internal/telephony/DataConnectionAc.java | 45 |
2 files changed, 114 insertions, 7 deletions
diff --git a/telephony/java/com/android/internal/telephony/DataConnection.java b/telephony/java/com/android/internal/telephony/DataConnection.java index 486a924..a124c7f 100644 --- a/telephony/java/com/android/internal/telephony/DataConnection.java +++ b/telephony/java/com/android/internal/telephony/DataConnection.java @@ -35,6 +35,7 @@ import android.text.TextUtils; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; +import java.util.Calendar; import java.util.HashMap; import java.util.List; @@ -208,6 +209,27 @@ public abstract class DataConnection extends StateMachine { protected static final int EVENT_RIL_CONNECTED = BASE + 5; protected static final int EVENT_DISCONNECT_ALL = BASE + 6; + private static final int CMD_TO_STRING_COUNT = EVENT_DISCONNECT_ALL + 1; + private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; + static { + sCmdToString[EVENT_CONNECT - BASE] = "EVENT_CONNECT"; + sCmdToString[EVENT_SETUP_DATA_CONNECTION_DONE - BASE] = + "EVENT_SETUP_DATA_CONNECTION_DONE"; + sCmdToString[EVENT_GET_LAST_FAIL_DONE - BASE] = "EVENT_GET_LAST_FAIL_DONE"; + sCmdToString[EVENT_DEACTIVATE_DONE - BASE] = "EVENT_DEACTIVATE_DONE"; + sCmdToString[EVENT_DISCONNECT - BASE] = "EVENT_DISCONNECT"; + sCmdToString[EVENT_RIL_CONNECTED - BASE] = "EVENT_RIL_CONNECTED"; + sCmdToString[EVENT_DISCONNECT_ALL - BASE] = "EVENT_DISCONNECT_ALL"; + } + protected static String cmdToString(int cmd) { + cmd -= BASE; + if ((cmd >= 0) && (cmd < sCmdToString.length)) { + return sCmdToString[cmd]; + } else { + return null; + } + } + //***** Tag IDs for EventLog protected static final int EVENT_LOG_BAD_DNS_ADDRESS = 50100; @@ -242,6 +264,7 @@ public abstract class DataConnection extends StateMachine { protected DataConnection(PhoneBase phone, String name, int id, RetryManager rm, DataConnectionTracker dct) { super(name); + setProcessedMessagesSize(100); if (DBG) log("DataConnection constructor E"); this.phone = phone; this.mDataConnectionTracker = dct; @@ -1188,26 +1211,65 @@ public abstract class DataConnection extends StateMachine { new DisconnectParams(reason, onCompletedMsg))); } + /** + * @return the string for msg.what as our info. + */ + @Override + protected String getMessageInfo(Message msg) { + String info = null; + info = cmdToString(msg.what); + if (info == null) { + info = DataConnectionAc.cmdToString(msg.what); + } + return info; + } + + /** + * Convert a System.currentTimeMillis() value to a time of day value. + * + * @param millis since the epoch (1/1/1970) + * @return String representation of the time. + */ + private String timeMillisToTimeOfDay(long millis) { + Calendar c = Calendar.getInstance(); + if (millis >= 0) { + c.setTimeInMillis(millis); + return String.format("%tm-%td %tH:%tM:%tS.%tL", c, c, c, c, c, c); + } else { + return Long.toString(millis); + } + } + /** + * Dump the current state. + * + * @param fd + * @param pw + * @param args + */ + @Override public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { - pw.println("DataConnection name=" + getName() + ":"); + pw.print("DataConnection "); + super.dump(fd, pw, args); pw.println(" mApnList=" + mApnList); + pw.flush(); pw.println(" mDataConnectionTracker=" + mDataConnectionTracker); pw.println(" mApn=" + mApn); pw.println(" mTag=" + mTag); + pw.flush(); pw.println(" phone=" + phone); pw.println(" mRilVersion=" + mRilVersion); pw.println(" cid=" + cid); + pw.flush(); pw.println(" mLinkProperties=" + mLinkProperties); + pw.flush(); pw.println(" mCapabilities=" + mCapabilities); - pw.println(" createTime=" + createTime); - pw.println(" lastFailTime=" + lastFailTime); + pw.println(" createTime=" + timeMillisToTimeOfDay(createTime)); + pw.println(" lastFailTime=" + timeMillisToTimeOfDay(lastFailTime)); pw.println(" lastFailCause=" + lastFailCause); + pw.flush(); pw.println(" mRetryOverride=" + mRetryOverride); pw.println(" mRefCount=" + mRefCount); pw.println(" userData=" + userData); - pw.println(" total messages=" + getProcessedMessagesCount()); - for (int i=0; i < getProcessedMessagesSize(); i++) { - pw.printf(" msg[%d]=%s\n", i, getProcessedMessageInfo(i)); - } + pw.flush(); } } diff --git a/telephony/java/com/android/internal/telephony/DataConnectionAc.java b/telephony/java/com/android/internal/telephony/DataConnectionAc.java index a9f2cd1..4744ff0 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionAc.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionAc.java @@ -82,6 +82,51 @@ public class DataConnectionAc extends AsyncChannel { public static final int REQ_GET_RECONNECT_INTENT = BASE + 26; public static final int RSP_GET_RECONNECT_INTENT = BASE + 27; + private static final int CMD_TO_STRING_COUNT = RSP_GET_RECONNECT_INTENT + 1; + private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; + static { + sCmdToString[REQ_IS_INACTIVE - BASE] = "REQ_IS_INACTIVE"; + sCmdToString[RSP_IS_INACTIVE - BASE] = "RSP_IS_INACTIVE"; + sCmdToString[REQ_GET_CID - BASE] = "REQ_GET_CID"; + sCmdToString[RSP_GET_CID - BASE] = "RSP_GET_CID"; + sCmdToString[REQ_GET_APNSETTING - BASE] = "REQ_GET_APNSETTING"; + sCmdToString[RSP_GET_APNSETTING - BASE] = "RSP_GET_APNSETTING"; + sCmdToString[REQ_GET_LINK_PROPERTIES - BASE] = "REQ_GET_LINK_PROPERTIES"; + sCmdToString[RSP_GET_LINK_PROPERTIES - BASE] = "RSP_GET_LINK_PROPERTIES"; + sCmdToString[REQ_SET_LINK_PROPERTIES_HTTP_PROXY - BASE] = + "REQ_SET_LINK_PROPERTIES_HTTP_PROXY"; + sCmdToString[RSP_SET_LINK_PROPERTIES_HTTP_PROXY - BASE] = + "RSP_SET_LINK_PROPERTIES_HTTP_PROXY"; + sCmdToString[REQ_GET_LINK_CAPABILITIES - BASE] = "REQ_GET_LINK_CAPABILITIES"; + sCmdToString[RSP_GET_LINK_CAPABILITIES - BASE] = "RSP_GET_LINK_CAPABILITIES"; + sCmdToString[REQ_UPDATE_LINK_PROPERTIES_DATA_CALL_STATE - BASE] = + "REQ_UPDATE_LINK_PROPERTIES_DATA_CALL_STATE"; + sCmdToString[RSP_UPDATE_LINK_PROPERTIES_DATA_CALL_STATE - BASE] = + "RSP_UPDATE_LINK_PROPERTIES_DATA_CALL_STATE"; + sCmdToString[REQ_RESET - BASE] = "REQ_RESET"; + sCmdToString[RSP_RESET - BASE] = "RSP_RESET"; + sCmdToString[REQ_GET_REFCOUNT - BASE] = "REQ_GET_REFCOUNT"; + sCmdToString[RSP_GET_REFCOUNT - BASE] = "RSP_GET_REFCOUNT"; + sCmdToString[REQ_ADD_APNCONTEXT - BASE] = "REQ_ADD_APNCONTEXT"; + sCmdToString[RSP_ADD_APNCONTEXT - BASE] = "RSP_ADD_APNCONTEXT"; + sCmdToString[REQ_REMOVE_APNCONTEXT - BASE] = "REQ_REMOVE_APNCONTEXT"; + sCmdToString[RSP_REMOVE_APNCONTEXT - BASE] = "RSP_REMOVE_APNCONTEXT"; + sCmdToString[REQ_GET_APNCONTEXT_LIST - BASE] = "REQ_GET_APNCONTEXT_LIST"; + sCmdToString[RSP_GET_APNCONTEXT_LIST - BASE] = "RSP_GET_APNCONTEXT_LIST"; + sCmdToString[REQ_SET_RECONNECT_INTENT - BASE] = "REQ_SET_RECONNECT_INTENT"; + sCmdToString[RSP_SET_RECONNECT_INTENT - BASE] = "RSP_SET_RECONNECT_INTENT"; + sCmdToString[REQ_GET_RECONNECT_INTENT - BASE] = "REQ_GET_RECONNECT_INTENT"; + sCmdToString[RSP_GET_RECONNECT_INTENT - BASE] = "RSP_GET_RECONNECT_INTENT"; + } + protected static String cmdToString(int cmd) { + cmd -= BASE; + if ((cmd >= 0) && (cmd < sCmdToString.length)) { + return sCmdToString[cmd]; + } else { + return AsyncChannel.cmdToString(cmd + BASE); + } + } + /** * enum used to notify action taken or necessary to be * taken after the link property is changed. |
