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
This commit is contained in:
@@ -2066,4 +2066,11 @@
|
||||
|
||||
<!-- Whether to start in touch mode -->
|
||||
<bool name="config_defaultInTouchMode">true</bool>
|
||||
|
||||
<!-- The RadioAccessFamilies supported by the device.
|
||||
Empty is viewed as "all". Only used on devices which
|
||||
don't support RIL_REQUEST_GET_RADIO_CAPABILITY
|
||||
format is UMTS|LTE|... -->
|
||||
<string translatable="false" name="config_radio_access_family"></string>
|
||||
|
||||
</resources>
|
||||
|
||||
@@ -2179,4 +2179,5 @@
|
||||
<java-symbol type="bool" name="config_use_sim_language_file" />
|
||||
<java-symbol type="bool" name="config_LTE_eri_for_network_name" />
|
||||
<java-symbol type="bool" name="config_defaultInTouchMode" />
|
||||
<java-symbol type="string" name="config_radio_access_family" />
|
||||
</resources>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user