Merge "Add new fields to ApnSetting/DataProfileInfo"
This commit is contained in:
@@ -9453,7 +9453,9 @@ package android.provider {
|
||||
field public static final int MATCH_ALL_APN_SET_ID = -1; // 0xffffffff
|
||||
field public static final String MAX_CONNECTIONS = "max_conns";
|
||||
field public static final String MODEM_PERSIST = "modem_cognitive";
|
||||
field public static final String MTU = "mtu";
|
||||
field @Deprecated public static final String MTU = "mtu";
|
||||
field public static final String MTU_V4 = "mtu_v4";
|
||||
field public static final String MTU_V6 = "mtu_v6";
|
||||
field public static final int NO_APN_SET_ID = 0; // 0x0
|
||||
field public static final String TIME_LIMIT_FOR_MAX_CONNECTIONS = "max_conns_time";
|
||||
field public static final int UNEDITED = 0; // 0x0
|
||||
|
||||
@@ -3757,6 +3757,25 @@ public final class Telephony {
|
||||
*/
|
||||
public static final String NETWORK_TYPE_BITMASK = "network_type_bitmask";
|
||||
|
||||
/**
|
||||
* Lingering radio technology (network type) bitmask.
|
||||
* To check what values can be contained, refer to the NETWORK_TYPE_ constants in
|
||||
* {@link android.telephony.TelephonyManager}.
|
||||
* Bitmask for a radio tech R is (1 << (R - 1))
|
||||
* <P>Type: INTEGER (long)</P>
|
||||
* @hide
|
||||
*/
|
||||
public static final String LINGERING_NETWORK_TYPE_BITMASK =
|
||||
"lingering_network_type_bitmask";
|
||||
|
||||
/**
|
||||
* Sets whether the PDU session brought up by this APN should always be on.
|
||||
* See 3GPP TS 23.501 section 5.6.13
|
||||
* <P>Type: INTEGER</P>
|
||||
* @hide
|
||||
*/
|
||||
public static final String ALWAYS_ON = "always_on";
|
||||
|
||||
/**
|
||||
* MVNO type:
|
||||
* {@code SPN (Service Provider Name), IMSI, GID (Group Identifier Level 1)}.
|
||||
@@ -3835,10 +3854,30 @@ public final class Telephony {
|
||||
* connected, in bytes.
|
||||
* <p>Type: INTEGER </p>
|
||||
* @hide
|
||||
* @deprecated use {@link #MTU_V4} or {@link #MTU_V6} instead
|
||||
*/
|
||||
@SystemApi
|
||||
@Deprecated
|
||||
public static final String MTU = "mtu";
|
||||
|
||||
/**
|
||||
* The MTU (maximum transmit unit) size of the mobile interface for IPv4 to which the APN is
|
||||
* connected, in bytes.
|
||||
* <p>Type: INTEGER </p>
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final String MTU_V4 = "mtu_v4";
|
||||
|
||||
/**
|
||||
* The MTU (maximum transmit unit) size of the mobile interface for IPv6 to which the APN is
|
||||
* connected, in bytes.
|
||||
* <p>Type: INTEGER </p>
|
||||
* @hide
|
||||
*/
|
||||
@SystemApi
|
||||
public static final String MTU_V6 = "mtu_v6";
|
||||
|
||||
/**
|
||||
* APN edit status. APN could be added/edited/deleted by a user or carrier.
|
||||
* see all possible returned APN edit status.
|
||||
|
||||
@@ -328,8 +328,6 @@ public class ApnSetting implements Parcelable {
|
||||
@SystemApi
|
||||
public static final String TYPE_XCAP_STRING = "xcap";
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* APN type for Virtual SIM service.
|
||||
*
|
||||
@@ -506,27 +504,21 @@ public class ApnSetting implements Parcelable {
|
||||
private final int mRoamingProtocol;
|
||||
private final int mMtuV4;
|
||||
private final int mMtuV6;
|
||||
|
||||
private final boolean mCarrierEnabled;
|
||||
|
||||
private final int mNetworkTypeBitmask;
|
||||
|
||||
private final @TelephonyManager.NetworkTypeBitMask int mNetworkTypeBitmask;
|
||||
private final @TelephonyManager.NetworkTypeBitMask long mLingeringNetworkTypeBitmask;
|
||||
private final int mProfileId;
|
||||
|
||||
private final boolean mPersistent;
|
||||
private final int mMaxConns;
|
||||
private final int mWaitTime;
|
||||
private final int mMaxConnsTime;
|
||||
|
||||
private final int mMvnoType;
|
||||
private final String mMvnoMatchData;
|
||||
|
||||
private final int mApnSetId;
|
||||
|
||||
private boolean mPermanentFailed = false;
|
||||
private final int mCarrierId;
|
||||
|
||||
private final int mSkip464Xlat;
|
||||
private final boolean mAlwaysOn;
|
||||
|
||||
/**
|
||||
* Returns the MTU size of the IPv4 mobile interface to which the APN connected. Note this value
|
||||
@@ -843,19 +835,36 @@ public class ApnSetting implements Parcelable {
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a bitmask describing the Radio Technologies(Network Types) which this APN may use.
|
||||
* Returns a bitmask describing the Radio Technologies (Network Types) which this APN may use.
|
||||
*
|
||||
* NetworkType bitmask is calculated from NETWORK_TYPE defined in {@link TelephonyManager}.
|
||||
*
|
||||
* Examples of Network Types include {@link TelephonyManager#NETWORK_TYPE_UNKNOWN},
|
||||
* {@link TelephonyManager#NETWORK_TYPE_GPRS}, {@link TelephonyManager#NETWORK_TYPE_EDGE}.
|
||||
*
|
||||
* @return a bitmask describing the Radio Technologies(Network Types)
|
||||
* @return a bitmask describing the Radio Technologies (Network Types) or 0 if it is undefined.
|
||||
*/
|
||||
public int getNetworkTypeBitmask() {
|
||||
return mNetworkTypeBitmask;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a bitmask describing the Radio Technologies (Network Types) that should not be torn
|
||||
* down if it exists or brought up if it already exists for this APN.
|
||||
*
|
||||
* NetworkType bitmask is calculated from NETWORK_TYPE defined in {@link TelephonyManager}.
|
||||
*
|
||||
* Examples of Network Types include {@link TelephonyManager#NETWORK_TYPE_UNKNOWN},
|
||||
* {@link TelephonyManager#NETWORK_TYPE_GPRS}, {@link TelephonyManager#NETWORK_TYPE_EDGE}.
|
||||
*
|
||||
* @return a bitmask describing the Radio Technologies (Network Types) that should linger
|
||||
* or 0 if it is undefined.
|
||||
* @hide
|
||||
*/
|
||||
public @TelephonyManager.NetworkTypeBitMask long getLingeringNetworkTypeBitmask() {
|
||||
return mLingeringNetworkTypeBitmask;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the MVNO match type for this APN.
|
||||
*
|
||||
@@ -888,6 +897,18 @@ public class ApnSetting implements Parcelable {
|
||||
return mSkip464Xlat;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether User Plane resources have to be activated during every transition from
|
||||
* CM-IDLE mode to CM-CONNECTED state for this APN
|
||||
* See 3GPP TS 23.501 section 5.6.13
|
||||
*
|
||||
* @return True if the PDU session for this APN should always be on and false otherwise
|
||||
* @hide
|
||||
*/
|
||||
public boolean isAlwaysOn() {
|
||||
return mAlwaysOn;
|
||||
}
|
||||
|
||||
private ApnSetting(Builder builder) {
|
||||
this.mEntryName = builder.mEntryName;
|
||||
this.mApnName = builder.mApnName;
|
||||
@@ -912,6 +933,7 @@ public class ApnSetting implements Parcelable {
|
||||
this.mMtuV6 = builder.mMtuV6;
|
||||
this.mCarrierEnabled = builder.mCarrierEnabled;
|
||||
this.mNetworkTypeBitmask = builder.mNetworkTypeBitmask;
|
||||
this.mLingeringNetworkTypeBitmask = builder.mLingeringNetworkTypeBitmask;
|
||||
this.mProfileId = builder.mProfileId;
|
||||
this.mPersistent = builder.mModemCognitive;
|
||||
this.mMaxConns = builder.mMaxConns;
|
||||
@@ -922,6 +944,7 @@ public class ApnSetting implements Parcelable {
|
||||
this.mApnSetId = builder.mApnSetId;
|
||||
this.mCarrierId = builder.mCarrierId;
|
||||
this.mSkip464Xlat = builder.mSkip464Xlat;
|
||||
this.mAlwaysOn = builder.mAlwaysOn;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -938,6 +961,10 @@ public class ApnSetting implements Parcelable {
|
||||
networkTypeBitmask =
|
||||
ServiceState.convertBearerBitmaskToNetworkTypeBitmask(bearerBitmask);
|
||||
}
|
||||
int mtuV4 = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU_V4));
|
||||
if (mtuV4 == -1) {
|
||||
mtuV4 = cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU));
|
||||
}
|
||||
|
||||
return new Builder()
|
||||
.setId(cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers._ID)))
|
||||
@@ -972,6 +999,8 @@ public class ApnSetting implements Parcelable {
|
||||
.setCarrierEnabled(cursor.getInt(cursor.getColumnIndexOrThrow(
|
||||
Telephony.Carriers.CARRIER_ENABLED)) == 1)
|
||||
.setNetworkTypeBitmask(networkTypeBitmask)
|
||||
.setLingeringNetworkTypeBitmask(cursor.getInt(cursor.getColumnIndexOrThrow(
|
||||
Carriers.LINGERING_NETWORK_TYPE_BITMASK)))
|
||||
.setProfileId(cursor.getInt(
|
||||
cursor.getColumnIndexOrThrow(Telephony.Carriers.PROFILE_ID)))
|
||||
.setModemCognitive(cursor.getInt(cursor.getColumnIndexOrThrow(
|
||||
@@ -982,8 +1011,8 @@ public class ApnSetting implements Parcelable {
|
||||
cursor.getColumnIndexOrThrow(Telephony.Carriers.WAIT_TIME_RETRY)))
|
||||
.setMaxConnsTime(cursor.getInt(cursor.getColumnIndexOrThrow(
|
||||
Telephony.Carriers.TIME_LIMIT_FOR_MAX_CONNECTIONS)))
|
||||
.setMtuV4(cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU)))
|
||||
.setMtuV6(UNSET_MTU) // TODO: Add corresponding support in telephony provider
|
||||
.setMtuV4(mtuV4)
|
||||
.setMtuV6(cursor.getInt(cursor.getColumnIndexOrThrow(Telephony.Carriers.MTU_V6)))
|
||||
.setMvnoType(getMvnoTypeIntFromString(
|
||||
cursor.getString(cursor.getColumnIndexOrThrow(
|
||||
Telephony.Carriers.MVNO_TYPE))))
|
||||
@@ -994,6 +1023,7 @@ public class ApnSetting implements Parcelable {
|
||||
.setCarrierId(cursor.getInt(
|
||||
cursor.getColumnIndexOrThrow(Telephony.Carriers.CARRIER_ID)))
|
||||
.setSkip464Xlat(cursor.getInt(cursor.getColumnIndexOrThrow(Carriers.SKIP_464XLAT)))
|
||||
.setAlwaysOn(cursor.getInt(cursor.getColumnIndexOrThrow(Carriers.ALWAYS_ON)) == 1)
|
||||
.buildWithoutCheck();
|
||||
}
|
||||
|
||||
@@ -1019,6 +1049,7 @@ public class ApnSetting implements Parcelable {
|
||||
.setRoamingProtocol(apn.mRoamingProtocol)
|
||||
.setCarrierEnabled(apn.mCarrierEnabled)
|
||||
.setNetworkTypeBitmask(apn.mNetworkTypeBitmask)
|
||||
.setLingeringNetworkTypeBitmask(apn.mLingeringNetworkTypeBitmask)
|
||||
.setProfileId(apn.mProfileId)
|
||||
.setModemCognitive(apn.mPersistent)
|
||||
.setMaxConns(apn.mMaxConns)
|
||||
@@ -1031,6 +1062,7 @@ public class ApnSetting implements Parcelable {
|
||||
.setApnSetId(apn.mApnSetId)
|
||||
.setCarrierId(apn.mCarrierId)
|
||||
.setSkip464Xlat(apn.mSkip464Xlat)
|
||||
.setAlwaysOn(apn.mAlwaysOn)
|
||||
.buildWithoutCheck();
|
||||
}
|
||||
|
||||
@@ -1069,9 +1101,11 @@ public class ApnSetting implements Parcelable {
|
||||
sb.append(", ").append(mMvnoMatchData);
|
||||
sb.append(", ").append(mPermanentFailed);
|
||||
sb.append(", ").append(mNetworkTypeBitmask);
|
||||
sb.append(", ").append(mLingeringNetworkTypeBitmask);
|
||||
sb.append(", ").append(mApnSetId);
|
||||
sb.append(", ").append(mCarrierId);
|
||||
sb.append(", ").append(mSkip464Xlat);
|
||||
sb.append(", ").append(mAlwaysOn);
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@@ -1136,8 +1170,9 @@ public class ApnSetting implements Parcelable {
|
||||
return Objects.hash(mApnName, mProxyAddress, mProxyPort, mMmsc, mMmsProxyAddress,
|
||||
mMmsProxyPort, mUser, mPassword, mAuthType, mApnTypeBitmask, mId, mOperatorNumeric,
|
||||
mProtocol, mRoamingProtocol, mMtuV4, mMtuV6, mCarrierEnabled, mNetworkTypeBitmask,
|
||||
mProfileId, mPersistent, mMaxConns, mWaitTime, mMaxConnsTime, mMvnoType,
|
||||
mMvnoMatchData, mApnSetId, mCarrierId, mSkip464Xlat);
|
||||
mLingeringNetworkTypeBitmask, mProfileId, mPersistent, mMaxConns, mWaitTime,
|
||||
mMaxConnsTime, mMvnoType, mMvnoMatchData, mApnSetId, mCarrierId, mSkip464Xlat,
|
||||
mAlwaysOn);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1174,9 +1209,11 @@ public class ApnSetting implements Parcelable {
|
||||
&& Objects.equals(mMvnoType, other.mMvnoType)
|
||||
&& Objects.equals(mMvnoMatchData, other.mMvnoMatchData)
|
||||
&& Objects.equals(mNetworkTypeBitmask, other.mNetworkTypeBitmask)
|
||||
&& Objects.equals(mLingeringNetworkTypeBitmask, other.mLingeringNetworkTypeBitmask)
|
||||
&& Objects.equals(mApnSetId, other.mApnSetId)
|
||||
&& Objects.equals(mCarrierId, other.mCarrierId)
|
||||
&& Objects.equals(mSkip464Xlat, other.mSkip464Xlat);
|
||||
&& Objects.equals(mSkip464Xlat, other.mSkip464Xlat)
|
||||
&& Objects.equals(mAlwaysOn, other.mAlwaysOn);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1210,6 +1247,7 @@ public class ApnSetting implements Parcelable {
|
||||
&& Objects.equals(mPassword, other.mPassword)
|
||||
&& Objects.equals(mAuthType, other.mAuthType)
|
||||
&& Objects.equals(mApnTypeBitmask, other.mApnTypeBitmask)
|
||||
&& Objects.equals(mLingeringNetworkTypeBitmask, other.mLingeringNetworkTypeBitmask)
|
||||
&& (isDataRoaming || Objects.equals(mProtocol, other.mProtocol))
|
||||
&& (!isDataRoaming || Objects.equals(mRoamingProtocol, other.mRoamingProtocol))
|
||||
&& Objects.equals(mCarrierEnabled, other.mCarrierEnabled)
|
||||
@@ -1224,7 +1262,8 @@ public class ApnSetting implements Parcelable {
|
||||
&& Objects.equals(mMvnoMatchData, other.mMvnoMatchData)
|
||||
&& Objects.equals(mApnSetId, other.mApnSetId)
|
||||
&& Objects.equals(mCarrierId, other.mCarrierId)
|
||||
&& Objects.equals(mSkip464Xlat, other.mSkip464Xlat);
|
||||
&& Objects.equals(mSkip464Xlat, other.mSkip464Xlat)
|
||||
&& Objects.equals(mAlwaysOn, other.mAlwaysOn);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1304,9 +1343,13 @@ public class ApnSetting implements Parcelable {
|
||||
apnValue.put(Telephony.Carriers.CARRIER_ENABLED, mCarrierEnabled);
|
||||
apnValue.put(Telephony.Carriers.MVNO_TYPE, getMvnoTypeStringFromInt(mMvnoType));
|
||||
apnValue.put(Telephony.Carriers.NETWORK_TYPE_BITMASK, mNetworkTypeBitmask);
|
||||
apnValue.put(Telephony.Carriers.LINGERING_NETWORK_TYPE_BITMASK,
|
||||
mLingeringNetworkTypeBitmask);
|
||||
apnValue.put(Telephony.Carriers.MTU_V4, mMtuV4);
|
||||
apnValue.put(Telephony.Carriers.MTU_V6, mMtuV6);
|
||||
apnValue.put(Telephony.Carriers.CARRIER_ID, mCarrierId);
|
||||
apnValue.put(Telephony.Carriers.SKIP_464XLAT, mSkip464Xlat);
|
||||
|
||||
apnValue.put(Telephony.Carriers.ALWAYS_ON, mAlwaysOn);
|
||||
return apnValue;
|
||||
}
|
||||
|
||||
@@ -1510,6 +1553,31 @@ public class ApnSetting implements Parcelable {
|
||||
return ServiceState.bitmaskHasTech(mNetworkTypeBitmask, networkType);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this APN setting can support the given lingering network
|
||||
*
|
||||
* @param networkType The lingering network type
|
||||
* @return {@code true} if this APN setting can support the given lingering network.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public boolean canSupportLingeringNetworkType(@NetworkType int networkType) {
|
||||
if (networkType == 0) {
|
||||
return canSupportNetworkType(networkType);
|
||||
}
|
||||
// Do a special checking for GSM. In reality, GSM is a voice only network type and can never
|
||||
// be used for data. We allow it here because in some DSDS corner cases, on the non-DDS
|
||||
// sub, modem reports data rat unknown. In that case if voice is GSM and this APN supports
|
||||
// GPRS or EDGE, this APN setting should be selected.
|
||||
if (networkType == TelephonyManager.NETWORK_TYPE_GSM
|
||||
&& (mLingeringNetworkTypeBitmask & (TelephonyManager.NETWORK_TYPE_BITMASK_GPRS
|
||||
| TelephonyManager.NETWORK_TYPE_BITMASK_EDGE)) != 0) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return ServiceState.bitmaskHasTech((int) mLingeringNetworkTypeBitmask, networkType);
|
||||
}
|
||||
|
||||
// Implement Parcelable.
|
||||
@Override
|
||||
/** @hide */
|
||||
@@ -1537,6 +1605,7 @@ public class ApnSetting implements Parcelable {
|
||||
dest.writeInt(mRoamingProtocol);
|
||||
dest.writeBoolean(mCarrierEnabled);
|
||||
dest.writeInt(mNetworkTypeBitmask);
|
||||
dest.writeLong(mLingeringNetworkTypeBitmask);
|
||||
dest.writeInt(mProfileId);
|
||||
dest.writeBoolean(mPersistent);
|
||||
dest.writeInt(mMaxConns);
|
||||
@@ -1549,6 +1618,7 @@ public class ApnSetting implements Parcelable {
|
||||
dest.writeInt(mApnSetId);
|
||||
dest.writeInt(mCarrierId);
|
||||
dest.writeInt(mSkip464Xlat);
|
||||
dest.writeBoolean(mAlwaysOn);
|
||||
}
|
||||
|
||||
private static ApnSetting readFromParcel(Parcel in) {
|
||||
@@ -1570,6 +1640,7 @@ public class ApnSetting implements Parcelable {
|
||||
.setRoamingProtocol(in.readInt())
|
||||
.setCarrierEnabled(in.readBoolean())
|
||||
.setNetworkTypeBitmask(in.readInt())
|
||||
.setLingeringNetworkTypeBitmask(in.readLong())
|
||||
.setProfileId(in.readInt())
|
||||
.setModemCognitive(in.readBoolean())
|
||||
.setMaxConns(in.readInt())
|
||||
@@ -1582,6 +1653,7 @@ public class ApnSetting implements Parcelable {
|
||||
.setApnSetId(in.readInt())
|
||||
.setCarrierId(in.readInt())
|
||||
.setSkip464Xlat(in.readInt())
|
||||
.setAlwaysOn(in.readBoolean())
|
||||
.buildWithoutCheck();
|
||||
}
|
||||
|
||||
@@ -1649,7 +1721,8 @@ public class ApnSetting implements Parcelable {
|
||||
private int mRoamingProtocol = UNSPECIFIED_INT;
|
||||
private int mMtuV4;
|
||||
private int mMtuV6;
|
||||
private int mNetworkTypeBitmask;
|
||||
private @TelephonyManager.NetworkTypeBitMask int mNetworkTypeBitmask;
|
||||
private @TelephonyManager.NetworkTypeBitMask long mLingeringNetworkTypeBitmask;
|
||||
private boolean mCarrierEnabled;
|
||||
private int mProfileId;
|
||||
private boolean mModemCognitive;
|
||||
@@ -1661,6 +1734,7 @@ public class ApnSetting implements Parcelable {
|
||||
private int mApnSetId;
|
||||
private int mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
|
||||
private int mSkip464Xlat = Carriers.SKIP_464XLAT_DEFAULT;
|
||||
private boolean mAlwaysOn;
|
||||
|
||||
/**
|
||||
* Default constructor for Builder.
|
||||
@@ -2011,6 +2085,19 @@ public class ApnSetting implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets lingering Radio Technology (Network Type) for this APN.
|
||||
*
|
||||
* @param lingeringNetworkTypeBitmask the Radio Technology (Network Type) that should linger
|
||||
* @hide
|
||||
*/
|
||||
@NonNull
|
||||
public Builder setLingeringNetworkTypeBitmask(@TelephonyManager.NetworkTypeBitMask
|
||||
long lingeringNetworkTypeBitmask) {
|
||||
this.mLingeringNetworkTypeBitmask = lingeringNetworkTypeBitmask;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the MVNO match type for this APN.
|
||||
*
|
||||
@@ -2047,6 +2134,18 @@ public class ApnSetting implements Parcelable {
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets whether the PDU session brought up by this APN should always be on.
|
||||
* See 3GPP TS 23.501 section 5.6.13
|
||||
*
|
||||
* @param alwaysOn the always on status to set for this APN
|
||||
* @hide
|
||||
*/
|
||||
public Builder setAlwaysOn(boolean alwaysOn) {
|
||||
this.mAlwaysOn = alwaysOn;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds {@link ApnSetting} from this builder.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user