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

Commit 4fd009cc authored by Jack Yu's avatar Jack Yu Committed by Automerger Merge Worker
Browse files

Supported URLLC, EMBB, and CBS slicing am: e13ed510 am: bb622da5

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/2034107

Change-Id: Ibcc36d1115f616567d5d053e396145f6c23c1d2d
parents 48557391 bb622da5
Loading
Loading
Loading
Loading
+16 −9
Original line number Original line Diff line number Diff line
@@ -1314,16 +1314,23 @@ public class DataNetwork extends StateMachine {
                }
                }
                int networkCapability = DataUtils.getNetworkCapabilityFromString(
                int networkCapability = DataUtils.getNetworkCapabilityFromString(
                        osAppId.getAppId());
                        osAppId.getAppId());
                if (networkCapability > 0) {
                switch (networkCapability) {
                    case NetworkCapabilities.NET_CAPABILITY_ENTERPRISE:
                        builder.addCapability(networkCapability);
                        builder.addCapability(networkCapability);
                        // Enterprise is the only capability supporting differentiator.
                        // Enterprise is the only capability supporting differentiator.
                        if (networkCapability == NetworkCapabilities.NET_CAPABILITY_ENTERPRISE) {
                        if (networkCapability == NetworkCapabilities.NET_CAPABILITY_ENTERPRISE) {
                            builder.addEnterpriseId(osAppId.getDifferentiator());
                            builder.addEnterpriseId(osAppId.getDifferentiator());
                        }
                        }
                } else {
                        break;
                    case NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY:
                    case NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH:
                    case NetworkCapabilities.NET_CAPABILITY_CBS:
                        builder.addCapability(networkCapability);
                        break;
                    default:
                        loge("Invalid app id " + osAppId.getAppId());
                        loge("Invalid app id " + osAppId.getAppId());
                }
                }
            } catch (IllegalArgumentException e) {
            } catch (Exception e) {
                loge("Exception: " + e + ". Failed to create osAppId from "
                loge("Exception: " + e + ". Failed to create osAppId from "
                        + new BigInteger(1, trafficDescriptor.getOsAppId()).toString(16));
                        + new BigInteger(1, trafficDescriptor.getOsAppId()).toString(16));
            }
            }
+8 −0
Original line number Original line Diff line number Diff line
@@ -80,6 +80,10 @@ public class DataUtils {
            case "VSIM": return NetworkCapabilities.NET_CAPABILITY_VSIM;
            case "VSIM": return NetworkCapabilities.NET_CAPABILITY_VSIM;
            case "BIP" : return NetworkCapabilities.NET_CAPABILITY_BIP;
            case "BIP" : return NetworkCapabilities.NET_CAPABILITY_BIP;
            case "ENTERPRISE": return NetworkCapabilities.NET_CAPABILITY_ENTERPRISE;
            case "ENTERPRISE": return NetworkCapabilities.NET_CAPABILITY_ENTERPRISE;
            case "PRIORITIZE_BANDWIDTH":
                return NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH;
            case "PRIORITIZE_LATENCY":
                return NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY;
            default:
            default:
                return -1;
                return -1;
        }
        }
@@ -131,6 +135,10 @@ public class DataUtils {
            case NetworkCapabilities.NET_CAPABILITY_BIP:                  return "BIP";
            case NetworkCapabilities.NET_CAPABILITY_BIP:                  return "BIP";
            case NetworkCapabilities.NET_CAPABILITY_HEAD_UNIT:            return "HEAD_UNIT";
            case NetworkCapabilities.NET_CAPABILITY_HEAD_UNIT:            return "HEAD_UNIT";
            case NetworkCapabilities.NET_CAPABILITY_MMTEL:                return "MMTEL";
            case NetworkCapabilities.NET_CAPABILITY_MMTEL:                return "MMTEL";
            case NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY:
                return "PRIORITIZE_LATENCY";
            case NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH:
                return "PRIORITIZE_BANDWIDTH";
            default:
            default:
                return "Unknown(" + netCap + ")";
                return "Unknown(" + netCap + ")";
        }
        }
+7 −2
Original line number Original line Diff line number Diff line
@@ -110,7 +110,8 @@ public class TelephonyNetworkRequest {
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_IMS,
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_IMS,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_CBS,
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_CBS,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN
                            | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_OS_APP_ID),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_XCAP,
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_XCAP,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_EIMS,
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_EIMS,
@@ -125,7 +126,11 @@ public class TelephonyNetworkRequest {
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_VSIM,
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_VSIM,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_BIP,
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_BIP,
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN)
                    CAPABILITY_ATTRIBUTE_APN_SETTING | CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_DNN),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY,
                    CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_OS_APP_ID),
            new SimpleImmutableEntry<>(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH,
                    CAPABILITY_ATTRIBUTE_TRAFFIC_DESCRIPTOR_OS_APP_ID)
    );
    );


    /**
    /**
+54 −0
Original line number Original line Diff line number Diff line
@@ -328,6 +328,60 @@ public class DataNetworkTest extends TelephonyTest {
        assertThat(nc.getEnterpriseIds()).asList().containsExactly(1, 5);
        assertThat(nc.getEnterpriseIds()).asList().containsExactly(1, 5);
    }
    }


    @Test
    public void testCreateDataNetworkOnUrllcSlice() {
        DataNetworkController.NetworkRequestList
                networkRequestList = new DataNetworkController.NetworkRequestList();
        networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
                .addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
                .build(), mPhone));

        List<TrafficDescriptor> tds = List.of(
                new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
                        TrafficDescriptor.OsAppId.ANDROID_OS_ID, "PRIORITIZE_LATENCY", 1)
                        .getBytes())
        );
        setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123, tds);

        mDataNetworkUT = new DataNetwork(mPhone, Looper.myLooper(), mDataServiceManagers,
                mInternetDataProfile, networkRequestList,
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, mDataNetworkCallback);
        mDataNetworkUT.sendMessage(9/*EVENT_SERVICE_STATE_CHANGED*/);

        processAllMessages();

        NetworkCapabilities nc = mDataNetworkUT.getNetworkCapabilities();
        assertThat(nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY))
                .isTrue();
    }

    @Test
    public void testCreateDataNetworkOnEmbbSlice() {
        DataNetworkController.NetworkRequestList
                networkRequestList = new DataNetworkController.NetworkRequestList();
        networkRequestList.add(new TelephonyNetworkRequest(new NetworkRequest.Builder()
                .addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH)
                .build(), mPhone));

        List<TrafficDescriptor> tds = List.of(
                new TrafficDescriptor(null, new TrafficDescriptor.OsAppId(
                        TrafficDescriptor.OsAppId.ANDROID_OS_ID, "PRIORITIZE_BANDWIDTH", 1)
                        .getBytes())
        );
        setSuccessfulSetupDataResponse(mMockedWwanDataServiceManager, 123, tds);

        mDataNetworkUT = new DataNetwork(mPhone, Looper.myLooper(), mDataServiceManagers,
                mInternetDataProfile, networkRequestList,
                AccessNetworkConstants.TRANSPORT_TYPE_WWAN, mDataNetworkCallback);
        mDataNetworkUT.sendMessage(9/*EVENT_SERVICE_STATE_CHANGED*/);

        processAllMessages();

        NetworkCapabilities nc = mDataNetworkUT.getNetworkCapabilities();
        assertThat(nc.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH))
                .isTrue();
    }

    // The purpose of this test is to make sure data could be torn down properly.
    // The purpose of this test is to make sure data could be torn down properly.
    @Test
    @Test
    public void testTearDown() {
    public void testTearDown() {
+34 −1
Original line number Original line Diff line number Diff line
@@ -459,7 +459,7 @@ public class DataProfileManagerTest extends TelephonyTest {
    }
    }


    @Test
    @Test
    public void testGetDataProfileForTrafficDescriptorTypeNetworkRequest() {
    public void testGetDataProfileForEnterpriseNetworkRequest() {
        TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
        TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
                new NetworkRequest.Builder()
                new NetworkRequest.Builder()
                        .addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
                        .addCapability(NetworkCapabilities.NET_CAPABILITY_ENTERPRISE)
@@ -487,6 +487,39 @@ public class DataProfileManagerTest extends TelephonyTest {
        assertThat(osAppId.getDifferentiator()).isEqualTo(2);
        assertThat(osAppId.getDifferentiator()).isEqualTo(2);
    }
    }


    @Test
    public void testGetDataProfileForUrllcNetworkRequest() {
        TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
                new NetworkRequest.Builder()
                        .addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY)
                        .build(), mPhone);
        DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
                tnr, TelephonyManager.NETWORK_TYPE_LTE);
        assertThat(dataProfile.getApnSetting()).isNull();
        OsAppId osAppId = new OsAppId(dataProfile.getTrafficDescriptor().getOsAppId());

        assertThat(osAppId.getOsId()).isEqualTo(OsAppId.ANDROID_OS_ID);
        assertThat(osAppId.getAppId()).isEqualTo("PRIORITIZE_LATENCY");
        assertThat(osAppId.getDifferentiator()).isEqualTo(1);
    }

    @Test
    public void testGetDataProfileForEmbbNetworkRequest() {
        TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
                new NetworkRequest.Builder()
                        .addCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH)
                        .build(), mPhone);
        DataProfile dataProfile = mDataProfileManagerUT.getDataProfileForNetworkRequest(
                tnr, TelephonyManager.NETWORK_TYPE_LTE);
        assertThat(dataProfile.getApnSetting()).isNull();
        OsAppId osAppId = new OsAppId(dataProfile.getTrafficDescriptor().getOsAppId());

        assertThat(osAppId.getOsId()).isEqualTo(OsAppId.ANDROID_OS_ID);
        assertThat(osAppId.getAppId()).isEqualTo("PRIORITIZE_BANDWIDTH");
        assertThat(osAppId.getDifferentiator()).isEqualTo(1);
    }


    @Test
    @Test
    public void testSetPreferredDataProfile() {
    public void testSetPreferredDataProfile() {
        TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
        TelephonyNetworkRequest tnr = new TelephonyNetworkRequest(
Loading