aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNew Author Steven Liu <stevenliu@motorola.com>2014-09-11 10:27:55 -0500
committerEtan Cohen <etancohen@google.com>2014-09-30 13:41:54 -0700
commit110eda521d7a40ffcb09f31fd02d3d65a10cdcc3 (patch)
treec4c45082f46fea135993a0f667853bededa26f2e
parent1321ae8e44e3339ace5dabc4daf9512347c0fcc4 (diff)
downloadandroid_frameworks_opt_telephony-110eda521d7a40ffcb09f31fd02d3d65a10cdcc3.tar.gz
android_frameworks_opt_telephony-110eda521d7a40ffcb09f31fd02d3d65a10cdcc3.tar.bz2
android_frameworks_opt_telephony-110eda521d7a40ffcb09f31fd02d3d65a10cdcc3.zip
redirect RIL_UNSOL_OEM_HOOK_RAW to system app
add notifyOemHookRawEvent Bug: 17298769 Change-Id: Iaea054d3cc2925eea1e11f8871faabc7bc9dfb2d
-rw-r--r--src/java/com/android/internal/telephony/CommandsInterface.java5
-rw-r--r--src/java/com/android/internal/telephony/DefaultPhoneNotifier.java9
-rw-r--r--src/java/com/android/internal/telephony/PhoneBase.java17
-rw-r--r--src/java/com/android/internal/telephony/PhoneNotifier.java2
4 files changed, 32 insertions, 1 deletions
diff --git a/src/java/com/android/internal/telephony/CommandsInterface.java b/src/java/com/android/internal/telephony/CommandsInterface.java
index cd6124937..6b52ce94e 100644
--- a/src/java/com/android/internal/telephony/CommandsInterface.java
+++ b/src/java/com/android/internal/telephony/CommandsInterface.java
@@ -1388,6 +1388,11 @@ public interface CommandsInterface {
void invokeOemRilRequestStrings(String[] strings, Message response);
+ /**
+ * Fires when RIL_UNSOL_OEM_HOOK_RAW is received from the RIL.
+ */
+ void setOnUnsolOemHookRaw(Handler h, int what, Object obj);
+ void unSetOnUnsolOemHookRaw(Handler h);
/**
* Send TERMINAL RESPONSE to the SIM, after processing a proactive command
diff --git a/src/java/com/android/internal/telephony/DefaultPhoneNotifier.java b/src/java/com/android/internal/telephony/DefaultPhoneNotifier.java
index 83ecfa7aa..9daa5877c 100644
--- a/src/java/com/android/internal/telephony/DefaultPhoneNotifier.java
+++ b/src/java/com/android/internal/telephony/DefaultPhoneNotifier.java
@@ -299,6 +299,15 @@ public class DefaultPhoneNotifier implements PhoneNotifier {
}
}
+ @Override
+ public void notifyOemHookRawEventForSubscriber(long subId, byte[] rawData) {
+ try {
+ mRegistry.notifyOemHookRawEventForSubscriber(subId, rawData);
+ } catch (RemoteException ex) {
+ // system process is dead
+ }
+ }
+
/**
* Convert the {@link PhoneConstants.State} enum into the TelephonyManager.CALL_STATE_*
* constants for the public API.
diff --git a/src/java/com/android/internal/telephony/PhoneBase.java b/src/java/com/android/internal/telephony/PhoneBase.java
index b6d08401d..47e2f466f 100644
--- a/src/java/com/android/internal/telephony/PhoneBase.java
+++ b/src/java/com/android/internal/telephony/PhoneBase.java
@@ -152,7 +152,8 @@ public abstract class PhoneBase extends Handler implements Phone {
protected static final int EVENT_SRVCC_STATE_CHANGED = 31;
protected static final int EVENT_INITIATE_SILENT_REDIAL = 32;
protected static final int EVENT_RADIO_NOT_AVAILABLE = 33;
- protected static final int EVENT_LAST = EVENT_RADIO_NOT_AVAILABLE;
+ protected static final int EVENT_UNSOL_OEM_HOOK_RAW = 34;
+ protected static final int EVENT_LAST = EVENT_UNSOL_OEM_HOOK_RAW;
// Key used to read/write current CLIR setting
public static final String CLIR_KEY = "clir_key";
@@ -403,6 +404,7 @@ public abstract class PhoneBase extends Handler implements Phone {
mContext.registerReceiver(mImsIntentReceiver, filter);
mCi.registerForSrvccStateChanged(this, EVENT_SRVCC_STATE_CHANGED, null);
+ mCi.setOnUnsolOemHookRaw(this, EVENT_UNSOL_OEM_HOOK_RAW, null);
}
@Override
@@ -418,6 +420,7 @@ public abstract class PhoneBase extends Handler implements Phone {
mSmsUsageMonitor.dispose();
mUiccController.unregisterForIccChanged(this);
mCi.unregisterForSrvccStateChanged(this);
+ mCi.unSetOnUnsolOemHookRaw(this);
if (mTelephonyTester != null) {
mTelephonyTester.dispose();
@@ -520,6 +523,18 @@ public abstract class PhoneBase extends Handler implements Phone {
}
break;
+ case EVENT_UNSOL_OEM_HOOK_RAW:
+ ar = (AsyncResult)msg.obj;
+ if (ar.exception == null) {
+ byte[] data = (byte[])ar.result;
+ Rlog.d(LOG_TAG, "EVENT_UNSOL_OEM_HOOK_RAW data="
+ + IccUtils.bytesToHexString(data));
+ mNotifier.notifyOemHookRawEventForSubscriber(getSubId(), data);
+ } else {
+ Rlog.e(LOG_TAG, "OEM hook raw exception: " + ar.exception);
+ }
+ break;
+
default:
throw new RuntimeException("unexpected event not handled");
}
diff --git a/src/java/com/android/internal/telephony/PhoneNotifier.java b/src/java/com/android/internal/telephony/PhoneNotifier.java
index da3e30555..9d7875ebc 100644
--- a/src/java/com/android/internal/telephony/PhoneNotifier.java
+++ b/src/java/com/android/internal/telephony/PhoneNotifier.java
@@ -61,4 +61,6 @@ public interface PhoneNotifier {
public void notifyDataConnectionRealTimeInfo(Phone sender, DataConnectionRealTimeInfo dcRtInfo);
public void notifyVoLteServiceStateChanged(Phone sender, VoLteServiceState lteState);
+
+ public void notifyOemHookRawEventForSubscriber(long subId, byte[] rawData);
}