From a8fc387e20818e902b1140d4e17fb3b40ae4e5a6 Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Mon, 11 May 2015 17:54:13 -0700 Subject: 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: I9607e8e99242c6f7a6e330741d4afe8bbd08b1e7 --- core/res/res/values/config.xml | 7 ++++ core/res/res/values/symbols.xml | 1 + .../java/android/telephony/RadioAccessFamily.java | 40 +++++++++++++++++++++- 3 files changed, 47 insertions(+), 1 deletion(-) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index c22a1cbc663a..e91831a3327b 100755 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -2066,4 +2066,11 @@ true + + + + diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index d33f667f5d0e..03147cfd418b 100755 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2179,4 +2179,5 @@ + diff --git a/telephony/java/android/telephony/RadioAccessFamily.java b/telephony/java/android/telephony/RadioAccessFamily.java index 9fea418b82c8..0c5c5577d511 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; + } +} -- cgit v1.2.3-59-g8ed1b