diff options
-rw-r--r-- | opengl/libs/EGL/egl.cpp | 4 | ||||
-rw-r--r-- | services/java/com/android/server/InputMethodManagerService.java | 33 | ||||
-rw-r--r-- | services/java/com/android/server/MountService.java | 2 | ||||
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 23 | ||||
-rw-r--r-- | services/surfaceflinger/LayerBuffer.cpp | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/BaseCommands.java | 40 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/CommandsInterface.java | 24 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/RIL.java | 16 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/AppInterface.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/AppInterface.java) | 17 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/BerTlv.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/BerTlv.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/CatCmdMessage.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/StkCmdMessage.java) | 20 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/CatException.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/StkException.java) | 8 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/CatLog.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/StkLog.java) | 8 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/CatResponseMessage.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/StkResponseMessage.java) | 6 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/CatService.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/StkService.java) | 262 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/CommandDetails.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/CommandDetails.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/CommandParams.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/CommandParams.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/CommandParamsFactory.java) | 75 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/ComprehensionTlv.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/Duration.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/Duration.java) | 4 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/FontSize.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/FontSize.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/IconLoader.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/IconLoader.java) | 16 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/ImageDescriptor.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/ImageDescriptor.java) | 4 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/Input.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/Input.java) | 8 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/Item.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/Item.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/LaunchBrowserMode.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/LaunchBrowserMode.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/Menu.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/Menu.java) | 4 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/PresentationType.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/PresentationType.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/ResponseData.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/ResponseData.java) | 14 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/ResultCode.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/ResultCode.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/ResultException.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/ResultException.java) | 4 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/RilMessageDecoder.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/RilMessageDecoder.java) | 28 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/TextAlignment.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/TextAlignment.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/TextAttribute.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/TextAttribute.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/TextColor.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/TextColor.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/TextMessage.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/TextMessage.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/Tone.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/Tone.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/ToneSettings.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/ToneSettings.java) | 2 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/ValueParser.java (renamed from telephony/java/com/android/internal/telephony/gsm/stk/ValueParser.java) | 6 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/cat/package.html | 5 | ||||
-rwxr-xr-x | telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java | 7 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/gsm/GSMPhone.java | 10 | ||||
-rw-r--r-- | telephony/java/com/android/internal/telephony/gsm/stk/package.html | 5 | ||||
-rw-r--r-- | tools/aapt/Android.mk | 2 | ||||
-rw-r--r-- | tools/localize/Android.mk | 2 |
45 files changed, 415 insertions, 274 deletions
diff --git a/opengl/libs/EGL/egl.cpp b/opengl/libs/EGL/egl.cpp index 89b3e1f..40317e7 100644 --- a/opengl/libs/EGL/egl.cpp +++ b/opengl/libs/EGL/egl.cpp @@ -1043,6 +1043,10 @@ EGLContext eglCreateContext(EGLDisplay dpy, EGLConfig config, int i=0, index=0; egl_connection_t* cnx = validate_display_config(dpy, config, dp, i, index); if (cnx) { + if (share_list != EGL_NO_CONTEXT) { + egl_context_t* const c = get_context(share_list); + share_list = c->context; + } EGLContext context = cnx->egl.eglCreateContext( dp->disp[i].dpy, dp->disp[i].config[index], share_list, attrib_list); diff --git a/services/java/com/android/server/InputMethodManagerService.java b/services/java/com/android/server/InputMethodManagerService.java index 5bf66e4..bc8607e 100644 --- a/services/java/com/android/server/InputMethodManagerService.java +++ b/services/java/com/android/server/InputMethodManagerService.java @@ -78,9 +78,12 @@ import android.view.inputmethod.EditorInfo; import java.io.FileDescriptor; import java.io.IOException; import java.io.PrintWriter; +import java.text.Collator; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.TreeMap; /** * This class provides a system service that manages input methods. @@ -466,6 +469,11 @@ public class InputMethodManagerService extends IInputMethodManager.Stub screenOnOffFilt.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); mContext.registerReceiver(new ScreenOnOffReceiver(), screenOnOffFilt); + mStatusBar = statusBar; + mInputMethodData = IconData.makeIcon("ime", null, 0, 0, 0); + mInputMethodIcon = statusBar.addIcon(mInputMethodData, null); + statusBar.setIconVisibility(mInputMethodIcon, false); + buildInputMethodListLocked(mMethodList, mMethodMap); final String enabledStr = Settings.Secure.getString( @@ -507,11 +515,6 @@ public class InputMethodManagerService extends IInputMethodManager.Stub } } - mStatusBar = statusBar; - mInputMethodData = IconData.makeIcon("ime", null, 0, 0, 0); - mInputMethodIcon = statusBar.addIcon(mInputMethodData, null); - statusBar.setIconVisibility(mInputMethodIcon, false); - mSettingsObserver = new SettingsObserver(mHandler); updateFromSettingsLocked(); } @@ -1222,6 +1225,7 @@ public class InputMethodManagerService extends IInputMethodManager.Stub if (mCurClient == null || client == null || mCurClient.client.asBinder() != client.asBinder()) { Slog.w(TAG, "Ignoring showInputMethodDialogFromClient of: " + client); + return; } mHandler.sendEmptyMessage(MSG_SHOW_IM_PICKER); @@ -1513,21 +1517,22 @@ public class InputMethodManagerService extends IInputMethodManager.Stub hideInputMethodMenuLocked(); int N = immis.size(); - - mItems = new CharSequence[N]; - mIms = new InputMethodInfo[N]; - - int j = 0; + + final Map<CharSequence, InputMethodInfo> imMap = + new TreeMap<CharSequence, InputMethodInfo>(Collator.getInstance()); + for (int i = 0; i < N; ++i) { InputMethodInfo property = immis.get(i); if (property == null) { continue; } - mItems[j] = property.loadLabel(pm); - mIms[j] = property; - j++; + imMap.put(property.loadLabel(pm), property); } - + + N = imMap.size(); + mItems = imMap.keySet().toArray(new CharSequence[N]); + mIms = imMap.values().toArray(new InputMethodInfo[N]); + int checkedItem = 0; for (int i = 0; i < N; ++i) { if (mIms[i].getId().equals(lastInputMethodId)) { diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java index 6ceeb95..cb55808 100644 --- a/services/java/com/android/server/MountService.java +++ b/services/java/com/android/server/MountService.java @@ -969,7 +969,7 @@ class MountService extends IMountService.Stub private void setUmsEnabling(boolean enable) { synchronized (mListeners) { - mUmsEnabling = true; + mUmsEnabling = enable; } } diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java index a388311..804af9c 100644 --- a/services/java/com/android/server/am/ActivityManagerService.java +++ b/services/java/com/android/server/am/ActivityManagerService.java @@ -9047,7 +9047,28 @@ public final class ActivityManagerService extends ActivityManagerNative implemen sr.crashCount++; } } - + + // If the crashing process is what we consider to be the "home process" and it has been + // replaced by a third-party app, clear the package preferred activities from packages + // with a home activity running in the process to prevent a repeatedly crashing app + // from blocking the user to manually clear the list. + if (app == mHomeProcess && mHomeProcess.activities.size() > 0 + && (mHomeProcess.info.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { + Iterator it = mHomeProcess.activities.iterator(); + while (it.hasNext()) { + HistoryRecord r = (HistoryRecord)it.next(); + if (r.isHomeActivity) { + Log.i(TAG, "Clearing package preferred activities from " + r.packageName); + try { + ActivityThread.getPackageManager() + .clearPackagePreferredActivities(r.packageName); + } catch (RemoteException c) { + // pm is in same process, this will never happen. + } + } + } + } + mProcessCrashTimes.put(app.info.processName, app.info.uid, now); return true; } diff --git a/services/surfaceflinger/LayerBuffer.cpp b/services/surfaceflinger/LayerBuffer.cpp index 5c21593..0869283 100644 --- a/services/surfaceflinger/LayerBuffer.cpp +++ b/services/surfaceflinger/LayerBuffer.cpp @@ -540,7 +540,7 @@ status_t LayerBuffer::BufferSource::initTempBuffer() const const ISurface::BufferHeap& buffers(mBufferHeap); uint32_t w = mLayer.mTransformedBounds.width(); uint32_t h = mLayer.mTransformedBounds.height(); - if (buffers.w * h != buffers.h * w) { + if (mLayer.getOrientation() & (Transform::ROT_90 | Transform::ROT_270)) { int t = w; w = h; h = t; } diff --git a/telephony/java/com/android/internal/telephony/BaseCommands.java b/telephony/java/com/android/internal/telephony/BaseCommands.java index b962375..815fbfb 100644 --- a/telephony/java/com/android/internal/telephony/BaseCommands.java +++ b/telephony/java/com/android/internal/telephony/BaseCommands.java @@ -73,10 +73,10 @@ public abstract class BaseCommands implements CommandsInterface { protected Registrant mSmsOnSimRegistrant; protected Registrant mSmsStatusRegistrant; protected Registrant mSsnRegistrant; - protected Registrant mStkSessionEndRegistrant; - protected Registrant mStkProCmdRegistrant; - protected Registrant mStkEventRegistrant; - protected Registrant mStkCallSetUpRegistrant; + protected Registrant mCatSessionEndRegistrant; + protected Registrant mCatProCmdRegistrant; + protected Registrant mCatEventRegistrant; + protected Registrant mCatCallSetUpRegistrant; protected Registrant mIccSmsFullRegistrant; protected Registrant mEmergencyCallbackModeRegistrant; protected Registrant mIccRefreshRegistrant; @@ -395,36 +395,36 @@ public abstract class BaseCommands implements CommandsInterface { mSsnRegistrant.clear(); } - public void setOnStkSessionEnd(Handler h, int what, Object obj) { - mStkSessionEndRegistrant = new Registrant (h, what, obj); + public void setOnCatSessionEnd(Handler h, int what, Object obj) { + mCatSessionEndRegistrant = new Registrant (h, what, obj); } - public void unSetOnStkSessionEnd(Handler h) { - mStkSessionEndRegistrant.clear(); + public void unSetOnCatSessionEnd(Handler h) { + mCatSessionEndRegistrant.clear(); } - public void setOnStkProactiveCmd(Handler h, int what, Object obj) { - mStkProCmdRegistrant = new Registrant (h, what, obj); + public void setOnCatProactiveCmd(Handler h, int what, Object obj) { + mCatProCmdRegistrant = new Registrant (h, what, obj); } - public void unSetOnStkProactiveCmd(Handler h) { - mStkProCmdRegistrant.clear(); + public void unSetOnCatProactiveCmd(Handler h) { + mCatProCmdRegistrant.clear(); } - public void setOnStkEvent(Handler h, int what, Object obj) { - mStkEventRegistrant = new Registrant (h, what, obj); + public void setOnCatEvent(Handler h, int what, Object obj) { + mCatEventRegistrant = new Registrant (h, what, obj); } - public void unSetOnStkEvent(Handler h) { - mStkEventRegistrant.clear(); + public void unSetOnCatEvent(Handler h) { + mCatEventRegistrant.clear(); } - public void setOnStkCallSetUp(Handler h, int what, Object obj) { - mStkCallSetUpRegistrant = new Registrant (h, what, obj); + public void setOnCatCallSetUp(Handler h, int what, Object obj) { + mCatCallSetUpRegistrant = new Registrant (h, what, obj); } - public void unSetOnStkCallSetUp(Handler h) { - mStkCallSetUpRegistrant.clear(); + public void unSetOnCatCallSetUp(Handler h) { + mCatCallSetUpRegistrant.clear(); } public void setOnIccSmsFull(Handler h, int what, Object obj) { diff --git a/telephony/java/com/android/internal/telephony/CommandsInterface.java b/telephony/java/com/android/internal/telephony/CommandsInterface.java index 8e03c5a..5de0426 100644 --- a/telephony/java/com/android/internal/telephony/CommandsInterface.java +++ b/telephony/java/com/android/internal/telephony/CommandsInterface.java @@ -374,48 +374,48 @@ public interface CommandsInterface { void unSetOnSuppServiceNotification(Handler h); /** - * Sets the handler for Session End Notifications for STK. + * Sets the handler for Session End Notifications for CAT. * Unlike the register* methods, there's only one notification handler * * @param h Handler for notification message. * @param what User-defined message code. * @param obj User object. */ - void setOnStkSessionEnd(Handler h, int what, Object obj); - void unSetOnStkSessionEnd(Handler h); + void setOnCatSessionEnd(Handler h, int what, Object obj); + void unSetOnCatSessionEnd(Handler h); /** - * Sets the handler for Proactive Commands for STK. + * Sets the handler for Proactive Commands for CAT. * Unlike the register* methods, there's only one notification handler * * @param h Handler for notification message. * @param what User-defined message code. * @param obj User object. */ - void setOnStkProactiveCmd(Handler h, int what, Object obj); - void unSetOnStkProactiveCmd(Handler h); + void setOnCatProactiveCmd(Handler h, int what, Object obj); + void unSetOnCatProactiveCmd(Handler h); /** - * Sets the handler for Event Notifications for STK. + * Sets the handler for Event Notifications for CAT. * Unlike the register* methods, there's only one notification handler * * @param h Handler for notification message. * @param what User-defined message code. * @param obj User object. */ - void setOnStkEvent(Handler h, int what, Object obj); - void unSetOnStkEvent(Handler h); + void setOnCatEvent(Handler h, int what, Object obj); + void unSetOnCatEvent(Handler h); /** - * Sets the handler for Call Set Up Notifications for STK. + * Sets the handler for Call Set Up Notifications for CAT. * Unlike the register* methods, there's only one notification handler * * @param h Handler for notification message. * @param what User-defined message code. * @param obj User object. */ - void setOnStkCallSetUp(Handler h, int what, Object obj); - void unSetOnStkCallSetUp(Handler h); + void setOnCatCallSetUp(Handler h, int what, Object obj); + void unSetOnCatCallSetUp(Handler h); /** * Enables/disbables supplementary service related notifications from diff --git a/telephony/java/com/android/internal/telephony/RIL.java b/telephony/java/com/android/internal/telephony/RIL.java index d79a89e..569ac5c 100644 --- a/telephony/java/com/android/internal/telephony/RIL.java +++ b/telephony/java/com/android/internal/telephony/RIL.java @@ -2481,8 +2481,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_UNSOL_STK_SESSION_END: if (RILJ_LOGD) unsljLog(response); - if (mStkSessionEndRegistrant != null) { - mStkSessionEndRegistrant.notifyRegistrant( + if (mCatSessionEndRegistrant != null) { + mCatSessionEndRegistrant.notifyRegistrant( new AsyncResult (null, ret, null)); } break; @@ -2490,8 +2490,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_UNSOL_STK_PROACTIVE_COMMAND: if (RILJ_LOGD) unsljLogRet(response, ret); - if (mStkProCmdRegistrant != null) { - mStkProCmdRegistrant.notifyRegistrant( + if (mCatProCmdRegistrant != null) { + mCatProCmdRegistrant.notifyRegistrant( new AsyncResult (null, ret, null)); } break; @@ -2499,8 +2499,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_UNSOL_STK_EVENT_NOTIFY: if (RILJ_LOGD) unsljLogRet(response, ret); - if (mStkEventRegistrant != null) { - mStkEventRegistrant.notifyRegistrant( + if (mCatEventRegistrant != null) { + mCatEventRegistrant.notifyRegistrant( new AsyncResult (null, ret, null)); } break; @@ -2508,8 +2508,8 @@ public final class RIL extends BaseCommands implements CommandsInterface { case RIL_UNSOL_STK_CALL_SETUP: if (RILJ_LOGD) unsljLogRet(response, ret); - if (mStkCallSetUpRegistrant != null) { - mStkCallSetUpRegistrant.notifyRegistrant( + if (mCatCallSetUpRegistrant != null) { + mCatCallSetUpRegistrant.notifyRegistrant( new AsyncResult (null, ret, null)); } break; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/AppInterface.java b/telephony/java/com/android/internal/telephony/cat/AppInterface.java index 58f1f97..2eb6ccb 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/AppInterface.java +++ b/telephony/java/com/android/internal/telephony/cat/AppInterface.java @@ -14,29 +14,29 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** - * Interface for communication between STK App and STK Telephony + * Interface for communication between STK App and CAT Telephony * * {@hide} */ public interface AppInterface { /* - * Intent's actions which are broadcasted by the Telephony once a new STK + * Intent's actions which are broadcasted by the Telephony once a new CAT * proactive command, session end arrive. */ - public static final String STK_CMD_ACTION = + public static final String CAT_CMD_ACTION = "android.intent.action.stk.command"; - public static final String STK_SESSION_END_ACTION = + public static final String CAT_SESSION_END_ACTION = "android.intent.action.stk.session_end"; /* * Callback function from app to telephony to pass a result code and user's - * input back to the SIM. + * input back to the ICC. */ - void onCmdResponse(StkResponseMessage resMsg); + void onCmdResponse(CatResponseMessage resMsg); /* * Enumeration for representing "Type of Command" of proactive commands. @@ -58,7 +58,8 @@ public interface AppInterface { SET_UP_EVENT_LIST(0x05), SET_UP_IDLE_MODE_TEXT(0x28), SET_UP_MENU(0x25), - SET_UP_CALL(0x10); + SET_UP_CALL(0x10), + PROVIDE_LOCAL_INFORMATION(0x26); private int mValue; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/BerTlv.java b/telephony/java/com/android/internal/telephony/cat/BerTlv.java index 19d3279..774bfa3 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/BerTlv.java +++ b/telephony/java/com/android/internal/telephony/cat/BerTlv.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import java.util.List; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/StkCmdMessage.java b/telephony/java/com/android/internal/telephony/cat/CatCmdMessage.java index 5425a43..5155bb2 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/StkCmdMessage.java +++ b/telephony/java/com/android/internal/telephony/cat/CatCmdMessage.java @@ -14,17 +14,17 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.os.Parcel; import android.os.Parcelable; /** - * Class used to pass STK messages from telephony to application. Application + * Class used to pass CAT messages from telephony to application. Application * should call getXXX() to get commands's specific values. * */ -public class StkCmdMessage implements Parcelable { +public class CatCmdMessage implements Parcelable { // members CommandDetails mCmdDet; private TextMessage mTextMsg; @@ -50,7 +50,7 @@ public class StkCmdMessage implements Parcelable { public TextMessage callMsg; } - StkCmdMessage(CommandParams cmdParams) { + CatCmdMessage(CommandParams cmdParams) { mCmdDet = cmdParams.cmdDet; switch(getCmdType()) { case SET_UP_MENU: @@ -88,7 +88,7 @@ public class StkCmdMessage implements Parcelable { } } - public StkCmdMessage(Parcel in) { + public CatCmdMessage(Parcel in) { mCmdDet = in.readParcelable(null); mTextMsg = in.readParcelable(null); mMenu = in.readParcelable(null); @@ -130,13 +130,13 @@ public class StkCmdMessage implements Parcelable { } } - public static final Parcelable.Creator<StkCmdMessage> CREATOR = new Parcelable.Creator<StkCmdMessage>() { - public StkCmdMessage createFromParcel(Parcel in) { - return new StkCmdMessage(in); + public static final Parcelable.Creator<CatCmdMessage> CREATOR = new Parcelable.Creator<CatCmdMessage>() { + public CatCmdMessage createFromParcel(Parcel in) { + return new CatCmdMessage(in); } - public StkCmdMessage[] newArray(int size) { - return new StkCmdMessage[size]; + public CatCmdMessage[] newArray(int size) { + return new CatCmdMessage[size]; } }; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/StkException.java b/telephony/java/com/android/internal/telephony/cat/CatException.java index 86de366..1bf1369 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/StkException.java +++ b/telephony/java/com/android/internal/telephony/cat/CatException.java @@ -14,18 +14,18 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.util.AndroidException; /** - * Base class for all the exceptions in STK service. + * Base class for all the exceptions in CAT service. * * {@hide} */ -class StkException extends AndroidException { - public StkException() { +class CatException extends AndroidException { + public CatException() { super(); } } diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/StkLog.java b/telephony/java/com/android/internal/telephony/cat/CatLog.java index bd6bc8f..e19ff43 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/StkLog.java +++ b/telephony/java/com/android/internal/telephony/cat/CatLog.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.util.Log; -public abstract class StkLog { +public abstract class CatLog { static final boolean DEBUG = true; public static void d(Object caller, String msg) { @@ -27,7 +27,7 @@ public abstract class StkLog { } String className = caller.getClass().getName(); - Log.d("STK", className.substring(className.lastIndexOf('.') + 1) + ": " + Log.d("CAT", className.substring(className.lastIndexOf('.') + 1) + ": " + msg); } @@ -36,6 +36,6 @@ public abstract class StkLog { return; } - Log.d("STK", caller + ": " + msg); + Log.d("CAT", caller + ": " + msg); } } diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/StkResponseMessage.java b/telephony/java/com/android/internal/telephony/cat/CatResponseMessage.java index 04a52e6..cfcac36 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/StkResponseMessage.java +++ b/telephony/java/com/android/internal/telephony/cat/CatResponseMessage.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; -public class StkResponseMessage { +public class CatResponseMessage { CommandDetails cmdDet = null; ResultCode resCode = ResultCode.OK; int usersMenuSelection = 0; @@ -24,7 +24,7 @@ public class StkResponseMessage { boolean usersYesNoSelection = false; boolean usersConfirm = false; - public StkResponseMessage(StkCmdMessage cmdMsg) { + public CatResponseMessage(CatCmdMessage cmdMsg) { this.cmdDet = cmdMsg.mCmdDet; } diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/StkService.java b/telephony/java/com/android/internal/telephony/cat/CatService.java index 29ed95c..1e23e34 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/StkService.java +++ b/telephony/java/com/android/internal/telephony/cat/CatService.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.content.Context; import android.content.Intent; @@ -22,12 +22,13 @@ import android.os.AsyncResult; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; +import android.os.SystemProperties; import com.android.internal.telephony.IccUtils; import com.android.internal.telephony.CommandsInterface; -import com.android.internal.telephony.gsm.SimCard; -import com.android.internal.telephony.gsm.SIMFileHandler; -import com.android.internal.telephony.gsm.SIMRecords; +import com.android.internal.telephony.IccCard; +import com.android.internal.telephony.IccFileHandler; +import com.android.internal.telephony.IccRecords; import android.util.Config; @@ -111,17 +112,17 @@ class RilMessage { * * {@hide} */ -public class StkService extends Handler implements AppInterface { +public class CatService extends Handler implements AppInterface { // Class members - private static SIMRecords mSimRecords; + private static IccRecords mIccRecords; // Service members. - private static StkService sInstance; + private static CatService sInstance; private CommandsInterface mCmdIf; private Context mContext; - private StkCmdMessage mCurrntCmd = null; - private StkCmdMessage mMenuCmd = null; + private CatCmdMessage mCurrntCmd = null; + private CatCmdMessage mMenuCmd = null; private RilMessageDecoder mMsgDecoder = null; @@ -136,7 +137,7 @@ public class StkService extends Handler implements AppInterface { static final int MSG_ID_RIL_MSG_DECODED = 10; // Events to signal SIM presence or absent in the device. - private static final int MSG_ID_SIM_LOADED = 20; + private static final int MSG_ID_ICC_RECORDS_LOADED = 20; private static final int DEV_ID_KEYPAD = 0x01; private static final int DEV_ID_DISPLAY = 0x02; @@ -146,10 +147,10 @@ public class StkService extends Handler implements AppInterface { private static final int DEV_ID_NETWORK = 0x83; /* Intentionally private for singleton */ - private StkService(CommandsInterface ci, SIMRecords sr, Context context, - SIMFileHandler fh, SimCard sc) { - if (ci == null || sr == null || context == null || fh == null - || sc == null) { + private CatService(CommandsInterface ci, IccRecords ir, Context context, + IccFileHandler fh, IccCard ic) { + if (ci == null || ir == null || context == null || fh == null + || ic == null) { throw new NullPointerException( "Service: Input parameters must not be null"); } @@ -160,33 +161,33 @@ public class StkService extends Handler implements AppInterface { mMsgDecoder = RilMessageDecoder.getInstance(this, fh); // Register ril events handling. - mCmdIf.setOnStkSessionEnd(this, MSG_ID_SESSION_END, null); - mCmdIf.setOnStkProactiveCmd(this, MSG_ID_PROACTIVE_COMMAND, null); - mCmdIf.setOnStkEvent(this, MSG_ID_EVENT_NOTIFY, null); - mCmdIf.setOnStkCallSetUp(this, MSG_ID_CALL_SETUP, null); + mCmdIf.setOnCatSessionEnd(this, MSG_ID_SESSION_END, null); + mCmdIf.setOnCatProactiveCmd(this, MSG_ID_PROACTIVE_COMMAND, null); + mCmdIf.setOnCatEvent(this, MSG_ID_EVENT_NOTIFY, null); + mCmdIf.setOnCatCallSetUp(this, MSG_ID_CALL_SETUP, null); //mCmdIf.setOnSimRefresh(this, MSG_ID_REFRESH, null); - mSimRecords = sr; + mIccRecords = ir; // Register for SIM ready event. - mSimRecords.registerForRecordsLoaded(this, MSG_ID_SIM_LOADED, null); + mIccRecords.registerForRecordsLoaded(this, MSG_ID_ICC_RECORDS_LOADED, null); mCmdIf.reportStkServiceIsRunning(null); - StkLog.d(this, "StkService: is running"); + CatLog.d(this, "Is running"); } public void dispose() { - mSimRecords.unregisterForRecordsLoaded(this); - mCmdIf.unSetOnStkSessionEnd(this); - mCmdIf.unSetOnStkProactiveCmd(this); - mCmdIf.unSetOnStkEvent(this); - mCmdIf.unSetOnStkCallSetUp(this); + mIccRecords.unregisterForRecordsLoaded(this); + mCmdIf.unSetOnCatSessionEnd(this); + mCmdIf.unSetOnCatProactiveCmd(this); + mCmdIf.unSetOnCatEvent(this); + mCmdIf.unSetOnCatCallSetUp(this); this.removeCallbacksAndMessages(null); } protected void finalize() { - StkLog.d(this, "Service finalized"); + CatLog.d(this, "Service finalized"); } private void handleRilMsg(RilMessage rilMsg) { @@ -241,55 +242,53 @@ public class StkService extends Handler implements AppInterface { * */ private void handleProactiveCommand(CommandParams cmdParams) { - StkLog.d(this, cmdParams.getCommandType().name()); + CatLog.d(this, cmdParams.getCommandType().name()); - StkCmdMessage cmdMsg = new StkCmdMessage(cmdParams); + CatCmdMessage cmdMsg = new CatCmdMessage(cmdParams); switch (cmdParams.getCommandType()) { - case SET_UP_MENU: - if (removeMenu(cmdMsg.getMenu())) { - mMenuCmd = null; - } else { - mMenuCmd = cmdMsg; - } - sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, - null); - break; - case DISPLAY_TEXT: - // when application is not required to respond, send an immediate - // response. - if (!cmdMsg.geTextMessage().responseNeeded) { - sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, - 0, null); - } - break; - case REFRESH: - // ME side only handles refresh commands which meant to remove IDLE - // MODE TEXT. - cmdParams.cmdDet.typeOfCommand = CommandType.SET_UP_IDLE_MODE_TEXT - .value(); - break; - case SET_UP_IDLE_MODE_TEXT: - sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, - 0, null); - break; - case LAUNCH_BROWSER: - case SELECT_ITEM: - case GET_INPUT: - case GET_INKEY: - case SEND_DTMF: - case SEND_SMS: - case SEND_SS: - case SEND_USSD: - case PLAY_TONE: - case SET_UP_CALL: - // nothing to do on telephony! - break; - default: - StkLog.d(this, "Unsupported command"); - return; + case SET_UP_MENU: + if (removeMenu(cmdMsg.getMenu())) { + mMenuCmd = null; + } else { + mMenuCmd = cmdMsg; + } + sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); + break; + case DISPLAY_TEXT: + // when application is not required to respond, send an immediate response. + if (!cmdMsg.geTextMessage().responseNeeded) { + sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); + } + break; + case REFRESH: + // ME side only handles refresh commands which meant to remove IDLE + // MODE TEXT. + cmdParams.cmdDet.typeOfCommand = CommandType.SET_UP_IDLE_MODE_TEXT.value(); + break; + case SET_UP_IDLE_MODE_TEXT: + sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); + break; + case PROVIDE_LOCAL_INFORMATION: + sendTerminalResponse(cmdParams.cmdDet, ResultCode.OK, false, 0, null); + return; + case LAUNCH_BROWSER: + case SELECT_ITEM: + case GET_INPUT: + case GET_INKEY: + case SEND_DTMF: + case SEND_SMS: + case SEND_SS: + case SEND_USSD: + case PLAY_TONE: + case SET_UP_CALL: + // nothing to do on telephony! + break; + default: + CatLog.d(this, "Unsupported command"); + return; } mCurrntCmd = cmdMsg; - Intent intent = new Intent(AppInterface.STK_CMD_ACTION); + Intent intent = new Intent(AppInterface.CAT_CMD_ACTION); intent.putExtra("STK CMD", cmdMsg); mContext.sendBroadcast(intent); } @@ -299,10 +298,10 @@ public class StkService extends Handler implements AppInterface { * */ private void handleSessionEnd() { - StkLog.d(this, "SESSION END"); + CatLog.d(this, "SESSION END"); mCurrntCmd = mMenuCmd; - Intent intent = new Intent(AppInterface.STK_SESSION_END_ACTION); + Intent intent = new Intent(AppInterface.CAT_SESSION_END_ACTION); mContext.sendBroadcast(intent); } @@ -315,6 +314,11 @@ public class StkService extends Handler implements AppInterface { } ByteArrayOutputStream buf = new ByteArrayOutputStream(); + Input cmdInput = null; + if (mCurrntCmd != null) { + cmdInput = mCurrntCmd.geInput(); + } + // command details int tag = ComprehensionTlvTag.COMMAND_DETAILS.value(); if (cmdDet.compRequired) { @@ -327,7 +331,13 @@ public class StkService extends Handler implements AppInterface { buf.write(cmdDet.commandQualifier); // device identities - tag = 0x80 | ComprehensionTlvTag.DEVICE_IDENTITIES.value(); + // According to TS102.223/TS31.111 section 6.8 Structure of + // TERMINAL RESPONSE, "For all SIMPLE-TLV objects with Min=N, + // the ME should set the CR(comprehension required) flag to + // comprehension not required.(CR=0)" + // Since DEVICE_IDENTITIES and DURATION TLVs have Min=N, + // the CR flag is not set. + tag = ComprehensionTlvTag.DEVICE_IDENTITIES.value(); buf.write(tag); buf.write(0x02); // length buf.write(DEV_ID_TERMINAL); // source device id @@ -348,17 +358,65 @@ public class StkService extends Handler implements AppInterface { // Fill optional data for each corresponding command if (resp != null) { resp.format(buf); + } else { + encodeOptionalTags(cmdDet, resultCode, cmdInput, buf); } byte[] rawData = buf.toByteArray(); String hexString = IccUtils.bytesToHexString(rawData); if (Config.LOGD) { - StkLog.d(this, "TERMINAL RESPONSE: " + hexString); + CatLog.d(this, "TERMINAL RESPONSE: " + hexString); } mCmdIf.sendTerminalResponse(hexString, null); } + private void encodeOptionalTags(CommandDetails cmdDet, + ResultCode resultCode, Input cmdInput, ByteArrayOutputStream buf) { + switch (AppInterface.CommandType.fromInt(cmdDet.typeOfCommand)) { + case GET_INKEY: + // ETSI TS 102 384,27.22.4.2.8.4.2. + // If it is a response for GET_INKEY command and the response timeout + // occured, then add DURATION TLV for variable timeout case. + if ((resultCode.value() == ResultCode.NO_RESPONSE_FROM_USER.value()) && + (cmdInput != null) && (cmdInput.duration != null)) { + getInKeyResponse(buf, cmdInput); + } + break; + case PROVIDE_LOCAL_INFORMATION: + if ((cmdDet.commandQualifier == CommandParamsFactory.LANGUAGE_SETTING) && + (resultCode.value() == ResultCode.OK.value())) { + getPliResponse(buf); + } + break; + default: + CatLog.d(this, "encodeOptionalTags() Unsupported Cmd:" + cmdDet.typeOfCommand); + break; + } + } + + private void getInKeyResponse(ByteArrayOutputStream buf, Input cmdInput) { + int tag = ComprehensionTlvTag.DURATION.value(); + + buf.write(tag); + buf.write(0x02); // length + buf.write(cmdInput.duration.timeUnit.SECOND.value()); // Time (Unit,Seconds) + buf.write(cmdInput.duration.timeInterval); // Time Duration + } + + private void getPliResponse(ByteArrayOutputStream buf) { + + // Locale Language Setting + String lang = SystemProperties.get("persist.sys.language"); + + if (lang != null) { + // tag + int tag = ComprehensionTlvTag.LANGUAGE.value(); + buf.write(tag); + ResponseData.writeLength(buf, lang.length()); + buf.write(lang.getBytes(), 0, lang.length()); + } + } private void sendMenuSelection(int menuId, boolean helpRequired) { @@ -446,35 +504,35 @@ public class StkService extends Handler implements AppInterface { } /** - * Used for instantiating/updating the Service from the GsmPhone constructor. + * Used for instantiating/updating the Service from the GsmPhone or CdmaPhone constructor. * * @param ci CommandsInterface object - * @param sr SIMRecords object + * @param ir IccRecords object * @param context phone app context - * @param fh SIM file handler - * @param sc GSM SIM card + * @param fh Icc file handler + * @param ic Icc card * @return The only Service object in the system */ - public static StkService getInstance(CommandsInterface ci, SIMRecords sr, - Context context, SIMFileHandler fh, SimCard sc) { + public static CatService getInstance(CommandsInterface ci, IccRecords ir, + Context context, IccFileHandler fh, IccCard ic) { if (sInstance == null) { - if (ci == null || sr == null || context == null || fh == null - || sc == null) { + if (ci == null || ir == null || context == null || fh == null + || ic == null) { return null; } - HandlerThread thread = new HandlerThread("Stk Telephony service"); + HandlerThread thread = new HandlerThread("Cat Telephony service"); thread.start(); - sInstance = new StkService(ci, sr, context, fh, sc); - StkLog.d(sInstance, "NEW sInstance"); - } else if ((sr != null) && (mSimRecords != sr)) { - StkLog.d(sInstance, "Reinitialize the Service with SIMRecords"); - mSimRecords = sr; + sInstance = new CatService(ci, ir, context, fh, ic); + CatLog.d(sInstance, "NEW sInstance"); + } else if ((ir != null) && (mIccRecords != ir)) { + CatLog.d(sInstance, "Reinitialize the Service with SIMRecords"); + mIccRecords = ir; // re-Register for SIM ready event. - mSimRecords.registerForRecordsLoaded(sInstance, MSG_ID_SIM_LOADED, null); - StkLog.d(sInstance, "sr changed reinitialize and return current sInstance"); + mIccRecords.registerForRecordsLoaded(sInstance, MSG_ID_ICC_RECORDS_LOADED, null); + CatLog.d(sInstance, "sr changed reinitialize and return current sInstance"); } else { - StkLog.d(sInstance, "Return current sInstance"); + CatLog.d(sInstance, "Return current sInstance"); } return sInstance; } @@ -496,7 +554,7 @@ public class StkService extends Handler implements AppInterface { case MSG_ID_PROACTIVE_COMMAND: case MSG_ID_EVENT_NOTIFY: case MSG_ID_REFRESH: - StkLog.d(this, "ril message arrived"); + CatLog.d(this, "ril message arrived"); String data = null; if (msg.obj != null) { AsyncResult ar = (AsyncResult) msg.obj; @@ -513,20 +571,20 @@ public class StkService extends Handler implements AppInterface { case MSG_ID_CALL_SETUP: mMsgDecoder.sendStartDecodingMessageParams(new RilMessage(msg.what, null)); break; - case MSG_ID_SIM_LOADED: + case MSG_ID_ICC_RECORDS_LOADED: break; case MSG_ID_RIL_MSG_DECODED: handleRilMsg((RilMessage) msg.obj); break; case MSG_ID_RESPONSE: - handleCmdResponse((StkResponseMessage) msg.obj); + handleCmdResponse((CatResponseMessage) msg.obj); break; default: - throw new AssertionError("Unrecognized STK command: " + msg.what); + throw new AssertionError("Unrecognized CAT command: " + msg.what); } } - public synchronized void onCmdResponse(StkResponseMessage resMsg) { + public synchronized void onCmdResponse(CatResponseMessage resMsg) { if (resMsg == null) { return; } @@ -535,7 +593,7 @@ public class StkService extends Handler implements AppInterface { msg.sendToTarget(); } - private boolean validateResponse(StkResponseMessage resMsg) { + private boolean validateResponse(CatResponseMessage resMsg) { if (mCurrntCmd != null) { return (resMsg.cmdDet.compareTo(mCurrntCmd.mCmdDet)); } @@ -548,13 +606,13 @@ public class StkService extends Handler implements AppInterface { return true; } } catch (NullPointerException e) { - StkLog.d(this, "Unable to get Menu's items size"); + CatLog.d(this, "Unable to get Menu's items size"); return true; } return false; } - private void handleCmdResponse(StkResponseMessage resMsg) { + private void handleCmdResponse(CatResponseMessage resMsg) { // Make sure the response details match the last valid command. An invalid // response is a one that doesn't have a corresponding proactive command // and sending it can "confuse" the baseband/ril. @@ -563,7 +621,7 @@ public class StkService extends Handler implements AppInterface { // by the framework inside the history stack. That activity will be // available for relaunch using the latest application dialog // (long press on the home button). Relaunching that activity can send - // the same command's result again to the StkService and can cause it to + // the same command's result again to the CatService and can cause it to // get out of sync with the SIM. if (!validateResponse(resMsg)) { return; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/CommandDetails.java b/telephony/java/com/android/internal/telephony/cat/CommandDetails.java index e81ff98..e3f0798 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/CommandDetails.java +++ b/telephony/java/com/android/internal/telephony/cat/CommandDetails.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.os.Parcel; import android.os.Parcelable; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/CommandParams.java b/telephony/java/com/android/internal/telephony/cat/CommandParams.java index 3da652f..22a5c8c 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/CommandParams.java +++ b/telephony/java/com/android/internal/telephony/cat/CommandParams.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.graphics.Bitmap; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/CommandParamsFactory.java b/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java index ce4c459..12204a0 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/CommandParamsFactory.java +++ b/telephony/java/com/android/internal/telephony/cat/CommandParamsFactory.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.graphics.Bitmap; import android.os.Handler; import android.os.Message; import com.android.internal.telephony.GsmAlphabet; -import com.android.internal.telephony.gsm.SIMFileHandler; +import com.android.internal.telephony.IccFileHandler; import java.util.Iterator; import java.util.List; @@ -52,8 +52,11 @@ class CommandParamsFactory extends Handler { static final int REFRESH_NAA_INIT = 0x03; static final int REFRESH_UICC_RESET = 0x04; + // Command Qualifier values for PLI command + static final int LANGUAGE_SETTING = 0x04; + static synchronized CommandParamsFactory getInstance(RilMessageDecoder caller, - SIMFileHandler fh) { + IccFileHandler fh) { if (sInstance != null) { return sInstance; } @@ -63,7 +66,7 @@ class CommandParamsFactory extends Handler { return null; } - private CommandParamsFactory(RilMessageDecoder caller, SIMFileHandler fh) { + private CommandParamsFactory(RilMessageDecoder caller, IccFileHandler fh) { mCaller = caller; mIconLoader = IconLoader.getInstance(this, fh); } @@ -79,7 +82,7 @@ class CommandParamsFactory extends Handler { try { cmdDet = ValueParser.retrieveCommandDetails(ctlvCmdDet); } catch (ResultException e) { - StkLog.d(this, "Failed to procees command details"); + CatLog.d(this, "Failed to procees command details"); } } } @@ -112,7 +115,10 @@ class CommandParamsFactory extends Handler { AppInterface.CommandType cmdType = AppInterface.CommandType .fromInt(cmdDet.typeOfCommand); if (cmdType == null) { - sendCmdParams(ResultCode.CMD_TYPE_NOT_UNDERSTOOD); + // This PROACTIVE COMMAND is presently not handled. Hence set + // result code as BEYOND_TERMINAL_CAPABILITY in TR. + mCmdParams = new CommandParams(cmdDet); + sendCmdParams(ResultCode.BEYOND_TERMINAL_CAPABILITY); return; } @@ -155,10 +161,13 @@ class CommandParamsFactory extends Handler { case PLAY_TONE: cmdPending = processPlayTone(cmdDet, ctlvs); break; + case PROVIDE_LOCAL_INFORMATION: + cmdPending = processProvideLocalInfo(cmdDet, ctlvs); + break; default: // unsupported proactive commands mCmdParams = new CommandParams(cmdDet); - sendCmdParams(ResultCode.CMD_TYPE_NOT_UNDERSTOOD); + sendCmdParams(ResultCode.BEYOND_TERMINAL_CAPABILITY); return; } } catch (ResultException e) { @@ -259,7 +268,7 @@ class CommandParamsFactory extends Handler { List<ComprehensionTlv> ctlvs) throws ResultException { - StkLog.d(this, "process DisplayText"); + CatLog.d(this, "process DisplayText"); TextMessage textMsg = new TextMessage(); IconId iconId = null; @@ -319,7 +328,7 @@ class CommandParamsFactory extends Handler { private boolean processSetUpIdleModeText(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) throws ResultException { - StkLog.d(this, "process SetUpIdleModeText"); + CatLog.d(this, "process SetUpIdleModeText"); TextMessage textMsg = new TextMessage(); IconId iconId = null; @@ -362,7 +371,7 @@ class CommandParamsFactory extends Handler { private boolean processGetInkey(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) throws ResultException { - StkLog.d(this, "process GetInkey"); + CatLog.d(this, "process GetInkey"); Input input = new Input(); IconId iconId = null; @@ -380,6 +389,12 @@ class CommandParamsFactory extends Handler { iconId = ValueParser.retrieveIconId(ctlv); } + // parse duration + ctlv = searchForTag(ComprehensionTlvTag.DURATION, ctlvs); + if (ctlv != null) { + input.duration = ValueParser.retrieveDuration(ctlv); + } + input.minLen = 1; input.maxLen = 1; @@ -412,7 +427,7 @@ class CommandParamsFactory extends Handler { private boolean processGetInput(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) throws ResultException { - StkLog.d(this, "process GetInput"); + CatLog.d(this, "process GetInput"); Input input = new Input(); IconId iconId = null; @@ -476,7 +491,7 @@ class CommandParamsFactory extends Handler { private boolean processRefresh(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) { - StkLog.d(this, "process Refresh"); + CatLog.d(this, "process Refresh"); // REFRESH proactive command is rerouted by the baseband and handled by // the telephony layer. IDLE TEXT should be removed for a REFRESH command @@ -505,7 +520,7 @@ class CommandParamsFactory extends Handler { private boolean processSelectItem(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) throws ResultException { - StkLog.d(this, "process SelectItem"); + CatLog.d(this, "process SelectItem"); Menu menu = new Menu(); IconId titleIconId = null; @@ -534,7 +549,7 @@ class CommandParamsFactory extends Handler { ctlv = searchForTag(ComprehensionTlvTag.ITEM_ID, ctlvs); if (ctlv != null) { - // STK items are listed 1...n while list start at 0, need to + // CAT items are listed 1...n while list start at 0, need to // subtract one. menu.defaultItem = ValueParser.retrieveItemId(ctlv) - 1; } @@ -602,7 +617,7 @@ class CommandParamsFactory extends Handler { private boolean processEventNotify(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) throws ResultException { - StkLog.d(this, "process EventNotify"); + CatLog.d(this, "process EventNotify"); TextMessage textMsg = new TextMessage(); IconId iconId = null; @@ -645,7 +660,7 @@ class CommandParamsFactory extends Handler { private boolean processSetUpEventList(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) { - StkLog.d(this, "process SetUpEventList"); + CatLog.d(this, "process SetUpEventList"); // // ComprehensionTlv ctlv = searchForTag(ComprehensionTlvTag.EVENT_LIST, // ctlvs); @@ -670,10 +685,10 @@ class CommandParamsFactory extends Handler { * asynchronous processing is required. * @throws ResultException */ - private boolean processLaunchBrowser(CommandDetails cmdDet, + private boolean processLaunchBrowser(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) throws ResultException { - StkLog.d(this, "process LaunchBrowser"); + CatLog.d(this, "process LaunchBrowser"); TextMessage confirmMsg = new TextMessage(); IconId iconId = null; @@ -744,10 +759,10 @@ class CommandParamsFactory extends Handler { * asynchronous processing is required.t * @throws ResultException */ - private boolean processPlayTone(CommandDetails cmdDet, + private boolean processPlayTone(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) throws ResultException { - StkLog.d(this, "process PlayTone"); + CatLog.d(this, "process PlayTone"); Tone tone = null; TextMessage textMsg = new TextMessage(); @@ -810,9 +825,9 @@ class CommandParamsFactory extends Handler { * @return true if the command is processing is pending and additional * asynchronous processing is required. */ - private boolean processSetupCall(CommandDetails cmdDet, + private boolean processSetupCall(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) throws ResultException { - StkLog.d(this, "process SetupCall"); + CatLog.d(this, "process SetupCall"); Iterator<ComprehensionTlv> iter = ctlvs.iterator(); ComprehensionTlv ctlv = null; @@ -863,4 +878,20 @@ class CommandParamsFactory extends Handler { } return false; } + + private boolean processProvideLocalInfo(CommandDetails cmdDet, List<ComprehensionTlv> ctlvs) + throws ResultException { + CatLog.d(this, "process ProvideLocalInfo"); + switch (cmdDet.commandQualifier) { + case LANGUAGE_SETTING: + CatLog.d(this, "PLI [LANGUAGE_SETTING]"); + mCmdParams = new CommandParams(cmdDet); + break; + default: + CatLog.d(this, "PLI[" + cmdDet.commandQualifier + "] Command Not Supported"); + mCmdParams = new CommandParams(cmdDet); + throw new ResultException(ResultCode.BEYOND_TERMINAL_CAPABILITY); + } + return false; + } } diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/ComprehensionTlv.java b/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java index ffde6a3..99f662d 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/ComprehensionTlv.java +++ b/telephony/java/com/android/internal/telephony/cat/ComprehensionTlv.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import java.util.ArrayList; import java.util.List; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/Duration.java b/telephony/java/com/android/internal/telephony/cat/Duration.java index 9d8cc97..e8cd404 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/Duration.java +++ b/telephony/java/com/android/internal/telephony/cat/Duration.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.os.Parcel; import android.os.Parcelable; /** - * Class for representing "Duration" object for STK. + * Class for representing "Duration" object for CAT. * * {@hide} */ diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/FontSize.java b/telephony/java/com/android/internal/telephony/cat/FontSize.java index bd4f49f..02c7ea0 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/FontSize.java +++ b/telephony/java/com/android/internal/telephony/cat/FontSize.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/IconLoader.java b/telephony/java/com/android/internal/telephony/cat/IconLoader.java index fc02d2a..2fa1811 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/IconLoader.java +++ b/telephony/java/com/android/internal/telephony/cat/IconLoader.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; -import com.android.internal.telephony.gsm.SIMFileHandler; +import com.android.internal.telephony.IccFileHandler; import android.graphics.Bitmap; import android.graphics.Color; @@ -40,7 +40,7 @@ class IconLoader extends Handler { private ImageDescriptor mId = null; private Bitmap mCurrentIcon = null; private int mRecordNumber; - private SIMFileHandler mSimFH = null; + private IccFileHandler mSimFH = null; private Message mEndMsg = null; private byte[] mIconData = null; // multi icons state members @@ -68,19 +68,19 @@ class IconLoader extends Handler { private static final int CLUT_ENTRY_SIZE = 3; - private IconLoader(Looper looper , SIMFileHandler fh) { + private IconLoader(Looper looper , IccFileHandler fh) { super(looper); mSimFH = fh; mIconsCache = new HashMap<Integer, Bitmap>(50); } - static IconLoader getInstance(Handler caller, SIMFileHandler fh) { + static IconLoader getInstance(Handler caller, IccFileHandler fh) { if (sLoader != null) { return sLoader; } if (fh != null) { - HandlerThread thread = new HandlerThread("Stk Icon Loader"); + HandlerThread thread = new HandlerThread("Cat Icon Loader"); thread.start(); return new IconLoader(thread.getLooper(), fh); } @@ -163,7 +163,7 @@ class IconLoader extends Handler { break; } } catch (Exception e) { - StkLog.d(this, "Icon load failed"); + CatLog.d(this, "Icon load failed"); // post null icon back to the caller. postIcon(); } @@ -254,7 +254,7 @@ class IconLoader extends Handler { } if (pixelIndex != numOfPixels) { - StkLog.d("IconLoader", "parseToBnW; size error"); + CatLog.d("IconLoader", "parseToBnW; size error"); } return Bitmap.createBitmap(pixels, width, height, Bitmap.Config.ARGB_8888); } diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/ImageDescriptor.java b/telephony/java/com/android/internal/telephony/cat/ImageDescriptor.java index 880b9e5..711d977 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/ImageDescriptor.java +++ b/telephony/java/com/android/internal/telephony/cat/ImageDescriptor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** * {@hide} @@ -69,7 +69,7 @@ public class ImageDescriptor { d.length = ((rawData[valueIndex++] & 0xff) << 8 | (rawData[valueIndex++] & 0xff)); } catch (IndexOutOfBoundsException e) { - StkLog.d("ImageDescripter", "parse; failed parsing image descriptor"); + CatLog.d("ImageDescripter", "parse; failed parsing image descriptor"); d = null; } return d; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/Input.java b/telephony/java/com/android/internal/telephony/cat/Input.java index 19f724b..13a5ad4 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/Input.java +++ b/telephony/java/com/android/internal/telephony/cat/Input.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.graphics.Bitmap; import android.os.Parcel; import android.os.Parcelable; /** - * Container class for STK GET INPUT, GET IN KEY commands parameters. + * Container class for CAT GET INPUT, GET IN KEY commands parameters. * */ public class Input implements Parcelable { @@ -36,6 +36,7 @@ public class Input implements Parcelable { public boolean echo; public boolean yesNo; public boolean helpAvailable; + public Duration duration; Input() { text = ""; @@ -49,6 +50,7 @@ public class Input implements Parcelable { echo = false; yesNo = false; helpAvailable = false; + duration = null; } private Input(Parcel in) { @@ -63,6 +65,7 @@ public class Input implements Parcelable { echo = in.readInt() == 1 ? true : false; yesNo = in.readInt() == 1 ? true : false; helpAvailable = in.readInt() == 1 ? true : false; + duration = in.readParcelable(null); } public int describeContents() { @@ -81,6 +84,7 @@ public class Input implements Parcelable { dest.writeInt(echo ? 1 : 0); dest.writeInt(yesNo ? 1 : 0); dest.writeInt(helpAvailable ? 1 : 0); + dest.writeParcelable(duration, 0); } public static final Parcelable.Creator<Input> CREATOR = new Parcelable.Creator<Input>() { diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/Item.java b/telephony/java/com/android/internal/telephony/cat/Item.java index b2f338c..d4702bb 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/Item.java +++ b/telephony/java/com/android/internal/telephony/cat/Item.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.graphics.Bitmap; import android.os.Parcel; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/LaunchBrowserMode.java b/telephony/java/com/android/internal/telephony/cat/LaunchBrowserMode.java index 302273c..af043d1 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/LaunchBrowserMode.java +++ b/telephony/java/com/android/internal/telephony/cat/LaunchBrowserMode.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/Menu.java b/telephony/java/com/android/internal/telephony/cat/Menu.java index 331f69d..7bbae01 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/Menu.java +++ b/telephony/java/com/android/internal/telephony/cat/Menu.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.graphics.Bitmap; import android.os.Parcel; @@ -24,7 +24,7 @@ import java.util.ArrayList; import java.util.List; /** - * Container class for STK menu (SET UP MENU, SELECT ITEM) parameters. + * Container class for CAT menu (SET UP MENU, SELECT ITEM) parameters. * */ public class Menu implements Parcelable { diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/PresentationType.java b/telephony/java/com/android/internal/telephony/cat/PresentationType.java index 71bdcdc..7c8cd8c 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/PresentationType.java +++ b/telephony/java/com/android/internal/telephony/cat/PresentationType.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/ResponseData.java b/telephony/java/com/android/internal/telephony/cat/ResponseData.java index afd1bba..677d66b 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/ResponseData.java +++ b/telephony/java/com/android/internal/telephony/cat/ResponseData.java @@ -14,7 +14,7 @@ * the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import com.android.internal.telephony.EncodeException; import com.android.internal.telephony.GsmAlphabet; @@ -28,6 +28,16 @@ abstract class ResponseData { * the ByteArrayOutputStream object. */ public abstract void format(ByteArrayOutputStream buf); + + public static void writeLength(ByteArrayOutputStream buf, int length) { + // As per ETSI 102.220 Sec7.1.2, if the total length is greater + // than 0x7F, it should be coded in two bytes and the first byte + // should be 0x81. + if (length > 0x7F) { + buf.write(0x81); + } + buf.write(length); + } } class SelectItemResponseData extends ResponseData { @@ -120,7 +130,7 @@ class GetInkeyInputResponseData extends ResponseData { } // length - one more for data coding scheme. - buf.write(data.length + 1); + writeLength(buf, data.length + 1); // data coding scheme if (mIsUcs2) { diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/ResultCode.java b/telephony/java/com/android/internal/telephony/cat/ResultCode.java index b96a524..8544175 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/ResultCode.java +++ b/telephony/java/com/android/internal/telephony/cat/ResultCode.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/ResultException.java b/telephony/java/com/android/internal/telephony/cat/ResultException.java index 2eb16c9..1c2cb63 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/ResultException.java +++ b/telephony/java/com/android/internal/telephony/cat/ResultException.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** @@ -22,7 +22,7 @@ package com.android.internal.telephony.gsm.stk; * * {@hide} */ -public class ResultException extends StkException { +public class ResultException extends CatException { private ResultCode mResult; private int mAdditionalInfo; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/RilMessageDecoder.java b/telephony/java/com/android/internal/telephony/cat/RilMessageDecoder.java index a82177c..a197c9a 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/RilMessageDecoder.java +++ b/telephony/java/com/android/internal/telephony/cat/RilMessageDecoder.java @@ -14,9 +14,9 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; -import com.android.internal.telephony.gsm.SIMFileHandler; +import com.android.internal.telephony.IccFileHandler; import com.android.internal.telephony.IccUtils; import android.os.Handler; @@ -26,7 +26,7 @@ import android.os.Message; /** * Class used for queuing raw ril messages, decoding them into CommanParams - * objects and sending the result back to the STK Service. + * objects and sending the result back to the CAT Service. */ class RilMessageDecoder extends HierarchicalStateMachine { @@ -51,7 +51,7 @@ class RilMessageDecoder extends HierarchicalStateMachine { * @param fh * @return RilMesssageDecoder */ - public static synchronized RilMessageDecoder getInstance(Handler caller, SIMFileHandler fh) { + public static synchronized RilMessageDecoder getInstance(Handler caller, IccFileHandler fh) { if (sInstance == null) { sInstance = new RilMessageDecoder(caller, fh); sInstance.start(); @@ -85,12 +85,12 @@ class RilMessageDecoder extends HierarchicalStateMachine { } private void sendCmdForExecution(RilMessage rilMsg) { - Message msg = mCaller.obtainMessage(StkService.MSG_ID_RIL_MSG_DECODED, + Message msg = mCaller.obtainMessage(CatService.MSG_ID_RIL_MSG_DECODED, new RilMessage(rilMsg)); msg.sendToTarget(); } - private RilMessageDecoder(Handler caller, SIMFileHandler fh) { + private RilMessageDecoder(Handler caller, IccFileHandler fh) { super("RilMessageDecoder"); addState(mStateStart); @@ -108,7 +108,7 @@ class RilMessageDecoder extends HierarchicalStateMachine { transitionTo(mStateCmdParamsReady); } } else { - StkLog.d(this, "StateStart unexpected expecting START=" + + CatLog.d(this, "StateStart unexpected expecting START=" + CMD_START + " got " + msg.what); } return true; @@ -123,7 +123,7 @@ class RilMessageDecoder extends HierarchicalStateMachine { sendCmdForExecution(mCurrentRilMessage); transitionTo(mStateStart); } else { - StkLog.d(this, "StateCmdParamsReady expecting CMD_PARAMS_READY=" + CatLog.d(this, "StateCmdParamsReady expecting CMD_PARAMS_READY=" + CMD_PARAMS_READY + " got " + msg.what); deferMessage(msg); } @@ -136,21 +136,21 @@ class RilMessageDecoder extends HierarchicalStateMachine { mCurrentRilMessage = rilMsg; switch(rilMsg.mId) { - case StkService.MSG_ID_SESSION_END: - case StkService.MSG_ID_CALL_SETUP: + case CatService.MSG_ID_SESSION_END: + case CatService.MSG_ID_CALL_SETUP: mCurrentRilMessage.mResCode = ResultCode.OK; sendCmdForExecution(mCurrentRilMessage); decodingStarted = false; break; - case StkService.MSG_ID_PROACTIVE_COMMAND: - case StkService.MSG_ID_EVENT_NOTIFY: - case StkService.MSG_ID_REFRESH: + case CatService.MSG_ID_PROACTIVE_COMMAND: + case CatService.MSG_ID_EVENT_NOTIFY: + case CatService.MSG_ID_REFRESH: byte[] rawData = null; try { rawData = IccUtils.hexStringToBytes((String) rilMsg.mData); } catch (Exception e) { // zombie messages are dropped - StkLog.d(this, "decodeMessageParams dropping zombie messages"); + CatLog.d(this, "decodeMessageParams dropping zombie messages"); decodingStarted = false; break; } diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/TextAlignment.java b/telephony/java/com/android/internal/telephony/cat/TextAlignment.java index c5dd50e..7fb58a5 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/TextAlignment.java +++ b/telephony/java/com/android/internal/telephony/cat/TextAlignment.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/TextAttribute.java b/telephony/java/com/android/internal/telephony/cat/TextAttribute.java index ace4300..0dea640 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/TextAttribute.java +++ b/telephony/java/com/android/internal/telephony/cat/TextAttribute.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/TextColor.java b/telephony/java/com/android/internal/telephony/cat/TextColor.java index 126fc62..6447e74 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/TextColor.java +++ b/telephony/java/com/android/internal/telephony/cat/TextColor.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; /** diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/TextMessage.java b/telephony/java/com/android/internal/telephony/cat/TextMessage.java index 3b6a09a..5ffd076 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/TextMessage.java +++ b/telephony/java/com/android/internal/telephony/cat/TextMessage.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.graphics.Bitmap; import android.os.Parcel; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/Tone.java b/telephony/java/com/android/internal/telephony/cat/Tone.java index b64e777..27b4489 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/Tone.java +++ b/telephony/java/com/android/internal/telephony/cat/Tone.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.os.Parcel; import android.os.Parcelable; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/ToneSettings.java b/telephony/java/com/android/internal/telephony/cat/ToneSettings.java index 90cc6c1..6375afb 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/ToneSettings.java +++ b/telephony/java/com/android/internal/telephony/cat/ToneSettings.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import android.os.Parcel; import android.os.Parcelable; diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/ValueParser.java b/telephony/java/com/android/internal/telephony/cat/ValueParser.java index 09a860e..34e4811 100644 --- a/telephony/java/com/android/internal/telephony/gsm/stk/ValueParser.java +++ b/telephony/java/com/android/internal/telephony/cat/ValueParser.java @@ -14,11 +14,11 @@ * the License. */ -package com.android.internal.telephony.gsm.stk; +package com.android.internal.telephony.cat; import com.android.internal.telephony.GsmAlphabet; import com.android.internal.telephony.IccUtils; -import com.android.internal.telephony.gsm.stk.Duration.TimeUnit; +import com.android.internal.telephony.cat.Duration.TimeUnit; import java.io.UnsupportedEncodingException; import java.util.ArrayList; @@ -182,7 +182,7 @@ abstract class ValueParser { */ static ItemsIconId retrieveItemsIconId(ComprehensionTlv ctlv) throws ResultException { - StkLog.d("ValueParser", "retrieveItemsIconId:"); + CatLog.d("ValueParser", "retrieveItemsIconId:"); ItemsIconId id = new ItemsIconId(); byte[] rawValue = ctlv.getRawValue(); diff --git a/telephony/java/com/android/internal/telephony/cat/package.html b/telephony/java/com/android/internal/telephony/cat/package.html new file mode 100644 index 0000000..5b6bfc6 --- /dev/null +++ b/telephony/java/com/android/internal/telephony/cat/package.html @@ -0,0 +1,5 @@ +<HTML> +<BODY> +Provides classes for ICC Toolkit Service (CAT). +</BODY> +</HTML> diff --git a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java index 0c591e4..27eae22 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java +++ b/telephony/java/com/android/internal/telephony/cdma/CDMAPhone.java @@ -42,6 +42,7 @@ import android.telephony.SignalStrength; import android.text.TextUtils; import android.util.Log; +import com.android.internal.telephony.cat.CatService; import com.android.internal.telephony.Call; import com.android.internal.telephony.CallStateException; import com.android.internal.telephony.CommandException; @@ -109,7 +110,7 @@ public class CDMAPhone extends PhoneBase { PhoneSubInfo mSubInfo; EriManager mEriManager; WakeLock mWakeLock; - + CatService mCcatService; // mNvLoadedRegistrants are informed after the EVENT_NV_READY private RegistrantList mNvLoadedRegistrants = new RegistrantList(); @@ -161,6 +162,8 @@ public class CDMAPhone extends PhoneBase { mRuimSmsInterfaceManager = new RuimSmsInterfaceManager(this); mSubInfo = new PhoneSubInfo(this); mEriManager = new EriManager(this, context, EriManager.ERI_FROM_XML); + mCcatService = CatService.getInstance(mCM, mRuimRecords, mContext, + mIccFileHandler, mRuimCard); mCM.registerForAvailable(this, EVENT_RADIO_AVAILABLE, null); mRuimRecords.registerForRecordsLoaded(this, EVENT_RUIM_RECORDS_LOADED, null); @@ -236,6 +239,7 @@ public class CDMAPhone extends PhoneBase { mRuimSmsInterfaceManager.dispose(); mSubInfo.dispose(); mEriManager.dispose(); + mCcatService.dispose(); } } @@ -251,6 +255,7 @@ public class CDMAPhone extends PhoneBase { this.mCT = null; this.mSST = null; this.mEriManager = null; + this.mCcatService = null; } protected void finalize() { diff --git a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java index c7b1e5c..69a7a57 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java +++ b/telephony/java/com/android/internal/telephony/gsm/GSMPhone.java @@ -49,6 +49,7 @@ import static com.android.internal.telephony.CommandsInterface.CF_REASON_UNCONDI import static com.android.internal.telephony.CommandsInterface.SERVICE_CLASS_VOICE; import static com.android.internal.telephony.TelephonyProperties.PROPERTY_BASEBAND_VERSION; +import com.android.internal.telephony.cat.CatService; import com.android.internal.telephony.Call; import com.android.internal.telephony.CallForwardInfo; import com.android.internal.telephony.CallStateException; @@ -68,7 +69,6 @@ import com.android.internal.telephony.PhoneProxy; import com.android.internal.telephony.PhoneSubInfo; import com.android.internal.telephony.TelephonyProperties; import com.android.internal.telephony.UUSInfo; -import com.android.internal.telephony.gsm.stk.StkService; import com.android.internal.telephony.test.SimulatedRadioControl; import com.android.internal.telephony.IccVmNotSupportedException; @@ -102,7 +102,7 @@ public class GSMPhone extends PhoneBase { GsmSMSDispatcher mSMS; SIMRecords mSIMRecords; SimCard mSimCard; - StkService mStkService; + CatService mStkService; ArrayList <GsmMmiCode> mPendingMMIs = new ArrayList<GsmMmiCode>(); SimPhoneBookInterfaceManager mSimPhoneBookIntManager; SimSmsInterfaceManager mSimSmsIntManager; @@ -154,7 +154,7 @@ public class GSMPhone extends PhoneBase { mSimSmsIntManager = new SimSmsInterfaceManager(this); mSubInfo = new PhoneSubInfo(this); } - mStkService = StkService.getInstance(mCM, mSIMRecords, mContext, + mStkService = CatService.getInstance(mCM, mSIMRecords, mContext, (SIMFileHandler)mIccFileHandler, mSimCard); mCM.registerForAvailable(this, EVENT_RADIO_AVAILABLE, null); @@ -972,7 +972,9 @@ public class GSMPhone extends PhoneBase { } public void getCallWaiting(Message onComplete) { - mCM.queryCallWaiting(CommandsInterface.SERVICE_CLASS_VOICE, onComplete); + //As per 3GPP TS 24.083, section 1.6 UE doesn't need to send service + //class parameter in call waiting interrogation to network + mCM.queryCallWaiting(CommandsInterface.SERVICE_CLASS_NONE, onComplete); } public void setCallWaiting(boolean enable, Message onComplete) { diff --git a/telephony/java/com/android/internal/telephony/gsm/stk/package.html b/telephony/java/com/android/internal/telephony/gsm/stk/package.html deleted file mode 100644 index c285b57..0000000 --- a/telephony/java/com/android/internal/telephony/gsm/stk/package.html +++ /dev/null @@ -1,5 +0,0 @@ -<HTML> -<BODY> -Provides classes for SIM Toolkit Service. -</BODY> -</HTML> diff --git a/tools/aapt/Android.mk b/tools/aapt/Android.mk index b339a2c..094b7db 100644 --- a/tools/aapt/Android.mk +++ b/tools/aapt/Android.mk @@ -41,7 +41,7 @@ LOCAL_STATIC_LIBRARIES := \ libpng ifeq ($(HOST_OS),linux) -LOCAL_LDLIBS += -lrt +LOCAL_LDLIBS += -lrt -lpthread endif # Statically link libz for MinGW (Win SDK under Linux), diff --git a/tools/localize/Android.mk b/tools/localize/Android.mk index ab79f8d..f284e86 100644 --- a/tools/localize/Android.mk +++ b/tools/localize/Android.mk @@ -34,7 +34,7 @@ LOCAL_STATIC_LIBRARIES := \ libcutils ifeq ($(HOST_OS),linux) -LOCAL_LDLIBS += -lrt +LOCAL_LDLIBS += -lrt -lpthread endif |