Add "isNtnOnlyCarrier" field into metrics atoms for satellite sessions.
Bug: 383033991
Flag: com.android.internal.telephony.flags.carrier_roaming_nb_iot_ntn
Test: manually test
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:9bd323131eaba07c4ee536ddd28984e2ec9e7e75)
Merged-In: I72014af9c675f515cac193dc96ba72df4b4d552f
Change-Id: I72014af9c675f515cac193dc96ba72df4b4d552f
diff --git a/proto/src/persist_atoms.proto b/proto/src/persist_atoms.proto
index a675886..ca68912 100644
--- a/proto/src/persist_atoms.proto
+++ b/proto/src/persist_atoms.proto
@@ -747,6 +747,7 @@
optional int32 count_of_auto_exit_due_to_screen_off = 16;
optional int32 count_of_auto_exit_due_to_tn_network = 17;
optional bool is_emergency = 18;
+ optional bool is_ntn_only_carrier = 19;
}
message SatelliteIncomingDatagram {
@@ -755,6 +756,7 @@
optional int64 datagram_transfer_time_millis = 3;
optional bool is_demo_mode = 4;
optional int32 carrier_id = 5;
+ optional bool is_ntn_only_carrier = 6;
}
message SatelliteOutgoingDatagram {
@@ -764,6 +766,7 @@
optional int64 datagram_transfer_time_millis = 4;
optional bool is_demo_mode = 5;
optional int32 carrier_id = 6;
+ optional bool is_ntn_only_carrier = 7;
}
message SatelliteProvision {
@@ -772,6 +775,7 @@
optional bool is_provision_request = 3;
optional bool is_canceled = 4;
optional int32 carrier_id = 5;
+ optional bool is_ntn_only_carrier = 6;
}
message SatelliteSosMessageRecommender {
@@ -785,6 +789,7 @@
optional bool is_satellite_allowed_in_current_location = 8;
optional bool is_wifi_connected = 9;
optional int32 carrier_id = 10;
+ optional bool is_ntn_only_carrier = 11;
}
message DataNetworkValidation {
@@ -855,4 +860,5 @@
optional int32 config_data_source = 9;
optional int32 carrier_id = 10;
optional int32 triggering_event = 11;
+ optional bool is_ntn_only_carrier = 12;
}
diff --git a/src/java/com/android/internal/telephony/metrics/MetricsCollector.java b/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
index 82b8bec..5ef4c5b 100644
--- a/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
+++ b/src/java/com/android/internal/telephony/metrics/MetricsCollector.java
@@ -1506,7 +1506,8 @@
satelliteSession.countOfSatelliteNotificationDisplayed,
satelliteSession.countOfAutoExitDueToScreenOff,
satelliteSession.countOfAutoExitDueToTnNetwork,
- satelliteSession.isEmergency);
+ satelliteSession.isEmergency,
+ satelliteSession.isNtnOnlyCarrier);
}
private static StatsEvent buildStatsEvent(SatelliteIncomingDatagram stats) {
@@ -1516,7 +1517,8 @@
stats.datagramSizeBytes,
stats.datagramTransferTimeMillis,
stats.isDemoMode,
- stats.carrierId);
+ stats.carrierId,
+ stats.isNtnOnlyCarrier);
}
private static StatsEvent buildStatsEvent(SatelliteOutgoingDatagram stats) {
@@ -1527,7 +1529,8 @@
stats.datagramSizeBytes,
stats.datagramTransferTimeMillis,
stats.isDemoMode,
- stats.carrierId);
+ stats.carrierId,
+ stats.isNtnOnlyCarrier);
}
private static StatsEvent buildStatsEvent(SatelliteProvision stats) {
@@ -1537,7 +1540,8 @@
stats.provisioningTimeSec,
stats.isProvisionRequest,
stats.isCanceled,
- stats.carrierId);
+ stats.carrierId,
+ stats.isNtnOnlyCarrier);
}
private static StatsEvent buildStatsEvent(SatelliteSosMessageRecommender stats) {
@@ -1552,7 +1556,8 @@
stats.recommendingHandoverType,
stats.isSatelliteAllowedInCurrentLocation,
stats.isWifiConnected,
- stats.carrierId);
+ stats.carrierId,
+ stats.isNtnOnlyCarrier);
}
private static StatsEvent buildStatsEvent(DataNetworkValidation stats) {
@@ -1633,7 +1638,8 @@
stats.countryCodes,
stats.configDataSource,
stats.carrierId,
- stats.triggeringEvent);
+ stats.triggeringEvent,
+ stats.isNtnOnlyCarrier);
}
/** Returns all phones in {@link PhoneFactory}, or an empty array if phones not made yet. */
diff --git a/src/java/com/android/internal/telephony/metrics/SatelliteStats.java b/src/java/com/android/internal/telephony/metrics/SatelliteStats.java
index 015bc05..4513f6c 100644
--- a/src/java/com/android/internal/telephony/metrics/SatelliteStats.java
+++ b/src/java/com/android/internal/telephony/metrics/SatelliteStats.java
@@ -804,7 +804,7 @@
private final int mCountOfAutoExitDueToScreenOff;
private final int mCountOfAutoExitDueToTnNetwork;
private final boolean mIsEmergency;
-
+ private final boolean mIsNtnOnlyCarrier;
private SatelliteSessionParams(Builder builder) {
this.mSatelliteServiceInitializationResult =
@@ -827,6 +827,7 @@
this.mCountOfAutoExitDueToScreenOff = builder.mCountOfAutoExitDueToScreenOff;
this.mCountOfAutoExitDueToTnNetwork = builder.mCountOfAutoExitDueToTnNetwork;
this.mIsEmergency = builder.mIsEmergency;
+ this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier;
}
public int getSatelliteServiceInitializationResult() {
@@ -897,6 +898,10 @@
return mIsEmergency;
}
+ public boolean isNtnOnlyCarrier() {
+ return mIsNtnOnlyCarrier;
+ }
+
/**
* A builder class to create {@link SatelliteSessionParams} data structure class
*/
@@ -919,6 +924,7 @@
private int mCountOfAutoExitDueToScreenOff = -1;
private int mCountOfAutoExitDueToTnNetwork = -1;
private boolean mIsEmergency = false;
+ private boolean mIsNtnOnlyCarrier = false;
/**
* Sets satelliteServiceInitializationResult value of {@link SatelliteSession}
@@ -1044,6 +1050,15 @@
}
/**
+ * Sets isNtnOnlyCarrier value of {@link SatelliteSession} atom
+ * then returns Builder class
+ */
+ public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) {
+ this.mIsNtnOnlyCarrier = isNtnOnlyCarrier;
+ return this;
+ }
+
+ /**
* Returns SessionParams, which contains whole component of
* {@link SatelliteSession} atom
*/
@@ -1074,6 +1089,7 @@
+ ", CountOfAutoExitDueToScreenOff" + mCountOfAutoExitDueToScreenOff
+ ", CountOfAutoExitDueToTnNetwork" + mCountOfAutoExitDueToTnNetwork
+ ", IsEmergency=" + mIsEmergency
+ + ", IsNtnOnlyCarrier=" + mIsNtnOnlyCarrier
+ ")";
}
}
@@ -1088,6 +1104,7 @@
private final long mDatagramTransferTimeMillis;
private final boolean mIsDemoMode;
private final int mCarrierId;
+ private final boolean mIsNtnOnlyCarrier;
private SatelliteIncomingDatagramParams(Builder builder) {
this.mResultCode = builder.mResultCode;
@@ -1095,6 +1112,7 @@
this.mDatagramTransferTimeMillis = builder.mDatagramTransferTimeMillis;
this.mIsDemoMode = builder.mIsDemoMode;
this.mCarrierId = builder.mCarrierId;
+ this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier;
}
public int getResultCode() {
@@ -1117,6 +1135,10 @@
return mCarrierId;
}
+ public boolean isNtnOnlyCarrier() {
+ return mIsNtnOnlyCarrier;
+ }
+
/**
* A builder class to create {@link SatelliteIncomingDatagramParams} data structure class
*/
@@ -1126,6 +1148,7 @@
private long mDatagramTransferTimeMillis = -1;
private boolean mIsDemoMode = false;
private int mCarrierId = UNKNOWN_CARRIER_ID;
+ private boolean mIsNtnOnlyCarrier = false;
/**
* Sets resultCode value of {@link SatelliteIncomingDatagram} atom
@@ -1170,6 +1193,15 @@
}
/**
+ * Sets isNtnOnlyCarrier value of {@link SatelliteIncomingDatagram} atom
+ * then returns Builder class
+ */
+ public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) {
+ this.mIsNtnOnlyCarrier = isNtnOnlyCarrier;
+ return this;
+ }
+
+ /**
* Returns IncomingDatagramParams, which contains whole component of
* {@link SatelliteIncomingDatagram} atom
*/
@@ -1187,6 +1219,7 @@
+ ", datagramTransferTimeMillis=" + mDatagramTransferTimeMillis
+ ", isDemoMode=" + mIsDemoMode
+ ", CarrierId=" + mCarrierId
+ + ", isNtnOnlyCarrier=" + mIsNtnOnlyCarrier
+ ")";
}
}
@@ -1202,6 +1235,7 @@
private final long mDatagramTransferTimeMillis;
private final boolean mIsDemoMode;
private final int mCarrierId;
+ private final boolean mIsNtnOnlyCarrier;
private SatelliteOutgoingDatagramParams(Builder builder) {
this.mDatagramType = builder.mDatagramType;
@@ -1210,6 +1244,7 @@
this.mDatagramTransferTimeMillis = builder.mDatagramTransferTimeMillis;
this.mIsDemoMode = builder.mIsDemoMode;
this.mCarrierId = builder.mCarrierId;
+ this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier;
}
public int getDatagramType() {
@@ -1236,6 +1271,10 @@
return mCarrierId;
}
+ public boolean isNtnOnlyCarrier() {
+ return mIsNtnOnlyCarrier;
+ }
+
/**
* A builder class to create {@link SatelliteOutgoingDatagramParams} data structure class
*/
@@ -1246,6 +1285,7 @@
private long mDatagramTransferTimeMillis = -1;
private boolean mIsDemoMode = false;
private int mCarrierId = UNKNOWN_CARRIER_ID;
+ private boolean mIsNtnOnlyCarrier = false;
/**
* Sets datagramType value of {@link SatelliteOutgoingDatagram} atom
@@ -1299,6 +1339,15 @@
}
/**
+ * Sets isNtnOnlyCarrier value of {@link SatelliteOutgoingDatagram} atom
+ * then returns Builder class
+ */
+ public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) {
+ this.mIsNtnOnlyCarrier = isNtnOnlyCarrier;
+ return this;
+ }
+
+ /**
* Returns OutgoingDatagramParams, which contains whole component of
* {@link SatelliteOutgoingDatagram} atom
*/
@@ -1317,6 +1366,7 @@
+ ", datagramTransferTimeMillis=" + mDatagramTransferTimeMillis
+ ", isDemoMode=" + mIsDemoMode
+ ", CarrierId=" + mCarrierId
+ + ", isNtnOnlyCarrier=" + mIsNtnOnlyCarrier
+ ")";
}
}
@@ -1331,6 +1381,7 @@
private final boolean mIsProvisionRequest;
private final boolean mIsCanceled;
private final int mCarrierId;
+ private final boolean mIsNtnOnlyCarrier;
private SatelliteProvisionParams(Builder builder) {
this.mResultCode = builder.mResultCode;
@@ -1338,6 +1389,7 @@
this.mIsProvisionRequest = builder.mIsProvisionRequest;
this.mIsCanceled = builder.mIsCanceled;
this.mCarrierId = builder.mCarrierId;
+ this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier;
}
public int getResultCode() {
@@ -1360,6 +1412,10 @@
return mCarrierId;
}
+ public boolean isNtnOnlyCarrier() {
+ return mIsNtnOnlyCarrier;
+ }
+
/**
* A builder class to create {@link SatelliteProvisionParams} data structure class
*/
@@ -1369,6 +1425,7 @@
private boolean mIsProvisionRequest = false;
private boolean mIsCanceled = false;
private int mCarrierId = UNKNOWN_CARRIER_ID;
+ private boolean mIsNtnOnlyCarrier = false;
/**
* Sets resultCode value of {@link SatelliteProvision} atom
@@ -1413,6 +1470,15 @@
}
/**
+ * Sets isNtnOnlyCarrier value of {@link SatelliteProvision} atom
+ * then returns Builder class
+ */
+ public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) {
+ this.mIsNtnOnlyCarrier = isNtnOnlyCarrier;
+ return this;
+ }
+
+ /**
* Returns ProvisionParams, which contains whole component of
* {@link SatelliteProvision} atom
*/
@@ -1430,6 +1496,7 @@
+ ", isProvisionRequest=" + mIsProvisionRequest
+ ", isCanceled" + mIsCanceled
+ ", CarrierId=" + mCarrierId
+ + ", isNtnOnlyCarrier=" + mIsNtnOnlyCarrier
+ ")";
}
}
@@ -1448,6 +1515,7 @@
private final boolean mIsSatelliteAllowedInCurrentLocation;
private final boolean mIsWifiConnected;
private final int mCarrierId;
+ private final boolean mIsNtnOnlyCarrier;
private SatelliteSosMessageRecommenderParams(Builder builder) {
this.mIsDisplaySosMessageSent = builder.mIsDisplaySosMessageSent;
@@ -1460,6 +1528,7 @@
builder.mIsSatelliteAllowedInCurrentLocation;
this.mIsWifiConnected = builder.mIsWifiConnected;
this.mCarrierId = builder.mCarrierId;
+ this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier;
}
public boolean isDisplaySosMessageSent() {
@@ -1498,8 +1567,12 @@
return mCarrierId;
}
+ public boolean isNtnOnlyCarrier() {
+ return mIsNtnOnlyCarrier;
+ }
+
/**
- * A builder class to create {@link SatelliteProvisionParams} data structure class
+ * A builder class to create {@link SatelliteSosMessageRecommender} data structure class
*/
public static class Builder {
private boolean mIsDisplaySosMessageSent = false;
@@ -1511,7 +1584,7 @@
private boolean mIsSatelliteAllowedInCurrentLocation = false;
private boolean mIsWifiConnected = false;
private int mCarrierId = UNKNOWN_CARRIER_ID;
-
+ private boolean mIsNtnOnlyCarrier = false;
/**
* Sets resultCode value of {@link SatelliteSosMessageRecommender} atom
@@ -1597,6 +1670,15 @@
}
/**
+ * Sets isNtnOnlyCarrier value of {@link SatelliteSosMessageRecommender} atom
+ * then returns Builder class
+ */
+ public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) {
+ this.mIsNtnOnlyCarrier = isNtnOnlyCarrier;
+ return this;
+ }
+
+ /**
* Returns SosMessageRecommenderParams, which contains whole component of
* {@link SatelliteSosMessageRecommenderParams} atom
*/
@@ -1619,6 +1701,7 @@
+ mIsSatelliteAllowedInCurrentLocation
+ ", isWifiConnected=" + mIsWifiConnected
+ ", carrierId=" + mCarrierId
+ + ", isNtnOnlyCarrier=" + mIsNtnOnlyCarrier
+ ")";
}
}
@@ -2360,6 +2443,7 @@
private final @SatelliteConstants.ConfigDataSource int mConfigDataSource;
private final int mCarrierId;
private final int mTriggeringEvent;
+ private final boolean mIsNtnOnlyCarrier;
private SatelliteAccessControllerParams(Builder builder) {
this.mAccessControlType = builder.mAccessControlType;
@@ -2373,6 +2457,7 @@
this.mConfigDataSource = builder.mConfigDataSource;
this.mCarrierId = builder.mCarrierId;
this.mTriggeringEvent = builder.mTriggeringEvent;
+ this.mIsNtnOnlyCarrier = builder.mIsNtnOnlyCarrier;
}
public @SatelliteConstants.AccessControlType int getAccessControlType() {
@@ -2419,6 +2504,10 @@
return mTriggeringEvent;
}
+ public boolean isNtnOnlyCarrier() {
+ return mIsNtnOnlyCarrier;
+ }
+
/**
* A builder class to create {@link SatelliteAccessControllerParams} data structure class
*/
@@ -2435,6 +2524,7 @@
private int mCarrierId = UNKNOWN_CARRIER_ID;
private @SatelliteConstants.TriggeringEvent int mTriggeringEvent =
TRIGGERING_EVENT_UNKNOWN;
+ private boolean mIsNtnOnlyCarrier = false;
/**
* Sets AccessControlType value of {@link #SatelliteAccessController}
@@ -2510,6 +2600,15 @@
}
/**
+ * Sets isNtnOnlyCarrier value of {@link SatelliteAccessController} atom
+ * then returns Builder class
+ */
+ public Builder setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) {
+ this.mIsNtnOnlyCarrier = isNtnOnlyCarrier;
+ return this;
+ }
+
+ /**
* Returns AccessControllerParams, which contains whole component of
* {@link #SatelliteAccessController} atom
*/
@@ -2533,6 +2632,7 @@
+ ", ConfigDataSource=" + mConfigDataSource
+ ", CarrierId=" + mCarrierId
+ ", TriggeringEvent=" + mTriggeringEvent
+ + ", IsNtnOnlyCarrier=" + mIsNtnOnlyCarrier
+ ")";
}
}
@@ -2614,6 +2714,7 @@
proto.countOfAutoExitDueToScreenOff = param.getCountOfAutoExitDueToScreenOff();
proto.countOfAutoExitDueToTnNetwork = param.getCountOfAutoExitDueToTnNetwork();
proto.isEmergency = param.getIsEmergency();
+ proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
mAtomsStorage.addSatelliteSessionStats(proto);
}
@@ -2626,6 +2727,7 @@
proto.datagramTransferTimeMillis = param.getDatagramTransferTimeMillis();
proto.isDemoMode = param.getIsDemoMode();
proto.carrierId = param.getCarrierId();
+ proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
mAtomsStorage.addSatelliteIncomingDatagramStats(proto);
}
@@ -2639,6 +2741,7 @@
proto.datagramTransferTimeMillis = param.getDatagramTransferTimeMillis();
proto.isDemoMode = param.getIsDemoMode();
proto.carrierId = param.getCarrierId();
+ proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
mAtomsStorage.addSatelliteOutgoingDatagramStats(proto);
}
@@ -2650,6 +2753,7 @@
proto.isProvisionRequest = param.getIsProvisionRequest();
proto.isCanceled = param.getIsCanceled();
proto.carrierId = param.getCarrierId();
+ proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
mAtomsStorage.addSatelliteProvisionStats(proto);
}
@@ -2666,6 +2770,7 @@
proto.isSatelliteAllowedInCurrentLocation = param.isSatelliteAllowedInCurrentLocation();
proto.isWifiConnected = param.isWifiConnected();
proto.carrierId = param.getCarrierId();
+ proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
proto.count = 1;
mAtomsStorage.addSatelliteSosMessageRecommenderStats(proto);
}
@@ -2745,6 +2850,7 @@
proto.configDataSource = param.getConfigDataSource();
proto.carrierId = param.getCarrierId();
proto.triggeringEvent = param.getTriggeringEvent();
+ proto.isNtnOnlyCarrier = param.isNtnOnlyCarrier();
mAtomsStorage.addSatelliteAccessControllerStats(proto);
}
}
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
index c647bd1..2de820d 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramDispatcher.java
@@ -768,6 +768,7 @@
.setDatagramTransferTimeMillis(datagramTransmissionTime)
.setIsDemoMode(mIsDemoMode)
.setCarrierId(SatelliteController.getInstance().getSatelliteCarrierId())
+ .setIsNtnOnlyCarrier(SatelliteController.getInstance().isNtnOnlyCarrier())
.build());
if (resultCode == SatelliteManager.SATELLITE_RESULT_SUCCESS) {
mControllerMetricsStats.reportOutgoingDatagramSuccessCount(argument.datagramType,
diff --git a/src/java/com/android/internal/telephony/satellite/DatagramReceiver.java b/src/java/com/android/internal/telephony/satellite/DatagramReceiver.java
index 75771d0..c01f10d 100644
--- a/src/java/com/android/internal/telephony/satellite/DatagramReceiver.java
+++ b/src/java/com/android/internal/telephony/satellite/DatagramReceiver.java
@@ -758,6 +758,7 @@
.setDatagramTransferTimeMillis(datagramTransferTime)
.setIsDemoMode(mIsDemoMode)
.setCarrierId(SatelliteController.getInstance().getSatelliteCarrierId())
+ .setIsNtnOnlyCarrier(SatelliteController.getInstance().isNtnOnlyCarrier())
.build());
mControllerMetricsStats.reportIncomingDatagramCount(resultCode, mIsDemoMode);
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteController.java b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
index da1298a..e7f6cdf 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteController.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteController.java
@@ -2032,6 +2032,7 @@
mProvisionMetricsStats.setResultCode(error)
.setIsProvisionRequest(argument.mProvisioned)
.setCarrierId(getSatelliteCarrierId())
+ .setIsNtnOnlyCarrier(isNtnOnlyCarrier())
.reportProvisionMetrics();
if (argument.mProvisioned) {
mControllerMetricsStats.reportProvisionCount(error);
@@ -4395,6 +4396,7 @@
.setResultCode(SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE)
.setIsProvisionRequest(true)
.setCarrierId(getSatelliteCarrierId())
+ .setIsNtnOnlyCarrier(isNtnOnlyCarrier())
.reportProvisionMetrics();
mControllerMetricsStats.reportProvisionCount(
SatelliteManager.SATELLITE_RESULT_INVALID_TELEPHONY_STATE);
@@ -4414,6 +4416,7 @@
mProvisionMetricsStats.setResultCode(result)
.setIsProvisionRequest(true)
.setCarrierId(getSatelliteCarrierId())
+ .setIsNtnOnlyCarrier(isNtnOnlyCarrier())
.reportProvisionMetrics();
mControllerMetricsStats.reportProvisionCount(result);
}
@@ -4444,6 +4447,7 @@
mProvisionMetricsStats.setResultCode(result)
.setIsProvisionRequest(false)
.setCarrierId(getSatelliteCarrierId())
+ .setIsNtnOnlyCarrier(isNtnOnlyCarrier())
.reportProvisionMetrics();
mControllerMetricsStats.reportDeprovisionCount(result);
}
@@ -5960,11 +5964,21 @@
.setSatelliteTechnology(getSupportedNtnRadioTechnology())
.setIsDemoMode(mIsDemoModeEnabled)
.setCarrierId(getSatelliteCarrierId())
+ .setIsNtnOnlyCarrier(isNtnOnlyCarrier())
.reportSessionMetrics();
mSessionStartTimeStamp = 0;
mSessionProcessingTimeStamp = 0;
}
+ public boolean isNtnOnlyCarrier() {
+ synchronized (mSatelliteTokenProvisionedLock) {
+ if (mSelectedSatelliteSubId == SubscriptionManager.INVALID_SUBSCRIPTION_ID) {
+ return false;
+ }
+ return mSelectedSatelliteSubId == getNtnOnlySubscriptionId();
+ }
+ }
+
private void registerForServiceStateChanged() {
if (!mFeatureFlags.carrierEnabledSatelliteFlag()) {
return;
@@ -7423,10 +7437,7 @@
} else {
logd("selectBindingSatelliteSubscription: Carrier ID is UNKNOWN_CARRIER_ID");
}
- synchronized (mSatelliteTokenProvisionedLock) {
- mControllerMetricsStats.setIsNtnOnlyCarrier(
- mSelectedSatelliteSubId == getNtnOnlySubscriptionId());
- }
+ mControllerMetricsStats.setIsNtnOnlyCarrier(isNtnOnlyCarrier());
}
plogd("selectBindingSatelliteSubscription: SelectedSatelliteSubId=" + selectedSubId);
handleEventSelectedNbIotSatelliteSubscriptionChanged(selectedSubId);
diff --git a/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java b/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java
index ea6dedd..fc79c49 100644
--- a/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java
+++ b/src/java/com/android/internal/telephony/satellite/SatelliteSOSMessageRecommender.java
@@ -445,7 +445,8 @@
.setRecommendingHandoverType(getEmergencyCallToSatelliteHandoverType())
.setIsSatelliteAllowedInCurrentLocation(isSatelliteAllowed())
.setIsWifiConnected(mCountryDetector.isWifiNetworkConnected())
- .setCarrierId(mSatelliteController.getSatelliteCarrierId()).build());
+ .setCarrierId(mSatelliteController.getSatelliteCarrierId())
+ .setIsNtnOnlyCarrier(mSatelliteController.isNtnOnlyCarrier()).build());
}
private void cleanUpResources(boolean isDialerNotified) {
diff --git a/src/java/com/android/internal/telephony/satellite/metrics/AccessControllerMetricsStats.java b/src/java/com/android/internal/telephony/satellite/metrics/AccessControllerMetricsStats.java
index 4333253..12de4ac 100644
--- a/src/java/com/android/internal/telephony/satellite/metrics/AccessControllerMetricsStats.java
+++ b/src/java/com/android/internal/telephony/satellite/metrics/AccessControllerMetricsStats.java
@@ -47,6 +47,8 @@
private @SatelliteConstants.ConfigDataSource int mConfigDataSource;
private int mCarrierId;
private @SatelliteConstants.TriggeringEvent int mTriggeringEvent;
+ private boolean mIsNtnOnlyCarrier;
+
private AccessControllerMetricsStats() {
initializeAccessControllerMetricsParam();
}
@@ -77,6 +79,7 @@
mConfigDataSource = CONFIG_DATA_SOURCE_UNKNOWN;
mCarrierId = UNKNOWN_CARRIER_ID;
mTriggeringEvent = TRIGGERING_EVENT_UNKNOWN;
+ mIsNtnOnlyCarrier = false;
}
/**
* Sets the Access Control Type for current satellite enablement.
@@ -188,6 +191,16 @@
return this;
}
+ /**
+ * Sets the value of isNtnOnlyCarrier for current satellite enablement.
+ * @param isNtnOnlyCarrier {@code true} if the carrier is NTN only carrier.
+ */
+ public AccessControllerMetricsStats setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) {
+ mIsNtnOnlyCarrier = isNtnOnlyCarrier;
+ logd("setIsNtnOnlyCarrier: isNtnOnlyCarrier = " + mIsNtnOnlyCarrier);
+ return this;
+ }
+
/** Report the access controller metrics atoms to PersistAtomsStorage in telephony. */
public void reportAccessControllerMetrics() {
SatelliteStats.SatelliteAccessControllerParams accessControllerParams =
@@ -203,6 +216,7 @@
.setConfigDatasource(mConfigDataSource)
.setCarrierId(mCarrierId)
.setTriggeringEvent(mTriggeringEvent)
+ .setIsNtnOnlyCarrier(mIsNtnOnlyCarrier)
.build();
logd("reportAccessControllerMetrics: " + accessControllerParams.toString());
SatelliteStats.getInstance().onSatelliteAccessControllerMetrics(accessControllerParams);
diff --git a/src/java/com/android/internal/telephony/satellite/metrics/ProvisionMetricsStats.java b/src/java/com/android/internal/telephony/satellite/metrics/ProvisionMetricsStats.java
index c1ac689..e355078 100644
--- a/src/java/com/android/internal/telephony/satellite/metrics/ProvisionMetricsStats.java
+++ b/src/java/com/android/internal/telephony/satellite/metrics/ProvisionMetricsStats.java
@@ -39,6 +39,7 @@
private boolean mIsProvisionRequest;
private boolean mIsCanceled;
private int mCarrierId;
+ private boolean mIsNtnOnlyCarrier;
private ProvisionMetricsStats() {
initializeProvisionParams();
@@ -88,6 +89,12 @@
return this;
}
+ /** Capture the latest provisioned state for satellite service */
+ public ProvisionMetricsStats setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) {
+ mIsNtnOnlyCarrier = isNtnOnlyCarrier;
+ return this;
+ }
+
/** Report the provision metrics atoms to PersistAtomsStorage in telephony */
public void reportProvisionMetrics() {
SatelliteStats.SatelliteProvisionParams provisionParams =
@@ -98,6 +105,7 @@
.setIsProvisionRequest(mIsProvisionRequest)
.setIsCanceled(mIsCanceled)
.setCarrierId(mCarrierId)
+ .setIsNtnOnlyCarrier(mIsNtnOnlyCarrier)
.build();
SatelliteStats.getInstance().onSatelliteProvisionMetrics(provisionParams);
logd("reportProvisionMetrics: " + provisionParams);
@@ -110,6 +118,7 @@
mIsProvisionRequest = false;
mIsCanceled = false;
mCarrierId = UNKNOWN_CARRIER_ID;
+ mIsNtnOnlyCarrier = false;
}
private static void logd(@NonNull String log) {
diff --git a/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java b/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java
index 48674b0..c0f8cc1 100644
--- a/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java
+++ b/src/java/com/android/internal/telephony/satellite/metrics/SessionMetricsStats.java
@@ -62,6 +62,7 @@
private int mCountOfAutoExitDueToScreenOff;
private int mCountOfAutoExitDueToTnNetwork;
private boolean mIsEmergency;
+ private boolean mIsNtnOnlyCarrier;
private SatelliteSessionStats mDatagramStats;
private SessionMetricsStats() {
@@ -267,6 +268,13 @@
return this;
}
+ /** Capture the latest provisioned state for satellite service */
+ public SessionMetricsStats setIsNtnOnlyCarrier(boolean isNtnOnlyCarrier) {
+ mIsNtnOnlyCarrier = isNtnOnlyCarrier;
+ logd("setIsNtnOnlyCarrier(" + mIsNtnOnlyCarrier + ")");
+ return this;
+ }
+
/** Report the session metrics atoms to PersistAtomsStorage in telephony. */
public void reportSessionMetrics() {
SatelliteStats.SatelliteSessionParams sessionParams =
@@ -289,6 +297,7 @@
.setCountOfAutoExitDueToScreenOff(mCountOfAutoExitDueToScreenOff)
.setCountOfAutoExitDueToTnNetwork(mCountOfAutoExitDueToTnNetwork)
.setIsEmergency(mIsEmergency)
+ .setIsNtnOnlyCarrier(mIsNtnOnlyCarrier)
.build();
logd("reportSessionMetrics: " + sessionParams.toString());
SatelliteStats.getInstance().onSatelliteSessionMetrics(sessionParams);
@@ -347,6 +356,7 @@
mCountOfAutoExitDueToScreenOff = 0;
mCountOfAutoExitDueToTnNetwork = 0;
mIsEmergency = false;
+ mIsNtnOnlyCarrier = false;
}
public void resetSessionStatsShadowCounters() {
diff --git a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
index c7c7748..a50565c 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/satellite/SatelliteControllerTest.java
@@ -679,6 +679,8 @@
.when(mMockSessionMetricsStats).setIsDemoMode(anyBoolean());
doReturn(mMockSessionMetricsStats)
.when(mMockSessionMetricsStats).setCarrierId(anyInt());
+ doReturn(mMockSessionMetricsStats)
+ .when(mMockSessionMetricsStats).setIsNtnOnlyCarrier(anyBoolean());
doNothing().when(mMockSessionMetricsStats).reportSessionMetrics();
doReturn(mMockProvisionMetricsStats).when(mMockProvisionMetricsStats)
@@ -687,6 +689,8 @@
.setIsProvisionRequest(anyBoolean());
doReturn(mMockProvisionMetricsStats).when(mMockProvisionMetricsStats)
.setCarrierId(anyInt());
+ doReturn(mMockProvisionMetricsStats).when(mMockProvisionMetricsStats)
+ .setIsNtnOnlyCarrier(anyBoolean());
doNothing().when(mMockProvisionMetricsStats).reportProvisionMetrics();
doNothing().when(mMockControllerMetricsStats).reportDeprovisionCount(anyInt());
when(mFeatureFlags.oemEnabledSatelliteFlag()).thenReturn(true);