Merge "Move the implement of getAllCollapsedRatTypes to StatsPullAtomService" am: e48ca58c47 am: b40701ed97 am: c4e0256170

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

Change-Id: I74cd4f4fe80a76fb1d946dbab5e8394832801ff8
This commit is contained in:
Aaron Huang
2022-01-27 09:16:42 +00:00
committed by Automerger Merge Worker
4 changed files with 53 additions and 87 deletions

View File

@@ -1123,4 +1123,52 @@ public class NetworkStatsManager {
throw e.rethrowFromSystemServer(); throw e.rethrowFromSystemServer();
} }
} }
/**
* Get a RAT type representative of a group of RAT types for network statistics.
*
* Collapse the given Radio Access Technology (RAT) type into a bucket that
* is representative of the original RAT type for network statistics. The
* mapping mostly corresponds to {@code TelephonyManager#NETWORK_CLASS_BIT_MASK_*}
* but with adaptations specific to the virtual types introduced by
* networks stats.
*
* @param ratType An integer defined in {@code TelephonyManager#NETWORK_TYPE_*}.
*
* @hide
*/
@SystemApi(client = MODULE_LIBRARIES)
public static int getCollapsedRatType(int ratType) {
switch (ratType) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_GSM:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_IDEN:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
return TelephonyManager.NETWORK_TYPE_GSM;
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_HSPAP:
case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
return TelephonyManager.NETWORK_TYPE_UMTS;
case TelephonyManager.NETWORK_TYPE_LTE:
case TelephonyManager.NETWORK_TYPE_IWLAN:
return TelephonyManager.NETWORK_TYPE_LTE;
case TelephonyManager.NETWORK_TYPE_NR:
return TelephonyManager.NETWORK_TYPE_NR;
// Virtual RAT type for 5G NSA mode, see
// {@link NetworkStatsManager#NETWORK_TYPE_5G_NSA}.
case NetworkStatsManager.NETWORK_TYPE_5G_NSA:
return NetworkStatsManager.NETWORK_TYPE_5G_NSA;
default:
return TelephonyManager.NETWORK_TYPE_UNKNOWN;
}
}
} }

View File

@@ -48,7 +48,6 @@ import android.os.Build;
import android.os.Parcel; import android.os.Parcel;
import android.os.Parcelable; import android.os.Parcelable;
import android.telephony.Annotation.NetworkType; import android.telephony.Annotation.NetworkType;
import android.telephony.TelephonyManager;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.ArraySet; import android.util.ArraySet;
@@ -59,9 +58,7 @@ import com.android.net.module.util.NetworkStatsUtils;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.Set; import java.util.Set;
@@ -703,7 +700,8 @@ public final class NetworkTemplate implements Parcelable {
private boolean matchesCollapsedRatType(NetworkIdentity ident) { private boolean matchesCollapsedRatType(NetworkIdentity ident) {
return mRatType == NETWORK_TYPE_ALL return mRatType == NETWORK_TYPE_ALL
|| getCollapsedRatType(mRatType) == getCollapsedRatType(ident.mRatType); || NetworkStatsManager.getCollapsedRatType(mRatType)
== NetworkStatsManager.getCollapsedRatType(ident.mRatType);
} }
/** /**
@@ -746,86 +744,6 @@ public final class NetworkTemplate implements Parcelable {
} }
} }
/**
* Get a Radio Access Technology(RAT) type that is representative of a group of RAT types.
* The mapping is corresponding to {@code TelephonyManager#NETWORK_CLASS_BIT_MASK_*}.
*
* @param ratType An integer defined in {@code TelephonyManager#NETWORK_TYPE_*}.
*
* @hide
*/
// TODO: 1. Consider move this to TelephonyManager if used by other modules.
// 2. Consider make this configurable.
// 3. Use TelephonyManager APIs when available.
// TODO: @SystemApi when ready.
public static int getCollapsedRatType(int ratType) {
switch (ratType) {
case TelephonyManager.NETWORK_TYPE_GPRS:
case TelephonyManager.NETWORK_TYPE_GSM:
case TelephonyManager.NETWORK_TYPE_EDGE:
case TelephonyManager.NETWORK_TYPE_IDEN:
case TelephonyManager.NETWORK_TYPE_CDMA:
case TelephonyManager.NETWORK_TYPE_1xRTT:
return TelephonyManager.NETWORK_TYPE_GSM;
case TelephonyManager.NETWORK_TYPE_EVDO_0:
case TelephonyManager.NETWORK_TYPE_EVDO_A:
case TelephonyManager.NETWORK_TYPE_EVDO_B:
case TelephonyManager.NETWORK_TYPE_EHRPD:
case TelephonyManager.NETWORK_TYPE_UMTS:
case TelephonyManager.NETWORK_TYPE_HSDPA:
case TelephonyManager.NETWORK_TYPE_HSUPA:
case TelephonyManager.NETWORK_TYPE_HSPA:
case TelephonyManager.NETWORK_TYPE_HSPAP:
case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
return TelephonyManager.NETWORK_TYPE_UMTS;
case TelephonyManager.NETWORK_TYPE_LTE:
case TelephonyManager.NETWORK_TYPE_IWLAN:
return TelephonyManager.NETWORK_TYPE_LTE;
case TelephonyManager.NETWORK_TYPE_NR:
return TelephonyManager.NETWORK_TYPE_NR;
// Virtual RAT type for 5G NSA mode, see
// {@link NetworkStatsManager#NETWORK_TYPE_5G_NSA}.
case NetworkStatsManager.NETWORK_TYPE_5G_NSA:
return NetworkStatsManager.NETWORK_TYPE_5G_NSA;
default:
return TelephonyManager.NETWORK_TYPE_UNKNOWN;
}
}
/**
* Return all supported collapsed RAT types that could be returned by
* {@link #getCollapsedRatType(int)}.
*
* @hide
*/
// TODO: @SystemApi when ready.
@NonNull
public static final int[] getAllCollapsedRatTypes() {
final int[] ratTypes = TelephonyManager.getAllNetworkTypes();
final HashSet<Integer> collapsedRatTypes = new HashSet<>();
for (final int ratType : ratTypes) {
collapsedRatTypes.add(NetworkTemplate.getCollapsedRatType(ratType));
}
// Add NETWORK_TYPE_5G_NSA to the returned list since 5G NSA is a virtual RAT type and
// it is not in TelephonyManager#NETWORK_TYPE_* constants.
// See {@link NetworkStatsManager#NETWORK_TYPE_5G_NSA}.
collapsedRatTypes.add(
NetworkTemplate.getCollapsedRatType(NetworkStatsManager.NETWORK_TYPE_5G_NSA));
// Ensure that unknown type is returned.
collapsedRatTypes.add(TelephonyManager.NETWORK_TYPE_UNKNOWN);
return toIntArray(collapsedRatTypes);
}
@NonNull
private static int[] toIntArray(@NonNull Collection<Integer> list) {
final int[] array = new int[list.size()];
int i = 0;
for (final Integer item : list) {
array[i++] = item;
}
return array;
}
/** /**
* Check if matches Wi-Fi network template. * Check if matches Wi-Fi network template.
*/ */

View File

@@ -244,7 +244,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub {
/** /**
* When enabled, all mobile data is reported under {@link NetworkTemplate#NETWORK_TYPE_ALL}. * When enabled, all mobile data is reported under {@link NetworkTemplate#NETWORK_TYPE_ALL}.
* When disabled, mobile data is broken down by a granular ratType representative of the * When disabled, mobile data is broken down by a granular ratType representative of the
* actual ratType. {@see NetworkTemplate#getCollapsedRatType}. * actual ratType. {@see android.app.usage.NetworkStatsManager#getCollapsedRatType}.
* Enabling this decreases the level of detail but saves performance, disk space and * Enabling this decreases the level of detail but saves performance, disk space and
* amount of data logged. * amount of data logged.
*/ */

View File

@@ -17,7 +17,7 @@
package com.android.server.net; package com.android.server.net;
import static android.app.usage.NetworkStatsManager.NETWORK_TYPE_5G_NSA; import static android.app.usage.NetworkStatsManager.NETWORK_TYPE_5G_NSA;
import static android.net.NetworkTemplate.getCollapsedRatType; import static android.app.usage.NetworkStatsManager.getCollapsedRatType;
import static android.telephony.TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED; import static android.telephony.TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_ADVANCED;
import static android.telephony.TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA; import static android.telephony.TelephonyDisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA;
import static android.telephony.TelephonyManager.NETWORK_TYPE_LTE; import static android.telephony.TelephonyManager.NETWORK_TYPE_LTE;
@@ -57,7 +57,7 @@ public class NetworkStatsSubscriptionsMonitor extends
* *
* @param subscriberId IMSI of the subscription. * @param subscriberId IMSI of the subscription.
* @param collapsedRatType collapsed RAT type. * @param collapsedRatType collapsed RAT type.
* @see android.net.NetworkTemplate#getCollapsedRatType(int). * @see android.app.usage.NetworkStatsManager#getCollapsedRatType(int).
*/ */
void onCollapsedRatTypeChanged(@NonNull String subscriberId, void onCollapsedRatTypeChanged(@NonNull String subscriberId,
@Annotation.NetworkType int collapsedRatType); @Annotation.NetworkType int collapsedRatType);