Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a7d7596 authored by Jack Yu's avatar Jack Yu Committed by android-build-merger
Browse files

Merge "Added support for the new 1.2 data setup/deactivate API"

am: 9c2b978d

Change-Id: Ieae01d8ea4550544f657e89a0a2da2160ab8d3ef
parents 73b7c782 9c2b978d
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -760,6 +760,8 @@ message TelephonyEvent {
      DEACTIVATE_REASON_RADIO_OFF = 2;
      DEACTIVATE_REASON_RADIO_OFF = 2;


      DEACTIVATE_REASON_PDP_RESET = 3;
      DEACTIVATE_REASON_PDP_RESET = 3;

      DEACTIVATE_REASON_HANDOVER = 4;
    }
    }
  }
  }


+12 −6
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.internal.telephony;
package com.android.internal.telephony;


import android.net.KeepalivePacketData;
import android.net.KeepalivePacketData;
import android.net.LinkProperties;
import android.os.Handler;
import android.os.Handler;
import android.os.Message;
import android.os.Message;
import android.os.WorkSource;
import android.os.WorkSource;
@@ -1625,22 +1626,27 @@ public interface CommandsInterface {


    /**
    /**
     * Setup a packet data connection On successful completion, the result
     * Setup a packet data connection On successful completion, the result
     * message will return a {@link com.android.internal.telephony.dataconnection.DataCallResponse}
     * message will return a SetupDataResult object containing the connection information.
     * object containing the connection information.
     *
     *
     * @param radioTechnology
     * @param accessNetworkType
     *            Radio technology to use. Values is one of RIL_RADIO_TECHNOLOGY_*
     *            Access network to use. Values is one of AccessNetworkConstants.AccessNetworkType.
     * @param dataProfile
     * @param dataProfile
     *            Data profile for data call setup
     *            Data profile for data call setup
     * @param isRoaming
     * @param isRoaming
     *            Device is roaming or not
     *            Device is roaming or not
     * @param allowRoaming
     * @param allowRoaming
     *            Flag indicating data roaming is enabled or not
     *            Flag indicating data roaming is enabled or not
     * @param reason
     *            The reason for data setup
     * @param linkProperties
     *            If the reason is for handover, this indicates the link properties of the existing
     *            data connection
     * @param result
     * @param result
     *            Callback message
     *            Callback message
     */
     */
    void setupDataCall(int radioTechnology, DataProfile dataProfile, boolean isRoaming,
    void setupDataCall(int accessNetworkType, DataProfile dataProfile, boolean isRoaming,
                       boolean allowRoaming, Message result);
                       boolean allowRoaming, int reason, LinkProperties linkProperties,
                       Message result);


    /**
    /**
     * Deactivate packet data connection
     * Deactivate packet data connection
+58 −15
Original line number Original line Diff line number Diff line
@@ -55,6 +55,7 @@ import android.hardware.radio.V1_0.UusInfo;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager;
import android.net.KeepalivePacketData;
import android.net.KeepalivePacketData;
import android.net.LinkAddress;
import android.net.LinkAddress;
import android.net.LinkProperties;
import android.net.NetworkUtils;
import android.net.NetworkUtils;
import android.os.AsyncResult;
import android.os.AsyncResult;
import android.os.Build;
import android.os.Build;
@@ -81,12 +82,14 @@ import android.telephony.PhoneNumberUtils;
import android.telephony.RadioAccessFamily;
import android.telephony.RadioAccessFamily;
import android.telephony.RadioAccessSpecifier;
import android.telephony.RadioAccessSpecifier;
import android.telephony.Rlog;
import android.telephony.Rlog;
import android.telephony.ServiceState;
import android.telephony.SignalStrength;
import android.telephony.SignalStrength;
import android.telephony.SmsManager;
import android.telephony.SmsManager;
import android.telephony.TelephonyHistogram;
import android.telephony.TelephonyHistogram;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataProfile;
import android.telephony.data.DataProfile;
import android.telephony.data.DataService;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.Log;
import android.util.Log;
import android.util.SparseArray;
import android.util.SparseArray;
@@ -1225,8 +1228,9 @@ public class RIL extends BaseCommands implements CommandsInterface {
    }
    }


    @Override
    @Override
    public void setupDataCall(int radioTechnology, DataProfile dataProfile, boolean isRoaming,
    public void setupDataCall(int accessNetworkType, DataProfile dataProfile, boolean isRoaming,
                              boolean allowRoaming, Message result) {
                              boolean allowRoaming, int reason, LinkProperties linkProperties,
                              Message result) {


        IRadio radioProxy = getRadioProxy(result);
        IRadio radioProxy = getRadioProxy(result);
        if (radioProxy != null) {
        if (radioProxy != null) {
@@ -1237,17 +1241,49 @@ public class RIL extends BaseCommands implements CommandsInterface {
            // Convert to HAL data profile
            // Convert to HAL data profile
            DataProfileInfo dpi = convertToHalDataProfile(dataProfile);
            DataProfileInfo dpi = convertToHalDataProfile(dataProfile);


            android.hardware.radio.V1_2.IRadio radioProxy12 =
                    android.hardware.radio.V1_2.IRadio.castFrom(radioProxy);
            try {
                if (radioProxy12 == null) {
                    // IRadio V1.0
                    if (RILJ_LOGD) {
                    if (RILJ_LOGD) {
                        riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)
                        riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)
                        + ",radioTechnology=" + radioTechnology + ",isRoaming="
                                + ",radioTechnology=unknown,isRoaming=" + isRoaming
                        + isRoaming + ",allowRoaming=" + allowRoaming + "," + dataProfile);
                                + ",allowRoaming=" + allowRoaming + "," + dataProfile);
                    }
                    // The RAT field in setup data call request was never used before. Starting from
                    // P, the new API passes in access network type instead of RAT. Since it's
                    // not possible to convert access network type back to RAT, but we still need to
                    // support the 1.0 API, we passed in unknown RAT to the modem. And modem must
                    // setup the data call on its current camped network.
                    radioProxy.setupDataCall(rr.mSerial, ServiceState.RIL_RADIO_TECHNOLOGY_UNKNOWN,
                            dpi, dataProfile.isModemCognitive(), allowRoaming, isRoaming);
                } else {
                    // IRadio V1.2
                    ArrayList<String> addresses = null;
                    ArrayList<String> dnses = null;
                    if (linkProperties != null) {
                        addresses = new ArrayList<>();
                        for (InetAddress address : linkProperties.getAddresses()) {
                            addresses.add(address.getHostAddress());
                        }
                        dnses = new ArrayList<>();
                        for (InetAddress dns : linkProperties.getDnsServers()) {
                            dnses.add(dns.getHostAddress());
                        }
                    }
                    }


            try {
                    if (RILJ_LOGD) {
                radioProxy.setupDataCall(rr.mSerial, radioTechnology, dpi,
                        riljLog(rr.serialString() + "> " + requestToString(rr.mRequest)
                        dataProfile.isModemCognitive(), allowRoaming, isRoaming);
                                + ",accessNetworkType=" + accessNetworkType + ",isRoaming="
                mMetrics.writeRilSetupDataCall(mPhoneId, rr.mSerial, radioTechnology, dpi.profileId,
                                + isRoaming + ",allowRoaming=" + allowRoaming + "," + dataProfile
                        dpi.apn, dpi.authType, dpi.protocol);
                                + ",addresses=" + addresses + ",dnses=" + dnses);
                    }

                    radioProxy12.setupDataCall_1_2(rr.mSerial, accessNetworkType, dpi,
                            dataProfile.isModemCognitive(), allowRoaming, isRoaming, reason,
                            addresses, dnses);
                }
            } catch (RemoteException | RuntimeException e) {
            } catch (RemoteException | RuntimeException e) {
                handleRadioProxyExceptionForRR(rr, "setupDataCall", e);
                handleRadioProxyExceptionForRR(rr, "setupDataCall", e);
            }
            }
@@ -1531,10 +1567,17 @@ public class RIL extends BaseCommands implements CommandsInterface {
                        + requestToString(rr.mRequest) + " cid = " + cid + " reason = " + reason);
                        + requestToString(rr.mRequest) + " cid = " + cid + " reason = " + reason);
            }
            }


            android.hardware.radio.V1_2.IRadio radioProxy12 =
                    android.hardware.radio.V1_2.IRadio.castFrom(radioProxy);

            try {
            try {
                radioProxy.deactivateDataCall(rr.mSerial, cid, (reason == 0) ? false : true);
                if (radioProxy12 == null) {
                mMetrics.writeRilDeactivateDataCall(mPhoneId, rr.mSerial,
                    radioProxy.deactivateDataCall(rr.mSerial, cid,
                        cid, reason);
                            (reason == DataService.REQUEST_REASON_SHUTDOWN));
                } else {
                    radioProxy12.deactivateDataCall_1_2(rr.mSerial, cid, reason);
                }
                mMetrics.writeRilDeactivateDataCall(mPhoneId, rr.mSerial, cid, reason);
            } catch (RemoteException | RuntimeException e) {
            } catch (RemoteException | RuntimeException e) {
                handleRadioProxyExceptionForRR(rr, "deactivateDataCall", e);
                handleRadioProxyExceptionForRR(rr, "deactivateDataCall", e);
            }
            }
+11 −9
Original line number Original line Diff line number Diff line
@@ -44,6 +44,7 @@ import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import android.telephony.TelephonyManager;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataCallResponse;
import android.telephony.data.DataProfile;
import android.telephony.data.DataProfile;
import android.telephony.data.DataService;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.LocalLog;
import android.util.LocalLog;
import android.util.Pair;
import android.util.Pair;
@@ -61,6 +62,7 @@ import com.android.internal.telephony.RILConstants;
import com.android.internal.telephony.RetryManager;
import com.android.internal.telephony.RetryManager;
import com.android.internal.telephony.ServiceStateTracker;
import com.android.internal.telephony.ServiceStateTracker;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.telephony.metrics.TelephonyMetrics;
import com.android.internal.util.AsyncChannel;
import com.android.internal.util.AsyncChannel;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Protocol;
import com.android.internal.util.Protocol;
@@ -527,7 +529,10 @@ public class DataConnection extends StateMachine {
        boolean allowRoaming = mPhone.getDataRoamingEnabled()
        boolean allowRoaming = mPhone.getDataRoamingEnabled()
                || (isModemRoaming && !mPhone.getServiceState().getDataRoaming());
                || (isModemRoaming && !mPhone.getServiceState().getDataRoaming());


        mPhone.mCi.setupDataCall(cp.mRilRat, dp, isModemRoaming, allowRoaming, msg);
        mPhone.mCi.setupDataCall(ServiceState.rilRadioTechnologyToAccessNetworkType(cp.mRilRat), dp,
                isModemRoaming, allowRoaming, DataService.REQUEST_REASON_NORMAL, null, msg);
        TelephonyMetrics.getInstance().writeSetupDataCall(mPhone.getPhoneId(), cp.mRilRat,
                dp.getProfileId(), dp.getApn(), dp.getProtocol());
    }
    }


    public void onSubscriptionOverride(int overrideMask, int overrideValue) {
    public void onSubscriptionOverride(int overrideMask, int overrideValue) {
@@ -544,15 +549,14 @@ public class DataConnection extends StateMachine {
     * @param o is the object returned in the AsyncResult.obj.
     * @param o is the object returned in the AsyncResult.obj.
     */
     */
    private void tearDownData(Object o) {
    private void tearDownData(Object o) {
        int discReason = RILConstants.DEACTIVATE_REASON_NONE;
        int discReason = DataService.REQUEST_REASON_NORMAL;
        ApnContext apnContext = null;
        ApnContext apnContext = null;
        if ((o != null) && (o instanceof DisconnectParams)) {
        if ((o != null) && (o instanceof DisconnectParams)) {
            DisconnectParams dp = (DisconnectParams)o;
            DisconnectParams dp = (DisconnectParams)o;
            apnContext = dp.mApnContext;
            apnContext = dp.mApnContext;
            if (TextUtils.equals(dp.mReason, Phone.REASON_RADIO_TURNED_OFF)) {
            if (TextUtils.equals(dp.mReason, Phone.REASON_RADIO_TURNED_OFF)
                discReason = RILConstants.DEACTIVATE_REASON_RADIO_OFF;
                    || TextUtils.equals(dp.mReason, Phone.REASON_PDP_RESET)) {
            } else if (TextUtils.equals(dp.mReason, Phone.REASON_PDP_RESET)) {
                discReason = DataService.REQUEST_REASON_SHUTDOWN;
                discReason = RILConstants.DEACTIVATE_REASON_PDP_RESET;
            }
            }
        }
        }


@@ -1332,12 +1336,10 @@ public class DataConnection extends StateMachine {
                    }
                    }
                    deferMessage(msg);
                    deferMessage(msg);
                    break;
                    break;

                case EVENT_TEAR_DOWN_NOW:
                case EVENT_TEAR_DOWN_NOW:
                    if (DBG) log("DcDefaultState EVENT_TEAR_DOWN_NOW");
                    if (DBG) log("DcDefaultState EVENT_TEAR_DOWN_NOW");
                    mPhone.mCi.deactivateDataCall(mCid, 0,  null);
                    mPhone.mCi.deactivateDataCall(mCid, DataService.REQUEST_REASON_NORMAL,  null);
                    break;
                    break;

                case EVENT_LOST_CONNECTION:
                case EVENT_LOST_CONNECTION:
                    if (DBG) {
                    if (DBG) {
                        String s = "DcDefaultState ignore EVENT_LOST_CONNECTION"
                        String s = "DcDefaultState ignore EVENT_LOST_CONNECTION"
+4 −2
Original line number Original line Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.internal.telephony.imsphone;


import android.content.Context;
import android.content.Context;
import android.net.KeepalivePacketData;
import android.net.KeepalivePacketData;
import android.net.LinkProperties;
import android.os.Handler;
import android.os.Handler;
import android.os.Message;
import android.os.Message;
import android.service.carrier.CarrierIdentifier;
import android.service.carrier.CarrierIdentifier;
@@ -269,8 +270,9 @@ class ImsPhoneCommandInterface extends BaseCommands implements CommandsInterface
    }
    }


    @Override
    @Override
    public void setupDataCall(int radioTechnology, DataProfile dataProfile, boolean isRoaming,
    public void setupDataCall(int accessNetworkType, DataProfile dataProfile, boolean isRoaming,
                              boolean allowRoaming, Message result) {
                              boolean allowRoaming, int reason, LinkProperties linkProperties,
                              Message result) {
    }
    }


    @Override
    @Override
Loading