Merge "Supports to get NR Duplex Mode in ServiceState" into main
diff --git a/flags/network.aconfig b/flags/network.aconfig
index ce4b2e4..1fbd100 100644
--- a/flags/network.aconfig
+++ b/flags/network.aconfig
@@ -57,3 +57,14 @@
purpose: PURPOSE_FEATURE
}
}
+
+# OWNER=sangyun TARGET=26Q2
+flag {
+ name: "duplex_mode_for_ngran"
+ namespace: "telephony"
+ description: "NR Duplex Mode can be Calculated"
+ bug: "355284319"
+ metadata {
+ purpose: PURPOSE_BUGFIX
+ }
+}
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java
index ffc2fac..3fe527a 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java
@@ -32,6 +32,8 @@
import androidx.test.filters.SmallTest;
+import com.android.internal.telephony.flags.Flags;
+
import junit.framework.TestCase;
import java.util.ArrayList;
@@ -387,6 +389,63 @@
}
@SmallTest
+ public void testDuplexMode_SupplementalLinksNgran() {
+ ServiceState ss = new ServiceState();
+ NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_NR)
+ .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+ .build();
+ ss.addNetworkRegistrationInfo(nri);
+
+ if (!Flags.duplexModeForNgran()) {
+ // Even if AccessNetwork is NR, getDuplexMode will be return FDD if the band is
+ // set to the FDD LTE band because there was no duplex implementation for NR.
+ ss.setChannelNumber(2400); // lte band 5
+ assertEquals(ServiceState.DUPLEX_MODE_FDD, ss.getDuplexMode());
+ } else {
+ ss.setChannelNumber(144400); // band n29, SDL
+ assertEquals(ServiceState.DUPLEX_MODE_UNKNOWN, ss.getDuplexMode());
+ }
+ }
+
+ @SmallTest
+ public void testDuplexMode_FddChannelNgran() {
+ ServiceState ss = new ServiceState();
+ NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_NR)
+ .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+ .build();
+ ss.addNetworkRegistrationInfo(nri);
+ ss.setChannelNumber(432000); // band n1
+
+ if (!Flags.duplexModeForNgran()) {
+ assertEquals(ServiceState.DUPLEX_MODE_UNKNOWN, ss.getDuplexMode());
+ } else {
+ assertEquals(ServiceState.DUPLEX_MODE_FDD, ss.getDuplexMode());
+ }
+ }
+
+ @SmallTest
+ public void testDuplexMode_TddChannelNgran() {
+ ServiceState ss = new ServiceState();
+ NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
+ .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
+ .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_NR)
+ .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
+ .build();
+ ss.addNetworkRegistrationInfo(nri);
+ ss.setChannelNumber(402000); // band n34
+
+ if (!Flags.duplexModeForNgran()) {
+ assertEquals(ServiceState.DUPLEX_MODE_UNKNOWN, ss.getDuplexMode());
+ } else {
+ assertEquals(ServiceState.DUPLEX_MODE_TDD, ss.getDuplexMode());
+ }
+ }
+
+ @SmallTest
public void testCreateLocationInfoSanitizedCopy() {
ServiceState ss = new ServiceState();
NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()