Add a config to set Dun capabilities.

Since CDMA doesn't use APN settings there was no place to say what a cdma
device's DUN connection would support, so by default normal device
originating traffic would be blocked on a tethering single-connection device.

With this change you can (via overlay) say that it supports everything
so mms and on-device browsing/email will still work even when on a dun connection.

The reason to allow both: some carriers will charge per byte for dun access
and so they don't want lots of non-tethering traffic used (costs the user alot)
but other carriers just use a dun connection to limit access to tethering, but
once there give unlimited data, so it makes sense to support everything there.

bug:5972599
Change-Id: I78fd7f3ac63c51a0560b659ed5ec219b10a93f8d
This commit is contained in:
Robert Greenwalt
2012-02-08 10:52:21 -08:00
parent 08eb7dd630
commit 8d27f20ac2
2 changed files with 26 additions and 2 deletions

View File

@@ -227,6 +227,13 @@
<item>4</item>
</integer-array>
<!-- If the DUN connection for this CDMA device supports more than just DUN -->
<!-- traffic you should list them here. -->
<!-- If this device is not CDMA this is ignored. If this list is empty on -->
<!-- a DUN-requiring CDMA device, the DUN APN will just support just DUN. -->
<string-array translatable="false" name="config_cdma_dun_supported_types">
</string-array>
<!-- String containing the apn value for tethering. May be overriden by secure settings
TETHER_DUN_APN. Value is a comma separated series of strings:
"name,apn,proxy,port,username,password,server,mmsc,mmsproxy,mmsport,mcc,mnc,auth,type"

View File

@@ -93,6 +93,9 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
Phone.APN_TYPE_MMS,
Phone.APN_TYPE_HIPRI };
private String[] mDunApnTypes = {
Phone.APN_TYPE_DUN };
private static final int mDefaultApnId = DataConnectionTracker.APN_DEFAULT_ID;
/* Constructor */
@@ -118,6 +121,21 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
createAllDataConnectionList();
broadcastMessenger();
Context c = mCdmaPhone.getContext();
String[] t = c.getResources().getStringArray(
com.android.internal.R.array.config_cdma_dun_supported_types);
if (t != null && t.length > 0) {
ArrayList<String> temp = new ArrayList<String>();
for(int i=0; i< t.length; i++) {
if (!Phone.APN_TYPE_DUN.equalsIgnoreCase(t[i])) {
temp.add(t[i]);
}
}
temp.add(0, Phone.APN_TYPE_DUN);
mDunApnTypes = temp.toArray(t);
}
}
@Override
@@ -343,8 +361,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
String[] types;
int apnId;
if (mRequestedApnType.equals(Phone.APN_TYPE_DUN)) {
types = new String[1];
types[0] = Phone.APN_TYPE_DUN;
types = mDunApnTypes;
apnId = DataConnectionTracker.APN_DUN_ID;
} else {
types = mDefaultApnTypes;