| /* |
| * Copyright (C) 2014 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.internal.telephony.dataconnection; |
| |
| import android.telephony.ServiceState; |
| import android.text.TextUtils; |
| |
| import com.android.internal.telephony.RILConstants; |
| |
| public class DataProfile { |
| |
| static final int TYPE_COMMON = 0; |
| static final int TYPE_3GPP = 1; |
| static final int TYPE_3GPP2 = 2; |
| |
| //id of the data profile |
| public final int profileId; |
| //the APN to connect to |
| public final String apn; |
| //one of the PDP_type values in TS 27.007 section 10.1.1. |
| //For example, "IP", "IPV6", "IPV4V6", or "PPP". |
| public final String protocol; |
| //authentication protocol used for this PDP context |
| //(None: 0, PAP: 1, CHAP: 2, PAP&CHAP: 3) |
| public final int authType; |
| //the username for APN, or NULL |
| public final String user; |
| //the password for APN, or NULL |
| public final String password; |
| //the profile type, TYPE_COMMON, TYPE_3GPP, TYPE_3GPP2 |
| public final int type; |
| //the period in seconds to limit the maximum connections |
| public final int maxConnsTime; |
| //the maximum connections during maxConnsTime |
| public final int maxConns; |
| //the required wait time in seconds after a successful UE initiated |
| //disconnect of a given PDN connection before the device can send |
| //a new PDN connection request for that given PDN |
| public final int waitTime; |
| //true to enable the profile, false to disable |
| public final boolean enabled; |
| //supported APN types bitmap. See RIL_ApnTypes for the value of each bit. |
| public final int supportedApnTypesBitmap; |
| //one of the PDP_type values in TS 27.007 section 10.1.1 used on roaming network. |
| //For example, "IP", "IPV6", "IPV4V6", or "PPP". |
| public final String roamingProtocol; |
| //The bearer bitmap. See RIL_RadioAccessFamily for the value of each bit. |
| public final int bearerBitmap; |
| //maximum transmission unit (MTU) size in bytes |
| public final int mtu; |
| //the MVNO type: possible values are "imsi", "gid", "spn" |
| public final String mvnoType; |
| //MVNO match data. For example, SPN: A MOBILE, BEN NL, ... |
| //IMSI: 302720x94, 2060188, ... |
| //GID: 4E, 33, ... |
| public final String mvnoMatchData; |
| //indicating the data profile was sent to the modem through setDataProfile earlier. |
| public final boolean modemCognitive; |
| |
| DataProfile(int profileId, String apn, String protocol, int authType, |
| String user, String password, int type, int maxConnsTime, int maxConns, |
| int waitTime, boolean enabled, int supportedApnTypesBitmap, String roamingProtocol, |
| int bearerBitmap, int mtu, String mvnoType, String mvnoMatchData, |
| boolean modemCognitive) { |
| |
| this.profileId = profileId; |
| this.apn = apn; |
| this.protocol = protocol; |
| if (authType == -1) { |
| authType = TextUtils.isEmpty(user) ? RILConstants.SETUP_DATA_AUTH_NONE |
| : RILConstants.SETUP_DATA_AUTH_PAP_CHAP; |
| } |
| this.authType = authType; |
| this.user = user; |
| this.password = password; |
| this.type = type; |
| this.maxConnsTime = maxConnsTime; |
| this.maxConns = maxConns; |
| this.waitTime = waitTime; |
| this.enabled = enabled; |
| |
| this.supportedApnTypesBitmap = supportedApnTypesBitmap; |
| this.roamingProtocol = roamingProtocol; |
| this.bearerBitmap = bearerBitmap; |
| this.mtu = mtu; |
| this.mvnoType = mvnoType; |
| this.mvnoMatchData = mvnoMatchData; |
| this.modemCognitive = modemCognitive; |
| } |
| |
| public DataProfile(ApnSetting apn) { |
| this(apn, apn.profileId); |
| } |
| |
| public DataProfile(ApnSetting apn, int profileId) { |
| this(profileId, apn.apn, apn.protocol, |
| apn.authType, apn.user, apn.password, apn.bearerBitmask == 0 |
| ? TYPE_COMMON : (ServiceState.bearerBitmapHasCdma(apn.bearerBitmask) |
| ? TYPE_3GPP2 : TYPE_3GPP), |
| apn.maxConnsTime, apn.maxConns, apn.waitTime, apn.carrierEnabled, apn.typesBitmap, |
| apn.roamingProtocol, apn.bearerBitmask, apn.mtu, apn.mvnoType, apn.mvnoMatchData, |
| apn.modemCognitive); |
| } |
| |
| @Override |
| public String toString() { |
| return "DataProfile=" + profileId + "/" + apn + "/" + protocol + "/" + authType |
| + "/" + user + "/" + password + "/" + type + "/" + maxConnsTime |
| + "/" + maxConns + "/" + waitTime + "/" + enabled + "/" + supportedApnTypesBitmap |
| + "/" + roamingProtocol + "/" + bearerBitmap + "/" + mtu + "/" + mvnoType + "/" |
| + mvnoMatchData + "/" + modemCognitive; |
| } |
| |
| @Override |
| public boolean equals(Object o) { |
| if (o instanceof DataProfile == false) return false; |
| return (o == this || toString().equals(o.toString())); |
| } |
| } |