diff options
author | Robert Greenwalt <rgreenwalt@google.com> | 2015-05-11 17:54:13 -0700 |
---|---|---|
committer | Robert Greenwalt <rgreenwalt@google.com> | 2015-05-13 17:04:03 -0700 |
commit | 8c621ef54630e411d50e9ba1d8d8ed19ef93f9e1 (patch) | |
tree | 4096702d11b2766de4f7f212784cd85f127ff5d6 /telephony/java/android/telephony/RadioAccessFamily.java | |
parent | 67b7ec28872dcb0ba09ef01bb87f7d558cbd19fc (diff) | |
download | frameworks_base-8c621ef54630e411d50e9ba1d8d8ed19ef93f9e1.zip frameworks_base-8c621ef54630e411d50e9ba1d8d8ed19ef93f9e1.tar.gz frameworks_base-8c621ef54630e411d50e9ba1d8d8ed19ef93f9e1.tar.bz2 |
Add support for static RadioCapabilities.
Some RILs don't support RIL_REQUEST_GET_RADIO_CAPABILITY. Add
code to RIL.java to notice a REQUEST_NOT_SUPPORTED response and
check config.xml (config_radio_access_family) for a static answer.
Also catching GENERIC_FAILURE responses because Hammerhead modem
returns that. B 21079604 created for this.
If neither Modem nor config.xml provide data, uses RAF_UNKNOWN
so we don't lie about capabilities and also so we fail fast
(setPreferredNetwork won't work).
bug:20561357
Change-Id: I49e4527fe94919a7094bc7c1e100d20e8f833865
Diffstat (limited to 'telephony/java/android/telephony/RadioAccessFamily.java')
-rw-r--r-- | telephony/java/android/telephony/RadioAccessFamily.java | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/telephony/java/android/telephony/RadioAccessFamily.java b/telephony/java/android/telephony/RadioAccessFamily.java index 9fea418..0c5c557 100644 --- a/telephony/java/android/telephony/RadioAccessFamily.java +++ b/telephony/java/android/telephony/RadioAccessFamily.java @@ -255,5 +255,43 @@ public class RadioAccessFamily implements Parcelable { return type; } -} + public static int singleRafTypeFromString(String rafString) { + switch (rafString) { + case "GPRS": return RAF_GPRS; + case "EDGE": return RAF_EDGE; + case "UMTS": return RAF_UMTS; + case "IS95A": return RAF_IS95A; + case "IS95B": return RAF_IS95B; + case "1XRTT": return RAF_1xRTT; + case "EVDO_0": return RAF_EVDO_0; + case "EVDO_A": return RAF_EVDO_A; + case "HSDPA": return RAF_HSDPA; + case "HSUPA": return RAF_HSUPA; + case "HSPA": return RAF_HSPA; + case "EVDO_B": return RAF_EVDO_B; + case "EHRPD": return RAF_EHRPD; + case "LTE": return RAF_LTE; + case "HSPAP": return RAF_HSPAP; + case "GSM": return RAF_GSM; + case "TD_SCDMA":return RAF_TD_SCDMA; + case "HS": return HS; + case "CDMA": return CDMA; + case "EVDO": return EVDO; + case "WCDMA": return WCDMA; + default: return RAF_UNKNOWN; + } + } + + public static int rafTypeFromString(String rafList) { + rafList = rafList.toUpperCase(); + String[] rafs = rafList.split("\\|"); + int result = 0; + for(String raf : rafs) { + int rafType = singleRafTypeFromString(raf.trim()); + if (rafType == RAF_UNKNOWN) return rafType; + result |= rafType; + } + return result; + } +} |