NetworkSettings: Don't error out with TD-SCDMA values
This adds persistence and the ability to read TD-SCDMA values if
they are set. Both Network configuration and the QS tile toggle
now cycle these modes correctly
Devices supporting TD-SCDMA need to overlay the config_enabled_tdscdma
boolean configuration value to "true" for the proper network modes
to be presented to the user.
The ro.telephony.default_network should also be changed to a TD-SCDMA
value (20 or 18, depending on whether LTE is also supported)
Change-Id: I3a88a01aa9c5c111101c53388d5ba76a99cd0df6
diff --git a/res/values/config.xml b/res/values/config.xml
index 6e79575..a97a134 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -148,4 +148,7 @@
<!-- carrier settings menu -->
<string name="carrier_settings" translatable="false"></string>
<string name="carrier_settings_menu" translatable="false"></string>
+
+ <!-- Use TD-SDCMA 3G/4G technologies on this device -->
+ <bool name="config_enabled_tdscdma" translatable="false">false</bool>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 31c2eb4..c3ec771 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -701,6 +701,17 @@
<item>"2"</item>
</string-array>
+ <!-- TD-SCDMA uses a variation of the GSM combos -->
+ <string-array name="enabled_networks_tdscdma_values" translatable="false">
+ <item>"20"</item>
+ <item>"18"</item>
+ <item>"1"</item>
+ </string-array>
+ <string-array name="enabled_networks_tdscdma_except_lte_values" translatable="false">
+ <item>"18"</item>
+ <item>"1"</item>
+ </string-array>
+
<string name="cdma_subscription_title">CDMA subscription</string>
<string name="cdma_subscription_summary">Change between RUIM/SIM and NV</string>
<string name="cdma_subscription_dialogtitle">subscription</string>
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 237b8df..e712b58 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -284,8 +284,13 @@
} else if (!getResources().getBoolean(R.bool.config_enabled_lte)) {
mButtonEnabledNetworks.setEntries(
R.array.enabled_networks_except_lte_choices);
- mButtonEnabledNetworks.setEntryValues(
- R.array.enabled_networks_except_lte_values);
+ if (getResources().getBoolean(R.bool.config_enabled_tdscdma)) {
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_tdscdma_except_lte_values);
+ } else {
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_except_lte_values);
+ }
} else if (mIsGlobalCdma) {
mButtonEnabledNetworks.setEntries(
R.array.enabled_networks_cdma_choices);
@@ -295,8 +300,13 @@
int select = (mShow4GForLTE == true) ? R.array.enabled_networks_4g_choices
: R.array.enabled_networks_choices;
mButtonEnabledNetworks.setEntries(select);
- mButtonEnabledNetworks.setEntryValues(
- R.array.enabled_networks_values);
+ if (getResources().getBoolean(R.bool.config_enabled_tdscdma)) {
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_tdscdma_values);
+ } else {
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_values);
+ }
}
mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet);
} else {
@@ -441,6 +451,16 @@
case Phone.NT_MODE_CDMA:
case Phone.NT_MODE_CDMA_NO_EVDO:
case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+ case Phone.NT_MODE_TD_SCDMA_ONLY:
+ case Phone.NT_MODE_TD_SCDMA_WCDMA:
+ case Phone.NT_MODE_TD_SCDMA_LTE:
+ case Phone.NT_MODE_TD_SCDMA_GSM:
+ case Phone.NT_MODE_TD_SCDMA_GSM_LTE:
+ case Phone.NT_MODE_TD_SCDMA_GSM_WCDMA:
+ case Phone.NT_MODE_TD_SCDMA_WCDMA_LTE:
+ case Phone.NT_MODE_TD_SCDMA_GSM_WCDMA_LTE:
+ case Phone.NT_MODE_TD_SCDMA_CDMA_EVDO_GSM_WCDMA:
+ case Phone.NT_MODE_TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA:
// This is one of the modes we recognize
modemNetworkMode = buttonNetworkMode;
break;
@@ -717,6 +737,25 @@
Integer.toString(Phone.NT_MODE_LTE_CMDA_EVDO_GSM_WCDMA));
mButtonEnabledNetworks.setSummary(R.string.network_global);
break;
+ case Phone.NT_MODE_TD_SCDMA_ONLY:
+ case Phone.NT_MODE_TD_SCDMA_WCDMA:
+ case Phone.NT_MODE_TD_SCDMA_GSM:
+ case Phone.NT_MODE_TD_SCDMA_GSM_WCDMA:
+ case Phone.NT_MODE_TD_SCDMA_CDMA_EVDO_GSM_WCDMA:
+ mButtonEnabledNetworks.setValue(
+ Integer.toString(Phone.NT_MODE_TD_SCDMA_GSM_WCDMA));
+ mButtonEnabledNetworks.setSummary(R.string.network_3G);
+ break;
+ case Phone.NT_MODE_TD_SCDMA_LTE:
+ case Phone.NT_MODE_TD_SCDMA_GSM_LTE:
+ case Phone.NT_MODE_TD_SCDMA_WCDMA_LTE:
+ case Phone.NT_MODE_TD_SCDMA_GSM_WCDMA_LTE:
+ case Phone.NT_MODE_TD_SCDMA_LTE_CDMA_EVDO_GSM_WCDMA:
+ mButtonEnabledNetworks.setValue(
+ Integer.toString(Phone.NT_MODE_TD_SCDMA_GSM_WCDMA_LTE));
+ mButtonEnabledNetworks.setSummary((mShow4GForLTE == true)
+ ? R.string.network_4G : R.string.network_lte);
+ break;
default:
String errMsg = "Invalid Network Mode (" + NetworkMode + "). Ignore.";
loge(errMsg);
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index c1d9d2c..5a80321 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -368,6 +368,13 @@
case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
network = Phone.NT_MODE_CDMA;
break;
+ // TD-SCDMA Devices
+ case Phone.NT_MODE_TD_SCDMA_GSM_WCDMA:
+ network = Phone.NT_MODE_TD_SCDMA_GSM_WCDMA_LTE;
+ break;
+ case Phone.NT_MODE_TD_SCDMA_GSM_WCDMA_LTE:
+ network = Phone.NT_MODE_TD_SCDMA_GSM_WCDMA;
+ break;
}
mPhone.setPreferredNetworkType(network,