summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormaxwen <max.weninger@gmail.com>2013-06-18 16:06:22 +0200
committerEthan Chen <intervigil@gmail.com>2013-09-06 17:28:23 +0000
commit0d93107fc3228382a892fa6ca2659e027888f27f (patch)
treee81cf445ce00000369e2f1d16cde23a00dcde130
parentda0db0bd997c327b1279ba03cf1cea8cfd501044 (diff)
downloadframeworks_opt_telephony-0d93107fc3228382a892fa6ca2659e027888f27f.zip
frameworks_opt_telephony-0d93107fc3228382a892fa6ca2659e027888f27f.tar.gz
frameworks_opt_telephony-0d93107fc3228382a892fa6ca2659e027888f27f.tar.bz2
HTCTegra3RIL: Add custom RIL for correct STK handling (1/2)
Change-Id: Ia12c85f43b5be0fe4e1cd3c3511490fd5cebe3af
-rw-r--r--src/java/com/android/internal/telephony/HTCTegra3RIL.java94
1 files changed, 94 insertions, 0 deletions
diff --git a/src/java/com/android/internal/telephony/HTCTegra3RIL.java b/src/java/com/android/internal/telephony/HTCTegra3RIL.java
new file mode 100644
index 0000000..fe68c05
--- /dev/null
+++ b/src/java/com/android/internal/telephony/HTCTegra3RIL.java
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2012 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.telephony;
+
+import static com.android.internal.telephony.RILConstants.*;
+
+import android.content.Context;
+import android.os.AsyncResult;
+import android.os.HandlerThread;
+import android.os.Looper;
+import android.os.Message;
+import android.os.Parcel;
+import android.os.Registrant;
+import android.os.Handler;
+import android.util.Log;
+
+/**
+ * Generic HTC Tegra3 RIL class
+ *
+ * {@hide}
+ */
+public class HTCTegra3RIL extends RIL implements CommandsInterface {
+ private static final int RIL_UNSOL_CUSTOMIZE_SIM_INFO = 1550;
+ private Object mCatProCmdBuffer;
+ public HTCTegra3RIL(Context context, int networkMode, int cdmaSubscription) {
+ super(context, networkMode, cdmaSubscription);
+ }
+
+ @Override
+ protected void
+ processUnsolicited (Parcel p) {
+ Object ret;
+ int dataPosition = p.dataPosition(); // save off position within the Parcel
+ int response = p.readInt();
+
+ switch(response) {
+ case RIL_UNSOL_CUSTOMIZE_SIM_INFO: ret = responseString(p); break;
+ case RIL_UNSOL_STK_PROACTIVE_COMMAND: ret = responseString(p); break;
+
+ default:
+ // Rewind the Parcel
+ p.setDataPosition(dataPosition);
+
+ // Forward responses that we are not overriding to the super class
+ super.processUnsolicited(p);
+ return;
+ }
+
+ switch(response) {
+ case RIL_UNSOL_CUSTOMIZE_SIM_INFO:
+ if (RILJ_LOGD) unsljLogRet(response, ret);
+ break;
+ case RIL_UNSOL_STK_PROACTIVE_COMMAND:
+ if (RILJ_LOGD) unsljLogRet(response, ret);
+
+ if (mCatProCmdRegistrant != null) {
+ mCatProCmdRegistrant.notifyRegistrant(
+ new AsyncResult (null, ret, null));
+ } else {
+ // The RIL will send a CAT proactive command before the
+ // registrant is registered. Buffer it to make sure it
+ // does not get ignored (and breaks CatService).
+ // see also SamsungExynos3RIL
+ mCatProCmdBuffer = ret;
+ }
+ break;
+ }
+ }
+
+ @Override
+ public void setOnCatProactiveCmd(Handler h, int what, Object obj) {
+ mCatProCmdRegistrant = new Registrant (h, what, obj);
+ if (mCatProCmdBuffer != null) {
+ mCatProCmdRegistrant.notifyRegistrant(
+ new AsyncResult (null, mCatProCmdBuffer, null));
+ mCatProCmdBuffer = null;
+ }
+ }
+
+}