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

Commit 3e7751c4 authored by Jayachandran Chinnakkannu's avatar Jayachandran Chinnakkannu Committed by Automerger Merge Worker
Browse files

Merge "Add 5G/NR QOS support" am: bd3a33ed

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1643762

Change-Id: Icd4c21b9731256c9b3d39bffc5fddc43276c5fda
parents de806ecd bd3a33ed
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -10697,6 +10697,20 @@ package android.telephony.data {
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.EpsBearerQosSessionAttributes> CREATOR;
  }
  public final class NrQosSessionAttributes implements android.os.Parcelable android.net.QosSessionAttributes {
    method public int describeContents();
    method public int get5Qi();
    method public long getAveragingWindow();
    method public long getGuaranteedDownlinkBitRate();
    method public long getGuaranteedUplinkBitRate();
    method public long getMaxDownlinkBitRate();
    method public long getMaxUplinkBitRate();
    method public int getQfi();
    method @NonNull public java.util.List<java.net.InetSocketAddress> getRemoteAddresses();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.NrQosSessionAttributes> CREATOR;
  }
  public abstract class QualifiedNetworksService extends android.app.Service {
    ctor public QualifiedNetworksService();
    method @NonNull public abstract android.telephony.data.QualifiedNetworksService.NetworkAvailabilityProvider onCreateNetworkAvailabilityProvider(int);
+3 −2
Original line number Diff line number Diff line
@@ -230,8 +230,8 @@ package android.net {
    method public final void sendNetworkCapabilities(@NonNull android.net.NetworkCapabilities);
    method public final void sendNetworkScore(@IntRange(from=0, to=99) int);
    method public final void sendQosCallbackError(int, int);
    method public final void sendQosSessionAvailable(int, int, @NonNull android.telephony.data.EpsBearerQosSessionAttributes);
    method public final void sendQosSessionLost(int, int);
    method public final void sendQosSessionAvailable(int, int, @NonNull android.net.QosSessionAttributes);
    method public final void sendQosSessionLost(int, int, int);
    method public final void sendSocketKeepaliveEvent(int, int);
    method public final void setUnderlyingNetworks(@Nullable java.util.List<android.net.Network>);
    method public void unregister();
@@ -363,6 +363,7 @@ package android.net {
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.net.QosSession> CREATOR;
    field public static final int TYPE_EPS_BEARER = 1; // 0x1
    field public static final int TYPE_NR_BEARER = 2; // 0x2
  }

  public interface QosSessionAttributes {
+2 −0
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.net.NetworkInfo;
import android.net.NetworkScore;
import android.net.QosSession;
import android.telephony.data.EpsBearerQosSessionAttributes;
import android.telephony.data.NrQosSessionAttributes;

/**
 * Interface for NetworkAgents to send network properties.
@@ -37,6 +38,7 @@ oneway interface INetworkAgentRegistry {
    void sendSocketKeepaliveEvent(int slot, int reason);
    void sendUnderlyingNetworks(in @nullable List<Network> networks);
    void sendEpsQosSessionAvailable(int callbackId, in QosSession session, in EpsBearerQosSessionAttributes attributes);
    void sendNrQosSessionAvailable(int callbackId, in QosSession session, in NrQosSessionAttributes attributes);
    void sendQosSessionLost(int qosCallbackId, in QosSession session);
    void sendQosCallbackError(int qosCallbackId, int exceptionType);
}
+3 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package android.net;
import android.os.Bundle;
import android.net.QosSession;
import android.telephony.data.EpsBearerQosSessionAttributes;
import android.telephony.data.NrQosSessionAttributes;

/**
 * AIDL interface for QosCallback
@@ -29,6 +30,8 @@ oneway interface IQosCallback
{
     void onQosEpsBearerSessionAvailable(in QosSession session,
        in EpsBearerQosSessionAttributes attributes);
     void onNrQosSessionAvailable(in QosSession session,
        in NrQosSessionAttributes attributes);
     void onQosSessionLost(in QosSession session);
     void onError(in int type);
}
+20 −11
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.os.Looper;
import android.os.Message;
import android.os.RemoteException;
import android.telephony.data.EpsBearerQosSessionAttributes;
import android.telephony.data.NrQosSessionAttributes;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;
@@ -1160,29 +1161,37 @@ public abstract class NetworkAgent {


    /**
     * Sends the attributes of Eps Bearer Qos Session back to the Application
     * Sends the attributes of Qos Session back to the Application
     *
     * @param qosCallbackId the callback id that the session belongs to
     * @param sessionId the unique session id across all Eps Bearer Qos Sessions
     * @param attributes the attributes of the Eps Qos Session
     * @param sessionId the unique session id across all Qos Sessions
     * @param attributes the attributes of the Qos Session
     */
    public final void sendQosSessionAvailable(final int qosCallbackId, final int sessionId,
            @NonNull final EpsBearerQosSessionAttributes attributes) {
            @NonNull final QosSessionAttributes attributes) {
        Objects.requireNonNull(attributes, "The attributes must be non-null");
        if (attributes instanceof EpsBearerQosSessionAttributes) {
            queueOrSendMessage(ra -> ra.sendEpsQosSessionAvailable(qosCallbackId,
                    new QosSession(sessionId, QosSession.TYPE_EPS_BEARER),
                attributes));
                    (EpsBearerQosSessionAttributes)attributes));
        } else if (attributes instanceof NrQosSessionAttributes) {
            queueOrSendMessage(ra -> ra.sendNrQosSessionAvailable(qosCallbackId,
                    new QosSession(sessionId, QosSession.TYPE_NR_BEARER),
                    (NrQosSessionAttributes)attributes));
        }
    }

    /**
     * Sends event that the Eps Qos Session was lost.
     * Sends event that the Qos Session was lost.
     *
     * @param qosCallbackId the callback id that the session belongs to
     * @param sessionId the unique session id across all Eps Bearer Qos Sessions
     * @param sessionId the unique session id across all Qos Sessions
     * @param qosSessionType the session type {@code QosSesson#QosSessionType}
     */
    public final void sendQosSessionLost(final int qosCallbackId, final int sessionId) {
    public final void sendQosSessionLost(final int qosCallbackId,
            final int sessionId, final int qosSessionType) {
        queueOrSendMessage(ra -> ra.sendQosSessionLost(qosCallbackId,
                new QosSession(sessionId, QosSession.TYPE_EPS_BEARER)));
                new QosSession(sessionId, qosSessionType)));
    }

    /**
Loading