Loading core/java/com/android/internal/util/AsyncChannel.java +18 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,24 @@ public class AsyncChannel { */ public static final int CMD_CHANNEL_DISCONNECTED = BASE + 4; private static final int CMD_TO_STRING_COUNT = CMD_CHANNEL_DISCONNECTED + 1; private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; static { sCmdToString[CMD_CHANNEL_HALF_CONNECTED - BASE] = "CMD_CHANNEL_HALF_CONNECTED"; sCmdToString[CMD_CHANNEL_FULL_CONNECTION - BASE] = "CMD_CHANNEL_FULL_CONNECTION"; sCmdToString[CMD_CHANNEL_FULLY_CONNECTED - BASE] = "CMD_CHANNEL_FULLY_CONNECTED"; sCmdToString[CMD_CHANNEL_DISCONNECT - BASE] = "CMD_CHANNEL_DISCONNECT"; sCmdToString[CMD_CHANNEL_DISCONNECTED - BASE] = "CMD_CHANNEL_DISCONNECTED"; } protected static String cmdToString(int cmd) { cmd -= BASE; if ((cmd >= 0) && (cmd < sCmdToString.length)) { return sCmdToString[cmd]; } else { return null; } } /** Successful status always 0, !0 is an unsuccessful status */ public static final int STATUS_SUCCESSFUL = 0; Loading core/java/com/android/internal/util/StateMachine.java +100 −41 Original line number Diff line number Diff line Loading @@ -20,9 +20,13 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.text.TextUtils; import android.util.Log; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.Vector; Loading Loading @@ -444,9 +448,11 @@ public class StateMachine { * The information maintained for a processed message. */ public static class ProcessedMessageInfo { private int what; private State state; private State orgState; private long mTime; private int mWhat; private String mInfo; private State mState; private State mOrgState; /** * Constructor Loading @@ -455,8 +461,8 @@ public class StateMachine { * @param orgState is the first state the received the message but * did not processes the message. */ ProcessedMessageInfo(Message message, State state, State orgState) { update(message, state, orgState); ProcessedMessageInfo(Message msg, String info, State state, State orgState) { update(msg, info, state, orgState); } /** Loading @@ -465,31 +471,47 @@ public class StateMachine { * @param orgState is the first state the received the message but * did not processes the message. */ public void update(Message message, State state, State orgState) { this.what = message.what; this.state = state; this.orgState = orgState; public void update(Message msg, String info, State state, State orgState) { mTime = System.currentTimeMillis(); mWhat = msg.what; mInfo = info; mState = state; mOrgState = orgState; } /** * @return time stamp */ public long getTime() { return mTime; } /** * @return msg.what */ public long getWhat() { return mWhat; } /** * @return the command that was executing */ public int getWhat() { return what; public String getInfo() { return mInfo; } /** * @return the state that handled this message */ public State getState() { return state; return mState; } /** * @return the original state that received the message. */ public State getOriginalState() { return orgState; return mOrgState; } /** Loading @@ -498,26 +520,24 @@ public class StateMachine { @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("what="); sb.append(what); sb.append("time="); Calendar c = Calendar.getInstance(); c.setTimeInMillis(mTime); sb.append(String.format("%tm-%td %tH:%tM:%tS.%tL", c, c, c, c, c, c)); sb.append(" state="); sb.append(cn(state)); sb.append(mState == null ? "<null>" : mState.getName()); sb.append(" orgState="); sb.append(cn(orgState)); return sb.toString(); } /** * @return an objects class name */ private String cn(Object n) { if (n == null) { return "null"; } else { String name = n.getClass().getName(); int lastDollar = name.lastIndexOf('$'); return name.substring(lastDollar + 1); sb.append(mOrgState == null ? "<null>" : mOrgState.getName()); sb.append(" what="); sb.append(mWhat); sb.append("(0x"); sb.append(Integer.toHexString(mWhat)); sb.append(")"); if ( ! TextUtils.isEmpty(mInfo)) { sb.append(" "); sb.append(mInfo); } return sb.toString(); } } Loading @@ -542,9 +562,9 @@ public class StateMachine { private int mCount = 0; /** * Constructor * private constructor use add */ ProcessedMessages() { private ProcessedMessages() { } /** Loading Loading @@ -599,22 +619,23 @@ public class StateMachine { /** * Add a processed message. * * @param message * @param msg * @param messageInfo to be stored * @param state that handled the message * @param orgState is the first state the received the message but * did not processes the message. */ void add(Message message, State state, State orgState) { void add(Message msg, String messageInfo, State state, State orgState) { mCount += 1; if (mMessages.size() < mMaxSize) { mMessages.add(new ProcessedMessageInfo(message, state, orgState)); mMessages.add(new ProcessedMessageInfo(msg, messageInfo, state, orgState)); } else { ProcessedMessageInfo pmi = mMessages.get(mOldestIndex); mOldestIndex += 1; if (mOldestIndex >= mMaxSize) { mOldestIndex = 0; } pmi.update(message, state, orgState); pmi.update(msg, messageInfo, state, orgState); } } } Loading Loading @@ -894,11 +915,14 @@ public class StateMachine { /** * Record that we processed the message */ if (mSm.recordProcessedMessage(msg)) { if (curStateInfo != null) { State orgState = mStateStack[mStateStackTopIndex].state; mProcessedMessages.add(msg, curStateInfo.state, orgState); mProcessedMessages.add(msg, mSm.getMessageInfo(msg), curStateInfo.state, orgState); } else { mProcessedMessages.add(msg, null, null); mProcessedMessages.add(msg, mSm.getMessageInfo(msg), null, null); } } } Loading Loading @@ -1545,6 +1569,24 @@ public class StateMachine { return mSmHandler.isQuit(msg); } /** * @return true if msg should be saved in ProcessedMessage, default is true. */ protected boolean recordProcessedMessage(Message msg) { return true; } /** * Return message info to be logged by ProcessedMessageInfo, default * is an empty string. Override if additional information is desired. * * @param msg that was processed * @return information to be logged as a String */ protected String getMessageInfo(Message msg) { return ""; } /** * @return if debugging is enabled */ Loading Loading @@ -1577,4 +1619,21 @@ public class StateMachine { /** Send the complete construction message */ mSmHandler.completeConstruction(); } /** * Dump the current state. * * @param fd * @param pw * @param args */ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println(getName() + ":"); pw.println(" total messages=" + getProcessedMessagesCount()); for (int i=0; i < getProcessedMessagesSize(); i++) { pw.printf(" msg[%d]: %s\n", i, getProcessedMessageInfo(i)); pw.flush(); } pw.println("curState=" + getCurrentState().getName()); } } telephony/java/com/android/internal/telephony/DataConnection.java +69 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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(); } } telephony/java/com/android/internal/telephony/DataConnectionAc.java +45 −0 Original line number Diff line number Diff line Loading @@ -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. Loading Loading
core/java/com/android/internal/util/AsyncChannel.java +18 −0 Original line number Diff line number Diff line Loading @@ -150,6 +150,24 @@ public class AsyncChannel { */ public static final int CMD_CHANNEL_DISCONNECTED = BASE + 4; private static final int CMD_TO_STRING_COUNT = CMD_CHANNEL_DISCONNECTED + 1; private static String[] sCmdToString = new String[CMD_TO_STRING_COUNT]; static { sCmdToString[CMD_CHANNEL_HALF_CONNECTED - BASE] = "CMD_CHANNEL_HALF_CONNECTED"; sCmdToString[CMD_CHANNEL_FULL_CONNECTION - BASE] = "CMD_CHANNEL_FULL_CONNECTION"; sCmdToString[CMD_CHANNEL_FULLY_CONNECTED - BASE] = "CMD_CHANNEL_FULLY_CONNECTED"; sCmdToString[CMD_CHANNEL_DISCONNECT - BASE] = "CMD_CHANNEL_DISCONNECT"; sCmdToString[CMD_CHANNEL_DISCONNECTED - BASE] = "CMD_CHANNEL_DISCONNECTED"; } protected static String cmdToString(int cmd) { cmd -= BASE; if ((cmd >= 0) && (cmd < sCmdToString.length)) { return sCmdToString[cmd]; } else { return null; } } /** Successful status always 0, !0 is an unsuccessful status */ public static final int STATUS_SUCCESSFUL = 0; Loading
core/java/com/android/internal/util/StateMachine.java +100 −41 Original line number Diff line number Diff line Loading @@ -20,9 +20,13 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Looper; import android.os.Message; import android.text.TextUtils; import android.util.Log; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.Vector; Loading Loading @@ -444,9 +448,11 @@ public class StateMachine { * The information maintained for a processed message. */ public static class ProcessedMessageInfo { private int what; private State state; private State orgState; private long mTime; private int mWhat; private String mInfo; private State mState; private State mOrgState; /** * Constructor Loading @@ -455,8 +461,8 @@ public class StateMachine { * @param orgState is the first state the received the message but * did not processes the message. */ ProcessedMessageInfo(Message message, State state, State orgState) { update(message, state, orgState); ProcessedMessageInfo(Message msg, String info, State state, State orgState) { update(msg, info, state, orgState); } /** Loading @@ -465,31 +471,47 @@ public class StateMachine { * @param orgState is the first state the received the message but * did not processes the message. */ public void update(Message message, State state, State orgState) { this.what = message.what; this.state = state; this.orgState = orgState; public void update(Message msg, String info, State state, State orgState) { mTime = System.currentTimeMillis(); mWhat = msg.what; mInfo = info; mState = state; mOrgState = orgState; } /** * @return time stamp */ public long getTime() { return mTime; } /** * @return msg.what */ public long getWhat() { return mWhat; } /** * @return the command that was executing */ public int getWhat() { return what; public String getInfo() { return mInfo; } /** * @return the state that handled this message */ public State getState() { return state; return mState; } /** * @return the original state that received the message. */ public State getOriginalState() { return orgState; return mOrgState; } /** Loading @@ -498,26 +520,24 @@ public class StateMachine { @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("what="); sb.append(what); sb.append("time="); Calendar c = Calendar.getInstance(); c.setTimeInMillis(mTime); sb.append(String.format("%tm-%td %tH:%tM:%tS.%tL", c, c, c, c, c, c)); sb.append(" state="); sb.append(cn(state)); sb.append(mState == null ? "<null>" : mState.getName()); sb.append(" orgState="); sb.append(cn(orgState)); return sb.toString(); } /** * @return an objects class name */ private String cn(Object n) { if (n == null) { return "null"; } else { String name = n.getClass().getName(); int lastDollar = name.lastIndexOf('$'); return name.substring(lastDollar + 1); sb.append(mOrgState == null ? "<null>" : mOrgState.getName()); sb.append(" what="); sb.append(mWhat); sb.append("(0x"); sb.append(Integer.toHexString(mWhat)); sb.append(")"); if ( ! TextUtils.isEmpty(mInfo)) { sb.append(" "); sb.append(mInfo); } return sb.toString(); } } Loading @@ -542,9 +562,9 @@ public class StateMachine { private int mCount = 0; /** * Constructor * private constructor use add */ ProcessedMessages() { private ProcessedMessages() { } /** Loading Loading @@ -599,22 +619,23 @@ public class StateMachine { /** * Add a processed message. * * @param message * @param msg * @param messageInfo to be stored * @param state that handled the message * @param orgState is the first state the received the message but * did not processes the message. */ void add(Message message, State state, State orgState) { void add(Message msg, String messageInfo, State state, State orgState) { mCount += 1; if (mMessages.size() < mMaxSize) { mMessages.add(new ProcessedMessageInfo(message, state, orgState)); mMessages.add(new ProcessedMessageInfo(msg, messageInfo, state, orgState)); } else { ProcessedMessageInfo pmi = mMessages.get(mOldestIndex); mOldestIndex += 1; if (mOldestIndex >= mMaxSize) { mOldestIndex = 0; } pmi.update(message, state, orgState); pmi.update(msg, messageInfo, state, orgState); } } } Loading Loading @@ -894,11 +915,14 @@ public class StateMachine { /** * Record that we processed the message */ if (mSm.recordProcessedMessage(msg)) { if (curStateInfo != null) { State orgState = mStateStack[mStateStackTopIndex].state; mProcessedMessages.add(msg, curStateInfo.state, orgState); mProcessedMessages.add(msg, mSm.getMessageInfo(msg), curStateInfo.state, orgState); } else { mProcessedMessages.add(msg, null, null); mProcessedMessages.add(msg, mSm.getMessageInfo(msg), null, null); } } } Loading Loading @@ -1545,6 +1569,24 @@ public class StateMachine { return mSmHandler.isQuit(msg); } /** * @return true if msg should be saved in ProcessedMessage, default is true. */ protected boolean recordProcessedMessage(Message msg) { return true; } /** * Return message info to be logged by ProcessedMessageInfo, default * is an empty string. Override if additional information is desired. * * @param msg that was processed * @return information to be logged as a String */ protected String getMessageInfo(Message msg) { return ""; } /** * @return if debugging is enabled */ Loading Loading @@ -1577,4 +1619,21 @@ public class StateMachine { /** Send the complete construction message */ mSmHandler.completeConstruction(); } /** * Dump the current state. * * @param fd * @param pw * @param args */ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) { pw.println(getName() + ":"); pw.println(" total messages=" + getProcessedMessagesCount()); for (int i=0; i < getProcessedMessagesSize(); i++) { pw.printf(" msg[%d]: %s\n", i, getProcessedMessageInfo(i)); pw.flush(); } pw.println("curState=" + getCurrentState().getName()); } }
telephony/java/com/android/internal/telephony/DataConnection.java +69 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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; Loading Loading @@ -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(); } }
telephony/java/com/android/internal/telephony/DataConnectionAc.java +45 −0 Original line number Diff line number Diff line Loading @@ -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. Loading