diff options
author | Wink Saville <wink@google.com> | 2014-10-17 15:03:58 -0700 |
---|---|---|
committer | Wink Saville <wink@google.com> | 2014-10-20 10:31:05 -0700 |
commit | 2af2d57d578e0c3a2740628e7c6336b19961cc49 (patch) | |
tree | f46a7618ed54c2bf3813c7555c37fddc31675721 | |
parent | 2f831575253e4f5a9e329e857aad2cd816f47524 (diff) | |
download | frameworks_base-2af2d57d578e0c3a2740628e7c6336b19961cc49.zip frameworks_base-2af2d57d578e0c3a2740628e7c6336b19961cc49.tar.gz frameworks_base-2af2d57d578e0c3a2740628e7c6336b19961cc49.tar.bz2 |
Radio Capability Support.
New design of capability switch for L.
Add new RIL requests:
RIL_REQUEST_GET_RADIO_CAPABILITY
RIL_REQUEST_SET_RADIO_CAPABILITY
RIL_UNSOL_RADIO_CAPABILITY
These commands allow the framework to communicate what the Radio
Capabilities for each logical modem has or should be using.
It can support 2/3/4G switch and has flexible architecture to support
future technology.
Change-Id: Iedf7f608d2ba3c06a883500f2d85abb98e69d9c1
6 files changed, 198 insertions, 2 deletions
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index cae5f41..15b56c3 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -300,6 +300,9 @@ <protected-broadcast android:name="android.intent.action.ACTION_SUBINFO_CONTENT_CHANGE" /> <protected-broadcast android:name="android.intent.action.ACTION_SUBINFO_RECORD_UPDATED" /> + <protected-broadcast android:name="android.intent.action.ACTION_SET_RADIO_CAPABILITY_DONE" /> + <protected-broadcast android:name="android.intent.action.ACTION_SET_RADIO_CAPABILITY_FAILED" /> + <!-- ====================================== --> <!-- Permissions for things that cost money --> <!-- ====================================== --> diff --git a/telephony/java/android/telephony/RadioAccessFamily.aidl b/telephony/java/android/telephony/RadioAccessFamily.aidl new file mode 100644 index 0000000..f42e134 --- /dev/null +++ b/telephony/java/android/telephony/RadioAccessFamily.aidl @@ -0,0 +1,19 @@ +/* +* Copyright (C) 2014 The Android Open Source 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 android.telephony; + +parcelable RadioAccessFamily;
\ No newline at end of file diff --git a/telephony/java/android/telephony/RadioAccessFamily.java b/telephony/java/android/telephony/RadioAccessFamily.java new file mode 100644 index 0000000..dd4c45d --- /dev/null +++ b/telephony/java/android/telephony/RadioAccessFamily.java @@ -0,0 +1,135 @@ +/* +* Copyright (C) 2014 The Android Open Source 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 android.telephony; + +import android.os.Parcel; +import android.os.Parcelable; + +/** + * Object to indicate the phone radio type and access technology. + * + * @hide + */ +public class RadioAccessFamily implements Parcelable { + + // Radio Access Family + public static final int RAF_UNKNOWN = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN); + public static final int RAF_GPRS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GPRS); + public static final int RAF_EDGE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EDGE); + public static final int RAF_UMTS = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_UMTS); + public static final int RAF_IS95A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95A); + public static final int RAF_IS95B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_IS95B); + public static final int RAF_1xRTT = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_1xRTT); + public static final int RAF_EVDO_0 = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_0); + public static final int RAF_EVDO_A = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_A); + public static final int RAF_HSDPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSDPA); + public static final int RAF_HSUPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSUPA); + public static final int RAF_HSPA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPA); + public static final int RAF_EVDO_B = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EVDO_B); + public static final int RAF_EHRPD = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_EHRPD); + public static final int RAF_LTE = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_LTE); + public static final int RAF_HSPAP = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_HSPAP); + public static final int RAF_GSM = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM); + public static final int RAF_TD_SCDMA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA); + + /* Phone ID of phone */ + private int mPhoneId; + + /* Radio Access Family */ + private int mRadioAccessFamily; + + /** + * Constructor. + * + * @param phoneId the phone ID + * @param radioAccessFamily the phone radio access family defined + * in RadioAccessFamily. It's a bit mask value to represent + * the support type. + */ + public RadioAccessFamily(int phoneId, int radioAccessFamily) { + mPhoneId = phoneId; + mRadioAccessFamily = radioAccessFamily; + } + + /** + * Get phone ID. + * + * @return phone ID + */ + public int getPhoneId() { + return mPhoneId; + } + + /** + * get radio access family. + * + * @return radio access family + */ + public int getRadioAccessFamily() { + return mRadioAccessFamily; + } + + @Override + public String toString() { + String ret = "{ mPhoneId = " + mPhoneId + + ", mRadioAccessFamily = " + mRadioAccessFamily + + "}"; + return ret; + } + + /** + * Implement the Parcelable interface. + * + * @return describe content + */ + @Override + public int describeContents() { + return 0; + } + + /** + * Implement the Parcelable interface. + * + * @param outParcel The Parcel in which the object should be written. + * @param flags Additional flags about how the object should be written. + */ + public void writeToParcel(Parcel outParcel, int flags) { + outParcel.writeInt(mPhoneId); + outParcel.writeInt(mRadioAccessFamily); + } + + /** + * Implement the Parcelable interface. + */ + public static final Creator<RadioAccessFamily> CREATOR = + new Creator<RadioAccessFamily>() { + + @Override + public RadioAccessFamily createFromParcel(Parcel in) { + int phoneId = in.readInt(); + int radioAccessFamily = in.readInt(); + + return new RadioAccessFamily(phoneId, radioAccessFamily); + } + + @Override + public RadioAccessFamily[] newArray(int size) { + return new RadioAccessFamily[size]; + } + }; +} + diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index b5e6703..58807b2 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -21,6 +21,7 @@ import android.os.Bundle; import android.telephony.CellInfo; import android.telephony.IccOpenLogicalChannelResponse; import android.telephony.NeighboringCellInfo; +import android.telephony.RadioAccessFamily; import java.util.List; @@ -813,4 +814,21 @@ interface ITelephony { * Shutdown Mobile Radios */ void shutdownMobileRadios(); + + /** + * Set phone radio type and access technology. + * + * @param rafs an RadioAccessFamily array to indicate all phone's + * new radio access family. The length of RadioAccessFamily + * must equ]]al to phone count. + */ + void setRadioCapability(in RadioAccessFamily[] rafs); + + /** + * Get phone radio type and access technology. + * + * @param phoneId which phone you want to get + * @return phone radio type and access technology + */ + int getRadioAccessFamily(in int phoneId); } diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java index 4aaf99b..d093a29 100644 --- a/telephony/java/com/android/internal/telephony/RILConstants.java +++ b/telephony/java/com/android/internal/telephony/RILConstants.java @@ -291,8 +291,8 @@ cat include/telephony/ril.h | \ int RIL_REQUEST_SET_DC_RT_INFO_RATE = 127; int RIL_REQUEST_SET_DATA_PROFILE = 128; int RIL_REQUEST_SHUTDOWN = 129; - int RIL_REQUEST_GET_3G_CAPABILITY = 130; - int RIL_REQUEST_SET_3G_CAPABILITY = 131; + int RIL_REQUEST_GET_RADIO_CAPABILITY = 130; + int RIL_REQUEST_SET_RADIO_CAPABILITY = 131; int RIL_UNSOL_RESPONSE_BASE = 1000; int RIL_UNSOL_RESPONSE_RADIO_STATE_CHANGED = 1000; @@ -336,4 +336,6 @@ cat include/telephony/ril.h | \ int RIL_UNSOL_UICC_SUBSCRIPTION_STATUS_CHANGED = 1038; int RIL_UNSOL_SRVCC_STATE_NOTIFY = 1039; int RIL_UNSOL_HARDWARE_CONFIG_CHANGED = 1040; + int RIL_UNSOL_DC_RT_INFO_CHANGED = 1041; + int RIL_UNSOL_RADIO_CAPABILITY = 1042; } diff --git a/telephony/java/com/android/internal/telephony/TelephonyIntents.java b/telephony/java/com/android/internal/telephony/TelephonyIntents.java index e7aca90..d05e7d1 100644 --- a/telephony/java/com/android/internal/telephony/TelephonyIntents.java +++ b/telephony/java/com/android/internal/telephony/TelephonyIntents.java @@ -401,4 +401,23 @@ public class TelephonyIntents { */ public static final String ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED = "android.intent.action.ACTION_DEFAULT_SMS_SUBSCRIPTION_CHANGED"; + + /* + * Broadcast Action: An attempt to set phone radio type and access technology has changed. + * This has the following extra values: + * <ul> + * <li><em>phones radio access family </em> - A RadioAccessFamily + * array, contain phone ID and new radio access family for each phone.</li> + * </ul> + */ + public static final String ACTION_SET_RADIO_CAPABILITY_DONE = + "android.intent.action.ACTION_SET_RADIO_CAPABILITY_DONE"; + + public static final String EXTRA_RADIO_ACCESS_FAMILY = "rafs"; + + /* + * Broadcast Action: An attempt to set phone radio access family has failed. + */ + public static final String ACTION_SET_RADIO_CAPABILITY_FAILED = + "android.intent.action.ACTION_SET_RADIO_CAPABILITY_FAILED"; } |